6 Truques de Engenharia da Qualidade para Equipas de Programadores Remotos

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Os Engenheiros de Qualidade podem adaptar os seus processos a contextos de trabalho remoto, concentrando-se em estratégias para melhorar as revisões de código, tirar partido de ferramentas de engenharia da qualidade e promover a colaboração através de atividades como sessões de testes remotos.

A importância da engenharia da qualidade voltou a estar em destaque à medida que setores inteiros mudam para operações remotas, enquanto tentam manter a qualidade dos seus processos e produtos. 

A COVID foi um ponto de viragem para o mundo inteiro. À medida que os governos impuseram medidas de distanciamento social e quarentena, as empresas tiveram de se reinventar relativamente aos métodos de trabalho. 

Enquanto Tester, SDET, engenheiro de QA ou desempenhando qualquer outra função responsável por promover a qualidade na sua empresa, é provável que o seu dia a dia tenha sido afetado.

Engenharia da Qualidade eficaz numa configuração remota

Antes da pandemia, já trabalhava totalmente à distância na Auth0 (uma empresa remota com equipas distribuídas globalmente) e também já tinha trabalhado remotamente noutras empresas. 

Neste artigo, vou partilhar as minhas sugestões, truques e processos para gerir o trabalho remoto e as práticas de Garantia da Qualidade. Com as tendências da engenharia da qualidade a evoluírem rapidamente, especialmente em ambientes remotos, é essencial manter-se atualizado sobre as ferramentas e estratégias que podem apoiar esta mudança.

O principal conselho genérico que lhe posso dar é que esteja preparado para a comunicação assíncrona — muitas vezes terá de esperar para interagir e terá de aprender a lidar com isso.

Ao implementar práticas remotas, é importante reconhecer a diferença entre engenharia da qualidade e garantia da qualidade. Embora a Garantia da Qualidade tenda a concentrar-se na deteção de defeitos após o facto, a Engenharia da Qualidade é uma abordagem mais holística e preventiva, garantindo que a qualidade é incorporada em todas as fases do desenvolvimento.

Estratégias e sugestões para engenheiros de QA remotos

1. Aviso: isto não é exatamente a normalidade 

Durante a pandemia, os trabalhadores remotos enfrentaram frequentemente stress e pressão adicionais (crianças em casa, condições inadequadas para trabalhar em casa, mortes ou doenças na família, etc.). Quer desempenhe uma função de gestor, líder, sénior ou júnior, é fundamental compreender que o que está atualmente a acontecer não corresponde ao que é normal. A COVID foi uma situação excecional (esperemos!), pelo que exigiu uma adaptação adicional por parte de todos.  

Enquanto gestor, mostre aos seus subordinados diretos que está disponível para ajudar. Enquanto líder técnico ou principal, dê orientação à sua equipa, mas mostre também que é humano e que eles devem sentir-se seguros para mostrar vulnerabilidade. Quanto aos restantes, não sintam pressão para ter o desempenho habitual — é compreensível que as coisas abrandem.  

As empresas devem reconhecer que a velocidade das suas equipas irá diminuir e que o trabalho remoto não é responsável por isso. Estas são circunstâncias únicas. O trabalho remoto permite que a sua empresa continue a funcionar, mesmo que não seja à velocidade máxima.  

2. As revisões de código são uma das suas melhores barreiras de qualidade  

Mesmo que tradicionalmente tenha desempenhado uma função de qualidade mais manual na sua empresa, as revisões de código já devem fazer parte do seu radar. São frequentemente uma parte importante do ciclo de vida do desenvolvimento de software e funcionam como um ponto de contacto onde as pessoas são obrigadas a comunicar entre si para melhorar a qualidade do código e evitar erros. 

Numa situação remota, são especialmente importantes porque constituem um ritual natural que normalmente já está implementado, pelo que será fácil aplicá-las. Se forem utilizadas corretamente, ajudarão a resolver os problemas de comunicação assíncrona que mencionei anteriormente. Tirar partido do software de engenharia da qualidade adequado pode melhorar significativamente os processos de revisão de código, simplificando a comunicação e reduzindo os erros antes de ocorrerem.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

