Como criar uma Definição de Pronto que funciona?

done

Atualizado em 11/07/19!

Uma Definição de Pronto (Definition of Done, no original) é um artefato Scrum usado para garantir a qualidade do produto desenvolvido a cada iteração (Sprint). Um documento, um contrato entre os membros do Time Scrum e demais envolvidos para que todos entendam o que um produto “pronto” (done) significa.

Mas como criar uma definição de pronto que realmente funcione, que não seja apenas uma burocracia sem sentido no meio de um processo de desenvolvimento que deveria ser ágil?

Vou mostrar algumas ideias aqui no artigo!

Depois, se quiser conhecer mais do meu trabalho com Scrum, dê uma olhada em meu livro sobre o assunto. E se preferir assistir a um vídeo ao invés de ler o artigo, confira abaixo uma amostra gratuita do meu curso online de Scrum e Métodos Ágeis:

Basicamente a definição de pronto é o documento que define o que é considerado, para todos envolvidos no projeto, o que “pronto” (done) significa.

Quais são os requisitos para arrastar um card para a coluna DONE do Kanban? Se um desenvolvedor diz que algo está pronto, o que isso significa? O que o Product Owner espera ver, em termos gerais, durante a Sprint Review?

Essas são algumas perguntas que podem nortear a construção deste documento, que geralmente e um checklist de coisas a serem realizadas/verificada, antes de uma tarefa ser dada como pronta e, como manda o pilar da transparência do Scrum, deve ser visível e conhecido por todos do time. Dica: coloque ao lado do Kanban.

Documento colaborativo

Um primeiro ponto a se considerar é que a criação da definição de pronto deve ser realizada de maneira colaborativa, ou seja, por todos os membros do Time Scrum. Claro, alguns membros possuem mais direitos, e outros mais deveres, como o Time de Desenvolvimento, por exemplo, que será o principal encarregado de implantar os itens da definição de pronto na sua rotina de desenvolvimento. Já o Scrum Master deverá garantir e auxiliar o time na execução do que prega este documento, afinal, ele faz parte do processo Scrum e deve ser respeitado. E por fim, o Product Owner espera que todos os itens dados como prontos e entregues estejam dentro do padrão de qualidade acordado na definição de pronto.

Achou complicado? Não deveria, é mais simples do que parece.

Um bom começo é, durante a primeira Sprint Planning, o time definir a v1 da sua definição de pronto. Pense em uma folha A4 e comece com coisas simples como dizer que “todo item dado como pronto deve ter passado em testes unitários” e depois se aprofunde em itens mais “avançados” como testes de regressão, teste em pares, etc e até mesmo itens difíceis dependendo da disponibilidade do Time Scrum como “aprovar com o Product Owner”. Sim, é bem complicado deste último item ser factível pois geralmente o Product Owner não é (mas deveria ser) tão acessível quanto gostaríamos.

Como tudo no Scrum (pilares da inspeção e adaptação, lembra?), itere e melhore sua definição de pronto a cada Sprint. Pegue o que deu errado na Sprint Review (ela nunca sai 100% como foi planejado pelo Time de Desenvolvimento), aborde na Sprint Retrospective e aplique de maneira aperfeiçoada na próxima Sprint Planning. Comece simples e avance rapidamente. Lembre-se que a função deste artefato é garantir a qualidade, mas lembre-se também de se manter ágil. A dose certa de um e de outro é você que vai descobrir.

E por último, eu sugiro fazer na Sprint Planning pois dependendo dos itens colocados na sua definição de pronto, o tempo para que cada entrega fique pronta pode mudar drasticamente. Tenha a definição de pronto pronta antes de jogar Planning Poker, por exemplo.

Contrato moral

A definição de pronto é algo com o qual o time se compromete a cumprir para garantir a qualidade das entregas. Sendo assim, é um contrato moral. Moral porque estamos falando de pessoas e processos, não há um elemento de software envolvido, lhe cobrando diariamente que cumpra os requisitos do documento, embora o time possa optar por usar algum, como um dos itens da definição, mas nada a substitui.

