Como organizamos e documentamos o trabalho de Produto e Design no iFood
Usando Confluence e Jira para organizar e coordenar o trabalho de três tribos com centenas de pessoas.
Em Março, o iFood inteiro virou uma empresa 100% remota da noite para o dia. E isso aconteceu sem nenhuma planejamento, é claro. Ninguém esperava uma pandemia que nos forçaria a fazer essa mudança tão rápido.
Assim como muitos lugares, o iFood tinha uma cultura presencial. Você quer saber sobre cardápio? Vai até a mesa de tal pessoa e pergunta. Aquisição, ah, isso é com aquela outra pessoa. O trabalho remoto deixou nossos vícios presenciais muito aparentes, entulhando o Slack e as caixas de e-mail com dezenas de mensagens, sem contar os incontáveis documentos com os títulos Status atual ou Estratégia e próximos passos voando pelo espaço cibernético. Você se identificou um pouco com isso? Complicado, né, minha filha?
Imagine: 3 tribos, mais de 50 designers, 50 PMs e centenas de pessoas engenheiras trabalhando juntos em um contexto completamente novo. O que já era desafiador presencialmente ficou ainda mais difícil de se fazer com pessoas que estão a um modem de distância. Se nosso objetivo é ser uma das melhores empresas para se trabalhar remoto, precisávamos começar uma mudança estrutural. Bora lá!
Qual a dose certa de processo?
Eu sei que organização é uma das chaves pra resolver esse problema, mas a grande dúvida é: quanto? Em um lugar tão dinâmico quanto o iFood, a palavra processo dá calafrios em quem ouve, e com razão. Isso não é pra gente! Ou é?
Como o Fabrício, nosso CEO, sempre fala, o que a gente não quer é processo burro. Vamos rasgar todos os processo que não funcionam e reescrevê-los (tomara que esse não seja rasgado tão cedo 😅).
Processos são um idioma. Imagine um lugar onde cada squad fala uma língua diferente. O squad A fala japonês, B fala alemão, C fala francês e, por algum motivo bizarro, D fala esperanto. O trânsito de informação entre esses times fica cada vez mais difícil. E é exatamente isso que acontece quando cada time tem um jeito diferente de trabalhar.
O que um chama de hipótese, o outro chama de oportunidade. O que um chama de estória, o outro chama de task. As validações que um fazem, são ignoradas pelo outro. O que é necessário pra um, é opcional para o outro. E sempre que a informação precisa transitar entre os squads, é preciso codificar e decodificar, o que cria muito ruído. E assim, pouco a pouco, o caos se instaura.
O importante não é definir todos os processos, mas definir processos suficientes para resolver o problema. Os problemas são, em ordem:
- Informação sempre disponível. Para isso, criamos uma wiki;
- Linguagem comum para os times de produto, facilitando o intercâmbio de informação. Para isso, definimos uma ferramenta única e um jeito de usá-la;
- Minimizar o retrabalho na hora de comunicar. Para isso, usamos integrações e processos simples.
Disclaimer: A maioria dos dados aqui é fictício, exceto uma coisa ou outra. Essas são informações estratégicas que eu não poderia compartilhar, mas fiz meu melhor para criar simulações que chegam perto da nossa realidade.
1. Criando a nossa wiki
Eu aposto que hoje, no seu dia-a-dia, existem várias apresentações e documentos espalhados. É assim que a maioria dos times se organiza: documentos de visão estratégica, planos e estrutura. E aí vem alguém (eu era o campeão em fazer isso) e cria um documento na mesma pasta para o planejamento do próximo ciclo, e ninguém mais sabe qual é a versão certa.
Isso não é muito eficiente porque:
- Esses documentos são difíceis de entender. Geralmente são apresentações com muitas imagens e têm informações pela metade;
- Não existe um índice. Boa sorte ao tentar encontrar as últimas versões das coisas mais importantes;
- Ficam desatualizados. Um documento serve seu propósito, e então as pessoas param de atualizá-lo.
Alguém já resolveu isso, não? É claro, uma wiki! É um lugar colaborativo e vivo, que resolve (quase) todos esses problemas. E é assim que começamos. Ah, e é claro que nada disso está pronto, ou vai estar algum dia. A wiki é viva e reflete como estamos trabalhando hoje.
A página da tribo
Cada tribo tem uma página que fala sobre a missão da tribo, as squads e a estrutura. A ideia é que qualquer um possa entrar nesta página, entender como estamos organizados e encontrar mais informações sobre qualquer assunto.
A página do squad
Cada squad tem a sua página, onde aparece: objetivo, principais indicadores, roadmaps, membros e links para saber mais sobre aquela squad. O importante aqui é minimizar o retrabalho. Quanto mais pudermos pegar informações do Jira em tempo real, ou colocar links para outras informações como apresentações ou documentos de texto, melhor.
A página dos produtos
Cada produto tem sua página, com várias informações. Desde como funciona a parte de engenharia de um sistema específico, até porquê tomamos as decisões de design e produto em uma funcionalidade.
A página dos chapters
Existem informações importantes de cada chapter que precisam ser documentadas. Por exemplo, é no chapter de design que documentamos coisas como nossa organização do Figma, política de acessos, quais ferramentas estão disponíveis e quando usar cada uma delas.
O que mais cada time achar que faz sentido
Cada squad vai encontrar mais e mais jeitos de usar a wiki a seu favor, e isso é demais! A única coisa esperada é que cada uma faça no mínimo a documentação básica. Além disso, é deixar que elas tenham liberdade para trabalhar como acharem melhor.
2. Organizando o trabalho no Jira
Cada squad sempre conseguiu se organizar bem para trabalhar individualmente, e isso não era um problema. As coisas começam a ficar mais complicadas quando também é muito importante mostrar o que está sendo feito, coordenar com outros squads e priorizar levando diversas perspectivas em consideração.
Então é importante que a ferramenta:
- Funcione para o squad. Não dá pra atrapalhar o que já funciona bem;
- Seja flexível;
- Seja acessível para a empresa toda, sem barreiras;
- Seja fácil de entender, até mesmo pra quem não está acostumado com processos de discovery e delivery;
- Possibilite a conexão entre vários assuntos.
E pra isso escolhemos o Jira Next-Gen, que nos dá todas essas ferramentas e já era uma ferramenta padrão do iFood. Assim, escrevemos um guia sobre como cada time de produto deveria usá-lo.
Organizando o trabalho de produto
Fizemos uma divisão simples:
- Épicos são o nível macro de organização. São, basicamente, as oportunidades que estamos trabalhando — elas podem ter três tipos de filhos: hipóteses, features e tasks;
- Hipóteses representam a maior parte do trabalho e tem uma lista pré-definida de critérios mínimos que precisa preencher;
- Features representam a exceção. É algo que que temos que fazer, mesmo que não tenha uma hipótese clara;
- Tasks são coisas mais práticas, como análises e pesquisas, que não precisam estar ligadas a nenhuma hipótese e geralmente são exploratórias ou de manutenção.
Fica tudo organizado no Roadmap do squad. Qualquer pessoa deveria conseguir entrar e entender quais são as prioridades.
Se a pessoa quiser se aprofundar em alguma coisa específica, é só expandir aquele épico para ver quais hipótese ou features estão sendo trabalhadas.
A anatomia de uma hipótese
Uma hipótese é uma aposta que o time de produto tem para resolver um problema e que precisa validar. Ela tem:
- Objetivo. Uma frase simplese explicando o problema que estamos resolvendo;
- Hipótese. Uma explicação completa, com racional, contexto e indicadores;
- Análises e contexto. Links para informações importantes relacionadas, como estudos, levantamentos e análises;
- Resultado. Quando uma hipótese termina, ela precisa de um documento de resultados explicando o que aprendemos e se ela foi um sucesso ou uma falha.
Progredindo — Sub-tarefas
Alguns times preferem usar sub-tarefas para progredir no trabalho, separando cada parte que precisa ser feita. Geralmente há uma sub-tarefa para cada coisa, como análises preliminares, criação de dashboards, desenho do fluxo, review com o time e etc.
Nesse caso o board fica organizado por sub-tarefas, e cada pessoa fica responsável pela sua parte. Isso é bom porque deixa claro o que está sendo feito e por quem.
Progredindo — Movimentando as hipóteses
Outros times preferem movimentar as hipóteses em si no board, sem criar as sub-tarefas. Esse caso é interessante porque a tarefa vira uma grande discussão, onde vários aspectos são discutidos e iterados. Ler os comentários em ordem cronológica ajuda a entender exatamente como certas decisões foram tomadas.
Isso é bom porque o board fica simples e mostra apenas o progresso em alto nível, e cada hipótese tem um histórico mais coeso e detalhado.
Relacionando as coisas
Também é importante saber, dentro do todo, o que está relacionado. Temos algumas iniciativas que estão distribuídas entre squads de três tribos diferentes, por exemplo. Pra manter isso em controle, fazemos três coisas.
- Relacionamos hipóteses que caminham juntas. Assim, por exemplo, dá pra acompanhar coisas que precisam estar prontas em mais de um produto para poderem ser lançadas;
- Relacionamos as estórias de desenvolvimento com a hipótese que ela está implementando. Assim é só abrir a hipótese e olhar qual o status das tarefas de desenvolvimento para ter uma ideia de quando algo vai estar pronto;
- E, por último, temos um projeto específico para criar épicos para as principais iniciativas da empresa. Existe um lugar único que qualquer um pode abrir para entender o que está sendo feito com relação a uma coisa em específica, como por exemplo, a iniciativa de catálogo.
3. Fazendo o delivery
Até agora falamos de como os times fazem o discovery dos seus produtos. Mas como desenvolver e escalar isso, agora que sabemos que é o certo a fazer? (Vale voltar e lembrar o que é discovery e delivery).
Cada squad pode escolher como fazer. A recomendação é ter projetos separados no Jira, um para discovery e outro para delivery porque ajuda o designer e o PM a se desassociarem das rotinas de desenvolvimento. Nem sempre o melhor jeito de trabalhar discovery é com sprints, que é como a maioria dos times de desenvolvimento fazem.
Mas essa é mais uma preferência do squad do que uma regra, e eles podem escolher o que funciona melhor.
Fluxo saudável entre discovery e delivery
É importante que a track de discovery consiga entregar trabalho suficiente para que sempre haja um backlog de delivery. A métrica mais importante para isso é o número de pontos (ou qualquer outra métrica de estimativa) do backlog. Ele deve sempre se manter estável ou crescer ao longo do tempo com o que sai do discovery.
Em problemas mais complexos pode ser difícil manter esse fluxo de hipóteses validadas fluindo. É importante ficar de olho nesse número e, sempre que ele ficar menor do que o time consegue entregar no próximo sprint, pense em alternativas para suprir esta demanda.
Uma ideia é aproveitar esse momento para resolver bugs ou refatorar algum pedaço do software — o time sempre tem algo que gostaria de refazer. Outra ideia é aproveitar esse tempo para que o time de desenvolvimento possa ajudar em outras iniciativas, enquanto a track de discovery valida mais hipóteses e cria um backlog maior.
4. Integrando e dando visibilidade
Uma vantagem de ter um sistema organizado e funcionando bem é eliminar retrabalho. Isso geralmente leva a informação a fluir de maneira mais natural — não precisa lembrar de atualizar 3 apresentações e 2 planilhas. É só manter o trabalho atualizado na ferramenta e o resto acontece automaticamente. Vou dar alguns exemplos.
Notificando sempre que algum fluxo está pronto para ser revisado
Sempre que uma issue com a tag design muda para para o status under review, ela é automaticamente postada no nosso canal do Slack para design reviews. Assim todos os designers sabem que tem algo disponível para ser revisado e comentado.
Automatizando páginas de iniciativas no Confluence
Outra coisa legal é misturar Confluence e Jira para criar páginas que fazem duas coisas: explicar um projeto e ao mesmo tempo mostrar em que pé as coisas estão. Dá pra usar o corpo da página para explicar um projeto ou iniciativa, e então incorporar roadmaps e buscas do Jira para mostrar o que está sendo feito e quando serão as próximas releases.
Dicas pra começar
Se a ideia de organizar o seu time parece legal, existem algumas coisas que deixam esse caminho mais fácil:
- Use as ferramentas que estão ao seu alcance. Quanto menos ferramentas novas você introduzir, melhor. O Jira e o Confluence já faziam parte do nosso pacote de ferramentas e foi mais fácil por conta disso;
- Dê um passo de cada vez. Não tente criar todos os processos e mudar tudo de uma vez. Resolva um problema de cada vez, e em alguns meses você estará muito melhor;
- Encontre os seus campeões. Busque as pessoas que estão com vontade de mudar, e comece por elas. Quanto mais gente está usando e colaborando, mais fácil fica para novas pessoas participarem.
Isso não está pronto e nunca vai estar
Isso é como nos organizamos hoje, e estamos num processo constante de mudar e melhorar. O que você achou? Você faz alguma coisa legal que a gente poderia fazer também? Conta aí!
Agradecimentos aos nossos champions Vânia, Fê Lopes e Capeleiro pela ajuda na construção disso. Também ao Nery, Mariote e Mauro pela força para fazermos a mudança. E pra todo mundo que teve que migrar (ou está migrando) as coisas de ferramenta e encarou isso com bom humor.
Quer receber conteúdos exclusivos criados pelos nossos times de tecnologia? Inscreva-se.