As minhas principais sugestões para revisões de código:

  • Incentive as pessoas a fazerem primeiro uma autorrevisão: a autorrevisão é uma prática em que a pessoa que propõe a alteração de código também revê o seu próprio código e deixa comentários úteis antes de solicitar uma revisão pública. Reduz o tempo desperdiçado pelos futuros revisores e pode até ajudar a pessoa que faz a autorrevisão a encontrar antecipadamente pequenos erros disparatados; 
  • Faça revisões de código em pares ou em sessões de grupo: especialmente útil nos casos em que o PR toca em código sensível ou representa uma alteração bastante grande (como uma refatoração). A pessoa que propõe uma alteração pode participar numa chamada de videoconferência, partilhar o seu ecrã e explicar o PR à equipa ou a um colega. Isto ajuda bastante a colocar rapidamente todos em sintonia e pode contribuir muito para melhorar a qualidade do código. 
  • Envolva os programadores na revisão de código de automação: é importante que os programadores participem na revisão do código de automação/testes. Isto mantém atualizada a sua compreensão sobre a forma como a aplicação está a ser testada e ajuda a aplicar o mesmo tipo de qualidade de código em todo o código; 
  • Certifique-se de que os SDETs/Testadores estão a rever o código da aplicação: este é realmente crucial. Os engenheiros de qualidade devem participar nas revisões de código. Pode fazê-lo mesmo que não seja uma pessoa muito técnica (é uma excelente forma de descobrir o que precisa de aprender!). Não só poderá fornecer comentários valiosos, como também adquirirá conhecimentos sobre o que está exatamente a mudar na aplicação (o que poderá estar a perder devido à nova configuração assíncrona). Estes conhecimentos vão ajudá-lo a tomar melhores decisões de teste para a equipa.

Se ainda não tiver um processo rigoroso de revisão de código, esta é uma excelente altura para defender a sua melhoria. É uma ferramenta fundamental numa época em que a comunicação síncrona pode ser mais difícil. 

Não tenha receio de utilizar ferramentas de revisão de código para ajudar a organizar e colaborar.

3. Tire partido do poder da programação em pares

Não vou entrar nos detalhes da programação em pares ou da programação em grupo, pois isso daria origem a outro artigo inteiro e existe muita informação sobre o assunto online.

No entanto, queria salientar que esta é uma ferramenta muito valiosa numa altura como esta. Quer esteja a trabalhar com outro SDET em código de testes, quer esteja a trabalhar em pares com um programador no código da aplicação, penso que é uma excelente prática que ajudará a fortalecer os laços da equipa, a partilhar conhecimentos e a aumentar a qualidade do código e da aplicação. 

Eis algumas perguntas frequentes sobre programação em pares, juntamente com as respetivas respostas:

O que é a programação em pares?

Como o nome indica, a programação em pares é uma atividade em que duas pessoas contribuem em conjunto para o mesmo código. Também pode ser realizada com mais pessoas e é normalmente designada por programação em grupo. 

Como funciona a programação em pares?

Normalmente, na programação em pares, há um condutor (que escreve o código) e um navegador (ou observador). Isto funciona bem com ferramentas de conferência remota, nas quais uma pessoa pode partilhar o seu ecrã e escrever o código, enquanto a outra pode fazer sugestões, comentários ou lembretes, ou ajudar a detetar/prevenir erros.

Que ferramentas utiliza para a programação em pares?

Se estiver com vontade de colaborar, o VS Code, por exemplo, desenvolveu excelentes capacidades de colaboração com o Visual Studio Live Share, que permite que várias pessoas trabalhem num projeto partilhado. Funciona muito melhor do que seria de esperar — é muito poderoso e funciona particularmente bem com pessoas que já se conhecem ou que têm estilos semelhantes.

É possível fazer programação em pares com pessoas não técnicas?

Sim, e é uma excelente oportunidade para desenvolver competências de mentoria, bem como os conhecimentos técnicos da sua equipa. 

Tem programadores particularmente interessados em ensinar ou que talvez tenham experiência na realização de workshops ou tutoriais? Podem trabalhar consigo em pares para o orientar pela base de código, permitindo-lhe adquirir mais experiência caso ainda não tenha muitos conhecimentos técnicos.

E quanto aos testes?