Sendo um contrato moral e ao mesmo tempo algo colaborativo, o time terá de achar o checklist que agrade a todos, incluindo aqui o Product Owner, que é quem tem a palavra final sobre os itens do Backlog que o Time de Desenvolvimento está trabalhando. Jamais crie uma definição em que não há unanimidade dentro do Time pois caso contrário ela será sabotada, mais cedo ou mais tarde. Caso o time seja inexperiente, como Scrum Master “force” algumas regras pedindo um voto de confiança, explique que esse documento poderá ser alterado na próxima Sprint caso o Time não se adapte.

Mas principalmente: crie um documento que seja útil para garantir a qualidade das entregas que seja executável, exequível. É muito fácil cair na tentação de adicionar dezenas e dezenas de itens de qualidade que jamais serão empregados no projeto como “validar pessoalmente com o cliente final” seja porque não é prático, seja porque realmente e inviável (ex: cliente do outro lado do mundo). Se o Time optar por ferramentas, escolha o menor conjunto delas possível, caso contrário o tempo de desenvolvimento poderá ser enormemente afetado ou a definição enormemente sabotada.

E se você acha que seu Time não dará atenção a um contrato moral, que tipo de time você montou para executar o projeto?

Exemplos e Contra-exemplos

A seguir alguns exemplos de itens que já implementei em Times Scrum que eu liderei como Scrum Master e que sei que funcionam. Obviamente, alguns deles não funcionam dentro de realidades fora das que eu vivenciei, uma vez que a maioria das empresas que trabalhei desenvolviam software para si mesmas (cliente interno). Também obviamente não pegue todos e coloque na sua definição. Use-os como ideias, não tenho intenção alguma definir o que significa “pronto” para o SEU time de desenvolvimento.

Lembre-se que a definição de pronto deve ser clara e não permitir desculpas como “está pronto, só falta testar”…

Toda tarefa de software, para ser considerada pronta, deve…

Ter sido atualizado com o controle de versão e permanecer compilando;

Isto é o mínimo que se espera de algo dado como pronto. Em Times que usem versionamento de código (algum não usa?) o desenvolvedor, após concluir a codificação da tarefa, pegar a última versão do servidor, rodar seus testes (ver abaixo), fazer a fusão (merge) do que for necessário e garantir que, antes de enviar seu código amalgamado ao servidor, que tudo continua compilando. Ponto.

Contra-exemplo: cuidado com o envio de software inacabado (mesmo que algumas features individuais já estejam) para produção. Versionadores de código (como TFS, SVN, Git, etc) possuem recursos como branches e forks que permitem aos desenvolvedores manterem sempre uma versão de produção 100% operacional e livre de bugs enquanto trabalham em outra versão mais instável. Colocar na definição de pronto que o requisito de software desenvolvido esteja rodando em produção é muito perigoso.

Ter passado nos testes unitários com sucesso;

Se você ainda não usa Testes Unitários em sua equipe de desenvolvimento, deveria. A ideia aqui, basicamente, é que, se você testar cada uma das micro-partes que envolvem o seu software (unidades) isoladamente, a probabilidade de que o todo funcione é muito maior, ao mesmo tempo em que lhe obriga a manter um baixo acoplamento do seu software para que ele possa ser testado em micro-pedaços.

Contra-exemplo: colocar TDD na definição de pronto sem que o time tenha experiência com a metodologia. TDD é bem complicado e difícil de ser seguido à risca, mais do que o próprio Scrum.

Ter passado por testes de uso de outro colega da equipe;

