Alô, pessoal, tudo bem?
Algumas vezes, por conta da quantidade de incidentes (correções no software) e novas implementações, é necessário ajustar a equipe para atender essa demanda. Uma opção é empregar o conceito Batman, ou melhor, definir um super-herói para atuar na equipe. Ficou curioso? Eu também fiquei! Vamos ler o artigo?
Contexto
Quando lemos sobre a organização de equipes ágeis para trabalhar no desenvolvimento de software, enxergarmos um mundo perfeito. Basta alocar os desenvolvedores para implementar as funcionalidades do software com base na velocidade da equipe, métricas e estimativas. Porém, temos a ciência de que essa teoria não ocorre de modo tão acurado. Assim como os softwares estão em constante evolução, é natural que também estejam em constante manutenção, exigindo correções. Na prática, então, nos deparamos com algumas dificuldades, principalmente relacionadas ao prazo e escopo do projeto.
Vamos a um cenário. Imagine que uma nova funcionalidade do Product Backlog foi selecionada para ser implementada na Sprint atual e que a equipe foi devidamente alocada para essa evolução. Eis que, durante a Sprint, novos erros são reportados para a equipe. Poucos? Não, muitos erros! E são erros crÃticos de produção. Como resultado, o foco na evolução é perdido em função da criticidade dos erros e a equipe precisa se contorcer para suprir as tarefas imprevistas. Bom, não é preciso nem dizer que isso é relativamente comum no cenário de desenvolvimento de software.
É bom ressaltar que o surgimento destes erros, em boa parte, não é oriundo da irresponsabilidade técnica dos desenvolvedores. Devido à complexidade, dimensão ou segmento do projeto, erros são introduzidos durante  o ciclo de vida. É uma caraterÃstica do desenvolvimento de software. Claro, há meios de mitigar este risco, como a análise de impactos e testes, mas, mesmo assim, não existe uma bala de prata.
O Batman!
Para resolver essa situação, chamem o Batman! 🙂
Brincadeiras à parte, o conceito “Batman”, neste contexto, se refere à definição de um dos membros da equipe para atuar na seguinte proporção: 50% para a evolução e 50% para a correção. Em outras palavras, este membro assume uma postura diferente na equipe: exercer uma função de intermediador entre a evolução e manutenção para que nenhum dos dois lados fique desfalcado. Dessa forma, o Batman quebra a exclusividade que existe em cada lado.
Exclusividade?
Sim. Se você entregar um item de correção crÃtica para um desenvolvedor que está no quadro de evolução, essa será a resposta:
“Hummm, não vai dar. Estou alocado somente na evolução. Não tenho tempo para a correção…”
Consequentemente, perde-se o escopo das prioridades. Todos compreendem a situação mas não estão preparados para aceitar responsabilidades paralelas. Logo, se houver um desenvolvedor encaminhado para as duas atividades, é possÃvel equilibrar as demandas.
Como definir um Batman na equipe?
Para “invocar” esse super-herói, é preciso estabelecer alguns critérios:
- As user stories de evolução atribuÃdas ao Batman (durante o planejamento da Sprint) não devem ser complexas ou grandes. Caso contrário, há um risco dessas user stories não serem finalizadas até o final da Sprint;
- As correções conferidas ao Batman são emergenciais, como erros de produção ou crÃticos para o sistema. Em adição, as correções que, caso não sejam realizadas, resultem em um possÃvel problema futuro no software, também podem ser incluÃdas nessa lista;
- É fortemente recomendável que a função de Batman seja atribuÃda a um membro diferente para cada Sprint. Esse rodÃzio evita o code ownership (proprietário da funcionalidade) e incentiva o conhecimento coletivo da regra de negócio;
- Por fim, ao finalizar as correções emergenciais e as atividades de evolução, o Batman não deve receber novas user stories, já que deve estar disponÃvel para possÃveis erros que surgirem. Para evitar a ociosidade, ao invés de user stories, procure alocá-lo para apoiar outros desenvolvedores ou atuar em spikes (atividades de pesquisa, testes de ferramentas/tecnologias, etc).
Conclusão
Agora, vale fazer uma crÃtica. Existem muitas equipes de desenvolvimento que definem todos os membros, ou pelo menos a maioria, como um conjunto de “Batmans”. Os membros dessas equipes, logo no começo da Sprint, não sabem o que realmente vão codificar ou se passarão mais tempo na correção ou evolução.
Pior mesmo quando o Scrum Master diz: “Ei, você, inicie a evolução XYZ e, caso surgir uma correção, você interrompe a evolução para atendê-la. Depois que terminar, volte novamente para a evolução, ok?”. Não! Isso não deve existir! O custo de ficar alternando a função de um desenvolvedor é muito alto por causa preparação de ambiente e da linha de raciocÃnio, além de ferir as métricas. Essa prática deve ser evitada.
Para fechar, destaco mais uma vantagem. Na maioria das empresas, a alocação tÃpica dos recursos é feita da seguinte forma: 80% para a evolução e 20% para a correção. Com a definição do Batman, a equipe pode controlar essa porcentagem dentro da Sprint (in-sprint), tornando-a variável. Dessa forma, as correções emergenciais recebem prioridade e, na ausência destas, a evolução é trabalhada.
No LinkedIn, os membros até disseram que, com o Batman, “emergencies become no big deal”, ou seja, as correções crÃticas deixam de ser uma preocupação.
Abraços, homens-morcego!
Até a próxima!
Muito bacana. É bem isso. Aqui tbém fazemos isso https://www.linkedin.com/pulse/pr%C3%A1tica-7030-para-ambientes-de-alta-demanda-bugs-e-jos%C3%A9-alberto/
Obrigado, Beto!
Nota-se que a figura do “Batman” da Sprint é relativamente comum em equipes, principalmente em função das demandas constantes em projetos com vários usuários.
Agradeço pelo compartilhamento. Abraço!