Para testar, experimente algo a que vou chamar “programação em pares inversa”. Isto incentiva o inverso da programação em pares, passando antes a ser sobre testes em pares/grupo. Trabalhe em pares com programadores para lhes mostrar como testa a aplicação, ou para que o ajudem a testá-la, ou vice-versa! Esta é uma forma realmente útil de abordar problemas complexos. Leia algumas ideias sobre o assunto num outro excelente artigo de Maaret Pyhäjärvi.

4. Realize sessões de testes remotos para colaborar em equipa: caças aos erros, dias de jogos, etc. 

As sessões de teste (por vezes chamadas caças aos erros, dias de jogo, etc.) são uma atividade colaborativa, normalmente realizada por uma equipa. 

Pode destinar-se a testar uma nova funcionalidade específica ou ser realizada regularmente para testar a aplicação. As ferramentas de QE certas podem fazer toda a diferença durante estas sessões colaborativas, oferecendo informações em tempo real e simplificando ambientes de teste complexos.

A ideia é reunir pessoas da equipa e de fora dela, de várias áreas (desenvolvimento, testes, produto, design, partes interessadas do negócio, etc.), para testar a aplicação. Por vezes, enquanto programadores ou testadores, podemos ter uma ideia tendenciosa e demasiado focada nos aspetos técnicos sobre o aspeto que a aplicação deve ter, pelo que pedir a outras partes interessadas que a analisem pode fornecer feedback muito valioso. 

Captura de ecrã das funções das sessões de teste
As sessões de teste são uma excelente oportunidade para as equipas se reunirem e colaborarem entre departamentos, mesmo em configurações remotas.

Considerei importante salientar isto porque sinto que é uma excelente atividade para realizar nestes tempos. Reúne as equipas e incentiva a comunicação e a colaboração entre diferentes departamentos, podendo descobrir erros ou especificações incorretas que, de outra forma, poderiam passar despercebidos.  

Agora, é claro que realizar estas sessões remotamente pode ser um desafio, por isso ficam aqui algumas sugestões para esse efeito (e para as realizar em geral).

Sugestões para realizar sessões de teste remotas:

  • Deve ser possível realizá-las através de uma ferramenta de videoconferência. Certifique-se também de que existe um chat disponível para o efeito (se utilizar o Slack, talvez possa criar um canal Slack separado para isso); 
  • Nas situações em que são necessários dispositivos (por exemplo, telemóveis ou dispositivos para a sala de estar, etc.), certifique-se de que sabe antecipadamente quais são os dispositivos que as pessoas têm. Se estiver a testar uma aplicação iOS e convidar alguém sem um iPhone, isso será uma perda de tempo para todos; 
  • Tenha sempre uma ou mais pessoas responsáveis por cada uma destas sessões. Isto significa que devem ajudar a organizá-la antecipadamente, preparar toda a documentação ou configuração necessária para os participantes e orientar a sessão; 
  • Deve criar instruções claras de instalação para os participantes e disponibilizá-las antes da sessão. O objetivo é utilizar o tempo da sessão para testar, não para instalar; 
  • Deve também ter instruções claras sobre como comunicar problemas, mesmo que seja apenas “publicá-los no canal” (em vez de todos tentarem comunicar problemas numa chamada de conferência ao mesmo tempo); 
  • Tenha um plano para a sessão. Em situações como esta, é útil que as pessoas sigam algum tipo de guião ou, pelo menos, um plano sobre o que devem analisar;
  • Dito isto, continue a incentivar os testes exploratórios, mas tenha em conta que algumas pessoas podem precisar de um pequeno incentivo para começar a explorar. 
  • Também pode realizar estas sessões em sistemas mais orientados para o back-end. Um exercício interessante nesse contexto poderia ser transformá-las numa experiência de engenharia do caos, com um grupo mais orientado para a tecnologia. A AWS tem uma versão destas sessões denominada Dias de jogo, da qual pode retirar algumas ideias.
  • Incentive a diversão! Estas sessões podem ser muito divertidas quando são bem realizadas – costumava transformar as sessões de teste numa espécie de jogo com personagens de A Guerra dos Tronos quando as realizava na Miniclip, há muitos anos. 

Pode também encontrar informações mais detalhadas sobre este assunto nesta publicação de blogue, que aborda vários dos aspetos que mencionei acima.