Desenvolvedores tendem a ser os piores testadores do mundo quando o assunto é testar suas próprias criações. Certamente temos um gene defeituoso que faz com que auto-sabotemos os testes visando não encontrar bugs. Geralmente outro colega da equipe (chamado cross-testing ou peer-review), que não está preocupado com o trabalho que vai dar corrigir qualquer erro encontrado, é um testador melhor que o desenvolvedor original. E se isso não for suficiente para garantir a qualidade, em casos extremos mude para “teste de uso de quem vai usar a feature”, chamando para o teste de uso o próprio usuário da feature.

Ah, esse teste de uso deve ser em ambiente de homologação. Nada de chamar o colega ou o usuário final pra usar na tua máquina. Isso evita aquela famigerada frase: “na minha máquina funciona!”.

Contra-exemplo: teste de uso automatizado. Isso faz com que você perca a experiência da usabilidade do software. Podem existir testes automatizados, mas eles não devem substituir por completo os testes manuais quando o recurso envolver interface gráfica.

O código encontra-se dentro dos padrões da empresa;

É comum, embora não deveria, desenvolvermos uma v1 de qualquer funcionalidade de maneira meio…porca. O que não é “comum” é que essa v1 seja a versão “pronta” daquele requisito. Refatoração é a chave aqui. Garanta com esse item que o código passe por uma avaliação estrutural para ver se está 100% de acordo com as normas de desenvolvimento da empresa (ex. do Google). Obviamente para que isso funcione, estas normas também devem estar visíveis e serem de conhecimento geral do Time de Desenvolvimento.

Contra-exemplo: empresas que possuam normas de desenvolvimento muito particulares tendem a fracassar ao usar este item na definição de pronto. O que seria algo muito particular? Na minha opinião algo que foge aos padrões de codificações oficiais da linguagem/framework utilizados. Quando escrevo código em Java, uso os padrões da Oracle (Camel Case para métodos, por exemplo). Já quando escrevo código em C#, uso os padrões da Microsoft (Pascal Case para métodos, por exemplo). Isso facilita a vida para todos, inclusive novos funcionários e geralmente a resistência por adotar essa prática é culpa do ego dos veteranos da empresa.

Softwares de apoio e documentação atualizados;

Um último item na definição de pronto deve dar cabo de tarefas burocráticas e pouco interessantes, mas igualmente necessárias, como essas. Todo Time de Desenvolvimento usa algum software para controlar seu progresso (Trello, por exemplo). Mas para garantir que esse software mantenha sua utilidade, ele deve permanecer atualizado com o andamento do projeto e aqui o trabalho do Scrum Master deve ser bem forte, porque o time sempre se “esquece” de atualizar. Cobrar atualizações diárias, sempre antes da Daily Scrum, geralmente resolvem este problema, mesmo antes das tarefas serem dadas como pronto.

O mesmo vale para a documentação do projeto. Eu particularmente sempre gostei de Wikis internos por serem um formato de documentação viva, colaborativa e fácil de usar e manter. Obviamente tem empresas que preferem o bom e velho Word. Encontre o que funciona para você, mas garanta que um mínimo de documentação esteja sempre atualizada e visível, como diagramas da arquitetura, do banco de dados, de implantação, etc.

Contra-exemplo: tão nocivo quanto não ter documentação é tê-la em demasia, então tome cuidado com este item, caso contrário o time pode não se comprometer de verdade, gerando um comprometimento flácido.

Conclusão

Estas foram algumas ideias de como criar ou incrementar a sua definição de pronto. A combinação de uma definição de pronto clara, com objetivos e escopos definidos, tendem a garantir entregas consistentes e de qualidade, levando o projeto ao sucesso.

Associar a sua definição de pronto a acrônimos como DEEP, INVEST e SMART também pode ajudar bastante!

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis

Certificações Ágeis para Scrum Master e Product Owner

Atualizado em 18/06/19 com vídeos!

Obtive minhas primeiras certificações em métodos ágeis, mais especificamente Scrum, em 2010, logo após fazer meu primeiro curso sobre o assunto e definitivamente mudar a minha carreira pra sempre. Estas certificações me foram muito úteis em diversas ocasiões e arrisco dizer que não seria hoje um Agile Coach no Agibank se não possuísse as mesmas.

