Ultimamente, tenho pensado muito em como criar uma equipe de desenvolvimento enxuta. Por fim, gostaria de abrir minha própria pequena casa de software com um pequeno número de pessoas que pensam da mesma forma. O objetivo não será ficar rico, mas ter um ambiente de trabalho saudável.
Até agora, estou definindo uma equipe enxuta da seguinte forma:
- Pequeno;
- Auto-organização;
- Todos os membros devem ter o controle de qualidade em mente;
- Os membros devem ser capazes de desempenhar várias funções
O último ponto é onde estou um pouco preocupado, porque, como o mantra diz ...
Os desenvolvedores fazem testadores ruins.
Embora compreenda que, muitas vezes, os desenvolvedores estão "muito perto" de seu código ou o código do seu colega para fazer avaliações de alto nível de qualidade, não estou convencido de que eles são de-facto testadores ruins. Pelo contrário, sou da opinião de que as qualidades de um bom desenvolvedor se sobrepõem muito às qualidades de um bom testador.
Supondo que isso esteja correto, estive pensando em diferentes maneiras de solucionar o problema do desenvolvedor / testador e acredito que criei um modelo viável.
Meu modelo requer:
- Uma pequena casa de software com mais de 2 projetos
- Uma abordagem ágil (iterativa) para desenvolvimento e entrega
- 1 equipe por projeto
- Todos os membros da equipe serão desenvolvedores de software
- A descrição de suas funções indicará claramente Desenvolvimento , Garantia da Qualidade , Testes e Entrega como responsabilidades
Se todas essas pré-condições forem atendidas, os projetos poderão ser organizados da seguinte maneira (este exemplo se referirá a dois projetos, A e B ):
- Cada membro da equipe alterna entre a função de desenvolvedor e a função de testador
- Se um membro da equipe for um desenvolvedor no projeto A , ele será um testador no projeto B
- Os membros irão trabalhar em apenas 1 projeto de cada vez e, portanto, são esperados para estar agindo como qualquer um Dev ou um Tester.
- Um Ciclo de Função consiste em 3 iterações como Dev e 2 iterações como Testador (novamente, em dois projetos diferentes)
- As equipes do projeto teriam 3 desenvolvedores e 2 testadores o tempo todo.
- Os ciclos de função de membro devem estar fora de fase por 1 iteração.
- Isso minimiza a brusquidão das mudanças da equipe. Para cada iteração, 2 Devs e 1 Tester permanecerão os mesmos da iteração anterior.
Dado o exposto, vejo os seguintes prós e contras:
Prós
- Distribui o conhecimento do projeto por toda a empresa.
- Garante que os membros da equipe não estejam testando o código que ajudaram a escrever.
- Ciclos de funções fora de fase significam que nenhum projeto possui uma troca de 100% de membros.
- Papéis alternados quebram a monotonia de projetos chatos.
Contras
- As iterações de ambos os projetos estão fortemente acopladas. Se um projeto cancelar uma iteração no meio do caminho e iniciar novamente, os dois projetos ficarão fora de sincronia. Isso dificultaria o gerenciamento do ciclo de funções.
- A contratação de desenvolvedores também funciona como testadores.
Recebi críticas mistas ao discutir essa abordagem com amigos e colegas. Alguns acreditam que poucos desenvolvedores desejam alternar papéis como esse, enquanto outros me dizem que pessoalmente gostariam de experimentar.
Então, minha pergunta é: esse modelo poderia funcionar na prática? Caso contrário, poderia ser ajustado em um modelo de trabalho?
Nota: Por uma questão de brevidade, concentrei-me apenas nos papéis de Dev e Tester. Expandirei outras funções, se necessário.