5. Gira o seu tempo livre com sensatez — reforce as suas competências de engenharia da qualidade

Como já referi, vai ter de se habituar à comunicação assíncrona. No mundo dos testes (dependendo da dinâmica da sua equipa), as tarefas de um testador podem frequentemente depender da conclusão do trabalho de desenvolvimento. Com as equipas a avançarem a um ritmo mais lento e a comunicação a decorrer de forma diferente, pode dar por si com algum tempo livre disponível. 

Lembro-me de ter tido um colega numa empresa anterior que dizia frequentemente na reunião diária: “Estou bloqueado por x” e depois passava o dia à espera de deixar de estar bloqueado. A certa altura, estava a ajudá-lo a melhorar as suas competências em várias áreas, e uma das coisas que precisavam de ser trabalhadas era precisamente essa mentalidade. Isto é especialmente verdade agora, quando, para além de possíveis aumentos nos períodos de inatividade, também se encontra no conforto da sua casa, com muitas distrações à sua disposição. 

É importante que faça a gestão do seu tempo e mantenha uma lista de pendências sobre os temas que tem interesse em aprender. 

Eis alguns exemplos de coisas que pode fazer no seu tempo livre: 

  • Tem trabalhado mais como QA manual? Talvez queira investir algum tempo a aprender sobre automação.  
  • Tem muitos conhecimentos de front-end? Talvez devesse dedicar algum tempo a adquirir também conhecimentos de back-end.
  • Existem muitos excelentes recursos gratuitos, como o freeCodeCamp ou o YouTube, ou opções económicas como a Udemy (que costuma fazer promoções). Além disso, há muitas conferências que passaram a ser remotas devido ao coronavírus, e algumas são gratuitas (por exemplo, a OnlineTestConf)!
  • Ou talvez queira aprender mais sobre a aplicação, explorando o código da aplicação. 
  • Ou talvez saiba que está a chegar um novo projeto e que terá de adquirir uma nova competência para o realizar. 
  • Além disso, também pode aproveitar este tempo para criar protótipos de novas ideias, eliminar dívida técnica, tratar da documentação, etc.  

Na realidade, não importa. Escolha o que preferir, mas invista no seu desenvolvimento pessoal. 

Isso não significa que não possa fazer uma pausa (afinal, estamos perante uma pandemia global). As pessoas compreenderão. Mas aumentar o seu conjunto de competências de QA ou melhorar a si próprio é valioso, especialmente em momentos como este, em que o mercado de trabalho sofreu uma enorme quebra. 

More Articles

6. Utilize atividades de equipa para ajudar a desenvolver relações 

Como nota final, embora isto não seja propriamente uma sugestão relacionada com testes, queria dizer que considero importante incentivar atividades na sua equipa. Essas relações são importantes e proporcionam uma distração bem-vinda do trabalho. Normalmente, estas relações surgem de forma mais orgânica num ambiente de escritório, talvez durante o almoço, numa pausa para café ou até através de um comentário espontâneo na mesma sala. 

Algumas dicas para criar relações num ambiente remoto: 

  • Na minha equipa atual, acabámos de configurar a aplicação Donut do Slack no canal da nossa equipa. Esta aplicação irá associar-nos aleatoriamente a um membro da equipa todas as semanas para uma conversa — podemos falar sobre o que quisermos.
  • Também temos um clube do livro à sexta-feira, em que alternamos entre nós para partilhar conhecimentos (concentramos o debate em temas relevantes para o trabalho, mas pode ser qualquer assunto!); 
  • Organize almoços ou pausas para café da equipa no canal, nos quais passam algum tempo juntos, como fariam num escritório. É claro que isto funciona melhor se estiverem todos em fusos horários semelhantes; 
  • Organizem questionários ou joguem jogos online em conjunto, de vez em quando. O Jackbox Party Pack é um excelente exemplo de algo que funciona muito bem em ambientes remotos.

Junte-se a nós para obter mais informações

Para obter mais dicas, conselhos e estratégias sobre garantia de qualidade, subscreva a newsletter do The CTO Club para receber as informações mais recentes. Ajudá-lo-emos a crescer de forma mais inteligente e a liderar com mais força, através de guias, recursos e estratégias de especialistas de topo!

You may also like