A ideia do artigo de hoje é explicar um pouco sobre certificações em métodos ágeis, principalmente as disponibilizadas pela Scrum.org, a fundação sem fins lucrativos criada por Ken Schwaber em 2009, um dos fundadores do Scrum.

O que abordarei nesse artigo:

Vamos lá!

Por que tirar uma certificação?

Para quem nunca tirou uma certificação antes, ela funciona como um diploma, um certificado de proficiência mas em um assunto bem específico, como programação Java, administração de servidores Linux ou neste caso, atesta que você sabe toda a teoria sobre o framework Scrum e um papel em específico (Scrum Master ou Product Owner).

Ser certificado não é garantia de que você tenha experiência com algo, mas de que ao menos domina a teoria daquele assunto. Mais do que isso, um profissional certificado mostra o seu interesse genuíno sobre determinado assunto, uma vez que certificações levam certo tempo para estudo e aplicação da prova, além do valor que pode ser bem salgado às vezes.

É bem comum no mercado de desenvolvimento as pessoas acharem que qualquer um pode ser um Scrum master ou um Product Owner e saber se a pessoa possui ou não certificação no papel demonstra que ela realmente busca uma carreira naquele papel em específico e não está apenas atrás de alguma vaga de emprego qualquer. Existem exceções? Com certeza. Mas entrevisto regularmente candidatos a vagas com essas nomenclaturas e é triste ver pessoas que não fazem ideia onde estão se metendo.

Quem emite certificações?

Falarei aqui apenas das duas principais certificadoras do mercado em métodos ágeis: Scrum.org e Scrum Alliance.

A Scrum Alliance foi fundada pelos criadores do Scrum: Jeff Sutherland e Ken Schwaber em 2003. Ela promove a disseminação do Scrum ao redor do mundo desde seus dias iniciais e muito da popularidade do seu método vem da atuação desta empresa. Aproximadamente em 2007 Ken e Jeff entraram em desacordo sobre os rumos da empresa, que estava com um apelo cada vez mais comercial (por exemplo, não era exigida prova para certificar um aluno à época, apenas um curso caríssimo e obrigatório) e que também não estava preocupado com o papel do Dev Team, apenas PO e SM.

Desse desacordo surgiu a Scrum.org aproximadamente em 2009, com o intuito de educar e certificar não apenas SMs e POs, mas também desenvolvedores em práticas ágeis de engenharia. Com um cunho mais educativo e menos comercial, a Scrum.org não exige cursos, embora eles existam para quem deseje fazer, para certificar alguém, apenas uma prova online em Inglês que explicarei mais sobre na sequência. Embora a Scrum Alliance possua provas também há alguns anos, as provas da Scrum.org são notoriamente mais difíceis.

Independente deste histórico, tanto as certificações da Scrum.org quanto da Scrum Alliance são bem avaliadas no mercado, embora existam rumores no forum da Scrum.org de que na Europa as certificações assinadas pelo Ken Schwaber (Scrum.org) possuam maior prestígio.

Sinceramente não recomendo qualquer outra certificadora. Como o Scrum Guide é mantido por estes dois senhores até os dias de hoje, somente ELES podem dizer o que o Scrum é ou não, ou como devem ser a atuação dos papéis ágeis. Já vi muita prova de outras certificadores falando besteira que contradiz o Scrum Guide, que é a fonte oficial de informação sobre o Scrum. Não vou citar nomes aqui por uma questão de ética, mas já vi gente ensinando e cobrando em prova conceitos errados. Tenha cuidado!

Certificação Professional Scrum Master I (PSM-I)

Eu vou me focar aqui nas certificações da Scrum.org pois foi onde tirei as minhas e sei como funciona tudo em detalhes. A certificação PSM-I é a equivalente CSM (Certified Scrum Master) da Scrum Alliance e mostra que o certificado possui conhecimento teórico completo do framework Scrum e do papel do Scrum Master.

