Vivemos uma era onde a tecnologia deixou de ser apenas entretenimento, para se tornar parte de nossas vidas. Aplicações como Waze, Uber, Bolt, Outlook, Gmail, WhatsApp, Spotify e Apple Pay se tornaram essenciais em nossas rotinas, mas para essas aplicações se tornarem tão efetivas a ponto de fazerem a diferença em nossas vidas foi necessário que tais empresas entendessem as “dores” da sociedade, para assim direcionarem tempo e recursos para que essas aplicações fossem desenvolvidas.
Foi necessário algo fundamental em todo este processo: comunicação. É exatamente nisso que nos focamos hoje, em como a comunicação influencia o ciclo de vida de um software e contribui para um desenvolvimento Agile.
Antes de mais, é importante entendermos o que é a comunicação no seu estado mais puro. A comunicação nada mais é do que o processo de troca de informações entre dois ou mais indivíduos. Para que uma comunicação seja feita com sucesso, o segredo está na forma como a outra parte recebe a informação, o que resulta da clareza com que é transmitida – quanto mais clara, simples e detalhada, mais fácil será de interpretar e assimilar.
Como aplicar a comunicação ao desenvolvimento de software?
Já entendemos o que é a comunicação, mas resta a dúvida: se esta é a base para o desenvolvimento Agile de software, então porque alguns produtos não fazem tanto sucesso como outros?
Claro que existem muito fatores para o sucesso, ou fracasso, de um produto, mas o facto é que os softwares que atingem o topo e se tornam referência, como os que citei no início, souberam aplicar (e muito bem) a comunicação ao longo do processo de desenvolvimento.
Esta forma de atuar vai muito além de reuniões diárias ou de uma cerimônia de refinamento – é necessário ouvir o que o cliente espera, ouvir a concorrência e assim colocar as ideias em prática.
Este processo parte do grau de interação entre cada membro da equipe e, principalmente, entre os personagens-chave, cuja responsabilidade é garantir que cada membro entende o que deve ser feito e como deve ser feito.
O segredo não está no que se escreve, mas sim na forma como a informação chega ao seu destinatário. Especialmente na área de desenvolvimento, por atuarmos muitas vezes de maneira remota, é fundamental garantir que o outro entende aquilo que deve ser feito, por isso deve ser privilegiada uma comunicação constante e detalhada.
Personagens-chave
Para que exista uma comunicação eficaz ao longo do desenvolvimento de software, são essenciais os seguintes intervenientes:
- Product Owner (PO)
É quem deve entender o que os clientes necessitam e porque necessitam de tal funcionalidade. A partir daí, deve coletar informações precisas e detalhadas – quanto mais informação, melhor. - Business Analyst (BA)
Assim como o PO, também precisa entender o que os clientes esperam e é sua responsabilidade integrar a dimensão de negócios com a dimensão técnica de desenvolvimento. Parte do BA a criação de casos de uso, sendo que quanto maior for o entendimento e a clareza na escrita de cada caso e dos seus passos, maior será a assimilação por parte dos developers, o que irá garantir um desenvolvimento extremamente alinhado com as expectativas do cliente. - UX/UI Designer
É o “mago” que começa a dar vida aos sonhos. Parte dele a criação de protótipos que garantam a marca e a identidade do produto, além de apresentar algo agradável, inovador e marcante na experiência do cliente. É nesse ponto que o cliente se encanta, seja pela simplicidade e inovação, seja pela facilidade de utilizar o software. - Especialista em Quality Assurance (QA) / Tester
Executa um dos papéis mais importantes neste flow, que é o de garantir um produto com o mínimo de erros possível, através de testes que visam simular como o cliente pensa nos mais diversos cenários, seja de forma manual ou automatizada. O QA é aquele que, após uma longa e extensa bateria de testes, pode dar o veredito sobre se o produto está pronto, ou não, para chegar à mão do cliente.
Além destes personagens principais, não poderia deixar de citar também os Developers de Back-end e Front-end, os Arquitetos, os Site Reliability Engineers (SRE) e outros mais, que atuam nos bastidores e impõem, com base nas informações transmitidas pelos membros acima, seu background tecnológico para garantir aplicações leves e rápidas.
Veja que o processo de desenvolvimento de software vai muito além de ouvir o cliente e logo desenvolver – é necessário passar por alguns “filtros” que buscam explorar possibilidades para que o produto supere as expectativas dos clientes e, para isso, a comunicação precisa de ser a mais simples e clara possível.
Metodologia e processos Agile
Muito bem, já vimos quem são os personagens e agora precisamos entender como “conectá-los”. Para isso, precisamos abordar uma metodologia extremamente eficiente e bem conhecida no mundo do desenvolvimento de software: o Manifesto Agile. Trata-se de um documento que, ao longo dos anos, se tornou a bíblia do desenvolvimento Agile e que é sustentado por quatro valores essenciais:
- Indivíduos e interações acima de processos e ferramentas
Manter a comunicação ao longo do processo de desenvolvimento de software é extremamente importante para diminuir possíveis problemas e aproximar as pessoas. Ferramentas e processos são importantes, mas devem ser usados de forma pragmática. - Software funcionando é melhor que documentação abrangente
Um software em pleno funcionamento é bem mais importante do que seguir à risca o que está no planeamento, até porque um software funcionando e sem erros é o melhor indicativo de que foi realizado um excelente trabalho. Os clientes pagam pelo resultado e não pelo bem elaborado plano que pode nunca vir a sair do papel. - Colaboração com o cliente acima da negociação de contratos
O cliente deve jogar no nosso time e sempre como titular. O propósito desta relação é a colaboração, pois assim como uma equipa joga em prol de um objetivo comum, também nós devemos fazer com que nossas decisões estejam inteiramente alinhadas com os objetivos do cliente. - Responder a mudanças ao invés de seguir um plano
Utilizar os feedbacks recebidos durante o processo, junto com a análise do cenário, são pontos essenciais para darmos respostas rápidas sobre o rumo das operações envolvidas. Porém, isto não nos isenta de termos um plano, que deve estar pronto para toda e qualquer mudança.
Dentro da metodologia Agile, temos diversos frameworks que nos auxiliam neste processo de desenvolvimento mais fluido. De entre eles destacam-se:
Scrum
Com um nome derivado dos conceitos de equipe de rugby, o Scrum é uma abordagem que auxilia na estruturação da equipa, definindo papéis e comportamentos através de seus três artefatos: o backlog do produto, o backlog do sprint e o incremento do produto. Brevemente explicando:
- Backlog do produto
É a lista dinâmica de funções, requisitos, ajustes e correções que atua como um preview para backlog do sprint. - Backlog do sprint
Antes de mais, sprint é o termo utilizado para definir o ciclo de desenvolvimento do produto, que geralmente é de 30 dias, sempre com o objetivo de entregar algo que agregue valor ao cliente. Assim, o backlog do sprint é a lista de entregáveis – casos de uso e correções de bugs – selecionada pela equipe para serem entregues no decorrer do sprint. - Incremento do produto
Muitas vezes identificado como “Done” (ou “Concluído”), o incremento é o que foi finalizado e está pronto para a próxima release do produto.
Para que todo este processo funcione, é necessário que alguns ritos – conhecidos como “cerimônias” – sejam realizados, de forma que todas as “engrenagens” estejam alinhadas e em perfeito funcionamento. De entre as cerimônias temos: Planning, Daily, Review e Retrospective:
- Planning
É a reunião em que todos os personagens citados anteriormente se reúnem para definir os itens a serem trabalhados ao longo do sprint, baseando-se nas prioridades de cada item. - Daily
São encontros de 15 minutos que acontecem todos os dias da sprint corrente. A ideia é discutir o progresso, impedimentos ou qualquer outro ponto que possa afetar a entrega. - Review
É uma reunião onde todos os membros apresentam o que foi realizado no último ciclo e, com base no veredito do PO, é oficializado o que entrará na lista do próximo review. - Retrospective
É o momento em que o time se reúne para analisar os pontos positivos e negativos que ocorreram no último ciclo de desenvolvimento e, a partir daí, seguir com melhorias.
Kanban
Metodologia que também faz parte do universo Agile e tem como objetivo monitorizar e controlar o processo de desenvolvimento. Com esta abordagem podemos acompanhar o status de cada tarefa e garantir a eficiência na entrega, visto que cada personagem pode atuar na mesma tarefa em momentos diferentes
Uma excelente ferramenta para o Kanban e amplamente utilizada é o Jira, que facilita todo este processo e ainda garante outros benefícios como o suporte a testes automatizados, controle de CI/CD (Continuous Integration/Continuous Delivery), entre outros.
O fluxo de trabalho Kanban funciona da seguinte forma:
- Com a definição de stages (fases) para determinada task (tarefa), e após a criação dos requisitos por parte do BA e dos mockups criados pelo UX, a tarefa sai do backlog e passa para o estado por “Em desenvolvimento”, onde atuam os developers back e front-end;
- Segue depois para o estado “Em Testes”, onde os QA realizam a bateria de testes;
- Por fim, chega a “Finished”, onde após a review o PO pode mover para “Done” tudo que estiver conforme esperado e pronto para ser implementado.
Apesar de este processo parecer um tanto moroso, vimos que ele é bem detalhado e que faz com que todos os membros do time interajam. Isto facilita o entendimento do que está sendo feito, além de permitir saber o status dos entregáveis e garantir que a cada novo sprint o time esteja mais forte e preparado, baseando-se nos feedbacks da retrospetiva.
Conclusão
Ao longo deste artigo vimos como uma comunicação bem clara e precisa pode influenciar o bom e rápido desenvolvimento de um software. Vale lembrar que a interação precisa de ser constante ao longo de toda a construção de um software (como prega a metodologia Agile), sendo que quanto mais fácil for de interpretar, melhor será o resultado e a entrega.