O seu QA está trabalhando?
Garantir entregas com qualidade em empresas de tecnologia é definitivamente uma das áreas, que as empresas em geral, têm mais dificuldade em fazer direito. Normalmente quando se cria uma área de QA os custos aumentam e a produtividade e velocidade da área de TI inteira cai.
Eu tentei muitas vezes ter um QA nas minhas equipes. Só que isso acabou sempre sendo um desastre. E os motivos eram:
1 — Os desenvolvedores tendem a entregar tarefas que nunca foram testadas para o QA e isso aumenta muito a iteração de feedback entre os dois. Por consequência aumenta o tempo e a complexidade do processo;
2 — A produtividade da equipe diminui;
3 — A cultura da culpa começa a se instalar;
4 — A equipe tende a se tornar menos enxuta ao longo do tempo;
5 — Os desenvolvedores começam a prestar menos atenção ao detalhes;
6 — Remove a responsabilidade de entregar tarefas com qualidade dos desenvolvedores;
7 — Não é escalável;
8 — A agilidade sofre com isso;
9 — Fazer uma gestão da sprint torna-se bastante complexa;
Solução:
1 — Dividir a equipe em pequenos squads de 3–8 pessoas;
2 — Cada equipe é responsável por testar o seu próprio trabalho;
3 — Cada desenvolvedor precisa ter certeza de que as tarefas finalizadas estão funcionando;
4 — Forçar uma fase de testes durante a sprint e se necessário adicionar tarefas explícitas para testar cada funcionalidade que for entregue;
5 — Reforçar para todos os membros da equipe a necessidade de ter atenção aos detalhes;
6 — Ter alguém fazendo testes em todos os ambientes para dar um feedback para os desenvolvedores. O Gerente de Projeto, CTO, Gerente de Produto e todas as partes interessadas podem fazer isso;
7 — Sempre dar um contexto para cada user story e tarefa. Dessa forma o desenvolvedor pode perceber os diferentes ângulos de uma forma que facilite a construção dos testes;
8 — Não pontue bugs. O objetivo final deve ser sempre não ter bugs;
9 — Concentre-se em testes automatizados e adicione isso durante nas sprints, na entrega contínua e no processo de integração;

Na minha visão o que determina um bom programador não é só a qualidade do código, estrutura e capacidade de encontrar soluções para os problemas. O que é mais importante é a qualidade da entrega. Isso é algo que eu sempre tento trabalhar e é onde a maioria dos desenvolvedores tem dificuldade.
A maioria dos desenvolvedores tendem a olhar para as tarefas com apenas algumas perspectivas. E às vezes eles perdem a perspectiva de que estão fazendo e qual é o objetivo em questão. Um desenvolvedor não deve só se preocupar em escrever código, na verdade, no último caso, eles devem estar focados na entrega e na qualidade dela. Se um bom desenvolvedor entrega com qualidade geralmente o código por trás tem padrões elevados.
A maioria dos desenvolvedores não gostam dessa abordagem, afinal, eles preferem escrever código sem ter que testar as coisas — especialmente aqueles desenvolvedores que se divertem muito em desenvolver software. Eles são os que não querem testar e costumam reclamar sobre a falta de um QA. Isso é um pouco difícil de aplicar em equipes de tecnologia, mas com persistência a equipe vai começar a perceber que é muito em importante testar em cada entrega e isso se torna natural pra todo mundo.
No final das contas, se o processo de QA for adotado pela equipe de desenvolvimento o número de bugs adicionados em cada sprint pode ser reduzido de 60% a 80% depois de algumas sprints. Isso aumenta a disponibilidade da equipe de desenvolvimento em implementar coisas importantes que levam a empresa pra frente.
Artigo originalmente publicado em inglês no Pulse pelo Ricardo Parro
*Tradução originalmente publicada no meu blog em 24 de novembro, 2015. Estou transferindo os artigos para o Medium.