Se preferir ver um vídeo ao invés de ler o texto, segue um trecho do meu curso de Scrum e Métodos Ágeis:

As suas principais características são:

  • custo de U$150 por tentativa;
  • somente em Inglês;
  • somente aborda conceitos vistos no Scrum Guide;
  • totalmente objetiva, com questões de múltipla escolha e V/F;
  • média de 85% para aprovação ou 80% para cidadãos cuja primeira língua não é Inglês;
  • 80 questões;
  • 60 minutos para conclusão;

Ao contrário da CSM, a PSM-I não expira e não requer renovação anual. Tirei a minha em 2010 e continua lá no site deles o meu nome até hoje.

Certificação Professional Scrum Product Owner I (PSPO-I)

A certificação PSPO-I é equivalente à CSPO da Scrum Alliance (Certified Scrum Product Owner) e mostra que o certificado possui conhecimento teórico completo do framework Scrum e do papel do Product Owner, bem como de outros princípios mais além relacionados ao desenvolvimento ágil de produtos.

Se quiser ver um vídeo onde falo da certificação para PO, parte do meu curso de Scrum e Métodos Ágeis, segue abaixo:

As suas principais características são:

  • custo de U$200 por tentativa;
  • somente em Inglês;
  • aborda conceitos vistos no Scrum Guide e em outras leituras para POs;
  • totalmente objetiva, com questões de múltipla escolha e V/F;
  • média de 85% para aprovação ou 80% para cidadãos cuja primeira língua não é Inglês;
  • 80 questões;
  • 60 minutos para conclusão;

Também não expira.

Dicas de Estudo para as Provas

A dica mais quente que posso dar é decorar o Scrum Guide de ponta a ponta. Ele é a fonte oficial de informação sobre Scrum e é nele que você deve confiar para saber o que é cobrado nas provas sobre o framework Scrum.

A segunda dica de estudo é fazer os simulados presentes no site da Scrum.org, o Scrum Open e o Product Owner Open. Se for fazer a PSM-I, fazer o Scrum Open vai te permitir conhecer algo entre 30-40% da prova (semelhante ao que acontece com as provas do Detran, sabe?) e se estiver fazendo 100% nos simulados, tem grande chance de conseguir passar na prova. Já se for fazer o PSPO-I, recomendo fazer tanto o Scrum Open quanto o Product Owner Open. Os simulados são bem didáticos e possuem questões no mesmo nível da prova, além de serem gratuitos.

A terceira dica é anotar e fazer resumos. Você tem de ter em mãos tabelas e anotações que te permitam rapidamente saber as principais atribuições de cada papel, as características de cada cerimônia (objetivos, timeboxes, etc) e o uso de cada artefato. Você também vai precisar ter a mão a definição do que é o Scrum e quais são seus valores.

Não recomendo qualquer outro simulado ou livro, pois eles podem mais confundir do que ajudar. A única exceção são os excelentes cursos da TI Exames que são preparatórios para as respectivas provas. Já fiz um deles, de Product Owner especificamente, e considerei muito bom, além de outros colegas de trabalho que também tiveram experiência semelhante.

Dicas para Realização da Prova

Como a prova é online, ter os rascunhos e anotações à mão facilita bastante, bem mais do que ter o Scrum Guide, embora este último também seja importante. Somente se inscreva para a prova (você paga e recebe uma senha para poder iniciar a prova) depois de estar tirando 100% em todos simulados que esteja fazendo, consecutivamente.

Quando eu fiz as provas, eu me tranquei em um local fechado, desliguei o celular e avisei minha esposa que eu não poderia ser incomodado sob hipóteses alguma. Você precisa de muita concentração e silêncio, só deixe o celular por perto como backup de Internet, caso sua banda larga dê problema no meio da prova. Usar um notebook também é importante caso falte luz, pois assim você terá a bateria do note para garantir que consiga fazer a prova até o final (ela dura no máximo 60 minutos).

Feche todas as abas do navegador e demais softwares do seu computador. Deixe no máximo um tradutor de Inglês aberto, caso tenha problema com alguma palavra.

Uma última dica é quanto à interpretação das questões: seja o mais literal possível. Não leve para o seu entendimento pessoal ou para qualquer prática que já tenha tido. Se no Scrum Guide diz que a cerimônia x deve ser feita sempre em pé, sim, a resposta é sempre em pé, mesmo que você eventualmente não siga esta regra, só pra citar um exemplo.

Eu também tenho a certificação de Professional Scrum Developer I (PSD-I), pois na época que comecei a trabalhar com Scrum eu ainda era um analista/programador. As regras são praticamente as mesmas, com a diferença que a PSD-I exige conhecimento de práticas de engenharia ágil, principalmente algumas abordadas no framework Extreme Programming (XP). Como tirar esta certificação não é algo muito comum no mercado, resolvi focar o artigo apenas nas duas supracitadas.

Então é isso. Essas são as orientações que eu poderia deixar sobre o assunto e qualquer dúvida que tiver, pode deixar nos comentários que terei o maior prazer em responder.

Na séria de vídeos abaixo, eu falo de Carreira em Agilidade, um tópico que tem tudo a ver com o assunto certificações:

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis

Agile Testing: Cultura de Qualidade em times ágeis

Há algum tempo atrás eu estava fazendo um trabalho com os profissionais de QA lá do Agibank e escrevi o artigo Agile Testing com dicas para mudança de mindset e ressignificação do papel dos QAs nos times Scrum.

De lá para cá muita coisa mudou em nossos times e faz-se ainda mais necessário a ressignificação não apenas do papel do profissional de qualidade dentro dos times como o próprio assunto qualidade. Afinal, não existe entrega de valor em times ágeis se não existir qualidade nas mesmas. Pior do que uma não entrega é a frustração de uma entrega desastrosa.

No artigo de hoje pretendo explorar os tópicos que compreendem o assunto Cultura de Qualidade, tendo como foco o Testing Manifesto da Growing Agile, que eu conheci no Agile Trends 2018.

Qualidade fica no final, certo?…

Todos conhecemos o modelo waterfall de desenvolvimento de software, até porque ele é bem intuitivo: analisamos uma demanda, desenvolvemos ela e antes de entregar, fazemos uma ostensiva etapa de testes, certo?

Além de definir esta etapa de testes mais ao final do projeto, o modelo tradicional defende a existência de um papel de testador ou QA (Quality Assurance) no time, como a pessoa responsável por garantir a qualidade do software antes dele ser entregue. Se deu problema em produção, o problema é do QA que deixou passar os bugs, certo?

No entanto, quando partimos para abordagens de fluxo contínuo como Kanban ou de entregas iterativo-incrementais como Scrum (ou ainda o misto dos dois com Scrumban), se deixarmos a fase de qualidade para o final de um ciclo, claramente teremos problemas, além de obviamente gerar muito estoque de software não testado o que por si só já é um problema, o que chamamos no Lean Thinking de um dos 7 desperdícios do Lean. Então, aqui já temos um ponto: simplesmente não rola fazer testes só no final ou sempre atrasaremos o fim da sprint!

Mas vamos avançar com outro questionamento: no Scrum, o principal framework ágil do mundo, simplesmente não existe o papel do QA. Temos o Product Owner, o Scrum Master e o Development Team, que em tese engloba todos os demais papéis que não sejam de liderança de produto e de processo, respectivamente. Seriam os QAs desenvolvedores dentro do contexto do Scrum?

O raciocínio vai além disso. O QA (quando existente) não é apenas um desenvolvedor dentro do contexto do Scrum, mas em times ágeis (usando Scrum ou não) você deveria considerar que TODOS possuem a responsabilidade sobre a qualidade do software a ser entregue. O ponto que quero colocar aqui é que, para que exista realmente qualidade no trabalho realizado, TODOS devem ser responsabilizados por ela. E a Definition of Done e os Critérios de Aceitação estão aí para ajudar o time nesse aspecto.

Com isso em mente, vamos explorar quais são os possíveis valores por trás de uma cultura de qualidade em times ágeis. Valores estes que devem ser seguidos por TODOS os profissionais do time e antes de eu dar spoilers, voltarei no final do artigo a falar sobre o papel do QA nisso tudo.

Manifesto Ágil para Teste de Software

Todos conhecemos a história do Manifesto Ágil para Desenvolvimento de Software, correto? Esse manifesto acabou inspirando diversos outros e dentro da área da TI inspirou as Agile Coaches sul-africanas da consultoria Growing Agile a criarem o Testing Manifesto em 2013, algo como um manifesto ágil para teste de software.

A ideia deste manifesto, assim como o original é inspirar times de desenvolvimento a aderirem a valores saudáveis e promissores, que lhes ajudem a entregar mais valor para todos.

Acredito que, assim como quando incorporamos os valores do Agile Manifesto no dia a dia dos times provocamos mudanças positivas, incorporar estes valores ao seu rol de práticas e lições possa ajudá-lo a criar uma cultura de qualidade junto aos seus colegas.

O manifesto original é composto por 5 valores, ilustrados na imagem abaixo e que na sequência irei fazer uma possível tradução e dissertarei brevemente sobre os mesmos.

Testing Manifesto

Testing throughout over testing at the end

Cada valor segue a mesma lógica do Agile Manifesto: valoriza-se mais o item à esquerda do que o item à direita. Não é uma substituição, mas uma priorização na cadeia de valores, uma importância maior.

Assim, como primeiro valor temos “Testar através ao invés de testar no final”.

Eu falei sobre isso em meu artigo original e mencionei brevemente este tópico no início DESTE artigo. Se você deixar para testar somente no final da sprint, você estará em maus lençóis e na minha humilde opinião, este comportamento explica por que cerca de 90% dos projetos waterfall falham desde 1994 quando surgiu o Chaos Report.

Vivemos na era da entrega contínua (Continuous Delivery) e de tal forma temos de instruir nossos times a trabalhar com Teste Contínuo (Continuous Testing) também. A cada User Story desenvolvida, a mesma deve ser testada imediatamente e corrigida se necessário, o que nos leva ao próximo valor.

Preventing bugs over finding bugs

Nosso segundo valor é “Prevenir bugs ao invés de achá-los”.

Uma cultura de qualidade prega que ninguém deve ser parabenizado por encontrar bugs, bem como ninguém deve ser depreciado por causá-los, mas sim TODOS devem focar em evitá-los.

Mas como evitamos bugs que ainda não conhecemos?

O primeiro passo é o QA começar a trabalhar ANTES do desenvolvimento. Seja ajudando o Product Owner a especificar os Critérios de Aceite corretamente, seja escrevendo seus testes automatizados usando ATDD/TDD/BDD/etc, seja fazendo Pair Programming com os próprio programadores, para ajudá-los a deixar as funcionalidades com a maior qualidade possível.

Um bom QA não é aquele que acha muitos bugs no software dos devs, mas aquele que ajuda o seu time a não deixar bugs atrapalharem a vida do usuário em produção.

Linkado com as dicas que dei aqui, temos nosso terceiro princípio.

Testing understanding over checking functionality

Este valor pode ser traduzido como “testar entendimento ao invés de checar funcionalidade”.

Software é meio, não é fim. Logo, garantir a qualidade de um software não e limita a checar se ele está funcionando, mas sim se ele resolve o problema do usuário, se ele o ajuda a resolver a sua necessidade.

Assim, uma cultura de qualidade deve promover que os testes sejam feitos sempre sob perspectiva de solucionar o problema ou necessidade do usuário e jamais testar o software pelo software. Novamente, técnicas como ATDD e BDD ajudam aqui, bem como uma boa especificação ágil de requisitos e muita interação com o cliente.

O que nos leva ao próximo valor.

Building the best system over breaking the system

Como mencionei anteriormente, o papel do QA NÃO DEVE ser quebrar o sistema, mas sim ajudar enquanto Developer (segundo Scrum) a desenvolver o melhor sistema possível, e isso é exatamente do que se trata este valor: construir o melhor sistema ao invés de quebrar o sistema.

O racional de que a função do testador de software é “procurar bugs” (por mais que ele tenha uma intenção positiva de evitar que eles cheguem no usuário) é a origem de todo o mal da cultura de testes x a cultura de qualidade.

Quando se testa um software com o mindset de qualidade, procuramos entender se o que foi desenvolvido é o melhor que podemos entregar com as condições que temos visando satisfazer o cliente. Não é apenas ver se o botão salva ao ser clicado, mas se aquele é o melhor botão para resolver o problema do cliente.

E novamente, isso não deve ser feito somente no final do desenvolvimento. O papel de um profissional de qualidade deve ser de ponta a ponta, vide o primeiro valor. Não só dele, mas como de todos membros do time, certo?

Team responsibility for quality over tester responsibility

A responsabilidade pela qualidade deve ser de TODO o time ao invés de somente o testador.

Um Product Owner deve pensar constantemente na qualidade de seu entendimento e da sua comunicação dele para o time (escrita, falada, etc) para que tenhamos qualidade no requisito do projeto/produto.

Um Scrum Master/Agile Coach deve pensar na forma como o processo do time enfatiza a qualidade desejada pelo cliente e empresa, seja minimamente através de um fluxo de valor adequado, bem como boas práticas de engenharia ágil como TDD/ATDD/BDD, Pair Programming, Code Review, Mob Programming e muitas outras.

E os desenvolvedores são parte importantíssima em garantir a qualidade como um todo, fazendo desde um código de qualidade, com padrões concretos e adequados e seguindo as boas práticas sugeridas pelo agilista e mesmo criando práticas emergentes do time que apoiem a qualidade.

Mas se você, assim como eu acredita que “cachorro com dois donos morre de fome”…

O papel do QA Coach

Minha sugestão é que, em times que ainda exista a figura de um profissional especializado em qualidade (QA), ele atue como um coach (treinador) do time em práticas de qualidade. Que ele seja mais um facilitador, um educador e um aliado ao invés da última linha de defesa contra os bugs.

Um QA Ágil ou QA Coach deve ser alguém que não apenas domine técnicas de teste (funcional, automatizado, etc) mas que seja capaz de educar times sob a perspectiva da qualidade. Que assim como o Scrum Master ou Agile Coach que está todo o tempo todo “batendo na tecla” da melhoria contínua, da adaptabilidade, da entrega de valor, etc, que o QA Coach seja o cara que não deixa o time entregar nada menos do que um bom software para o cliente, dentro dos padrões de qualidade estabelecidos previamente.

Não defendo necessariamente a criação deste papel (o Scrum já tem papéis suficientes na minha opinião), em um cenário ideal acredito até que não deveria existir um profissional tão “especializado” assim em times ágeis, que todos developers deveriam ter estas skills, mas esta é uma discussão pra outro momento. Defendo que, nestes casos, que este “chapéu de QA coach” fique mais claro aos desenvolvedores que tenham como especialidade os testes, digo, a qualidade no âmbito de software. 😉

Concorda? Discorda? Deixe nos comentários e vamos bater um papo sobre isso!

* OBS: curtiu o post? Então dá uma olhada no meu livro de Scrum e Métodos Ágeis e/ou no meu curso sobre o mesmo assunto!

Curso de Scrum e Métodos Ágeis
Curso de Scrum e Métodos Ágeis