Somos ágeis porque utilizamos Scrum”. Você provavelmente já deve ter ouvido isso, ou talvez algo semelhante para Kanban, Lean ou qualquer outra forma de trabalho ágil. A confusão mais comum que ocorre sobre esse assunto é considerar que “ágil” significa “rápido”, ou seja, entregar qualquer coisa o mais rápido possível. Entretanto, a agilidade está muito mais atrelada a fazer da forma certa (eficiência) o produto certo (eficácia). Isso é obtido através do foco nas pessoas envolvidas no processo, sejam elas quem irá desenvolver o produto/serviço ou quem o está demandando.
Mas por que, às vezes, as equipes não atingem os resultados esperados com o uso desta forma de trabalho?
Para que a equipe possa atingir os melhores resultados, é importante que os integrantes estejam engajados e focados em alinhar as práticas realizadas com os valores e princípios ágeis. As práticas ágeis são a forma de manifestar os princípios, definidos a partir dos valores, sendo que todos estes elementos são oriundos de um mindset (forma de pensar) ágil.
Os valores e princípios ágeis foram publicados em 2001, quando precursores da agilidade reuniram-se para estabelecer pontos em comum entre diferentes linhas de pensamento ágil. Deste encontro, surgiu o Manifesto para desenvolvimento ágil de software, o qual expõe quatro valores e doze princípios, disseminados até hoje na comunidade ágil.
Estes conceitos são facilmente adequados para utilização em outras áreas e contextos, mesmo que tenham sido criados a partir do ponto de vista de desenvolvimento de software.
Valores ágeis
Os valores representam certas prioridades na forma como indivíduos e organizações ágeis devem se portar. Os elementos menos priorizados não deixam de existir ou ser importantes, porém devem dar espaço para que no dia a dia seja dada maior atenção aos elementos priorizados. A seguir, são apresentados os quatro valores descritos pelo Manifesto Ágil.
Indivíduos e interações mais que processos e ferramentas
Processos e ferramentas podem ser importantes no dia a dia de trabalho, contudo, não se pode esquecer que as pessoas são a base, do início ao final do processo, para a entrega de um produto ou serviço. Assim, deve-se valorizar os indivíduos e as interações entre eles para poder atingir melhores resultados com o trabalho em equipe.
Software em funcionamento mais que documentação abrangente
Este valor ágil foca na entrega de um produto/serviço funcional ao cliente. Isto deve ser mais importante do que ter documentos enormes que indicam como o sistema se comportará. Ou seja, é mais válido entregar um software útil e funcional ao cliente do que entregar a documentação completa de como o produto funcionará quando estiver pronto e não entregar software algum.
Colaboração com o cliente mais que negociação de contratos
É mais valioso que a interação com o cliente seja colaborativa para a construção de um produto ou serviço que atenda às necessidades dos usuários do que apenas conversar com o cliente para negociação do contrato. Neste sentido, ressalta-se a importância de tornar o cliente parte do projeto, possibilitando o recebimento de feedbacks sobre o que foi desenvolvido.
Responder a mudanças mais que seguir um plano
No desenvolvimento de software, por tratar-se de um processo complexo, uma das únicas certezas é a mudança. Por isso, é preciso estar preparado para mudar de rumo durante o caminho com base nas sugestões recebidas do cliente e dos usuários. Ou seja, de nada adianta seguir um plano previamente estabelecido, se ao final o produto resultante não atenderá à necessidade do cliente.
Princípios ágeis
Os princípios regem o modelo de conduta da empresa, seja com seus clientes, colaboradores ou fornecedores. A seguir, são apresentados os doze princípios descritos pelo Manifesto Ágil.
1 – Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor
Quando realizada a entrega de um produto que representa valor aos usuários, aumenta-se a satisfação do cliente. Assim, reforça-se a ideia de que é investido tempo nas funcionalidades mais úteis, aumentando a confiabilidade do cliente em relação ao método de trabalho da empresa provedora do produto/serviço.
2 – Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas
É necessário ouvir atentamente à opinião das partes interessadas e dos usuários, mesmo que isso gere mudanças nas definições já realizadas para o projeto. Isto porque, satisfazendo às alterações nos requisitos, o produto final irá atender melhor às necessidades do usuário e o cliente pode aproveitar-se do produto/serviço como vantagem competitiva em relação aos seus concorrentes.
3 – Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos
Entregas contínuas facilitam a obtenção de feedbacks sobre o produto ou serviço, possibilitando também que o usuário final faça uso do que já foi desenvolvido. Inclusive, é possível que a entrega parcial realizada possa auxiliá-lo no dia-a-dia, otimizando suas tarefas antes mesmo da entrega do produto finalizado.
4 – Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto
Diferentes pontos de vista podem auxiliar na elaboração de um produto/serviço mais completo e que atenda à cenários variados. É imprescindível que pessoas que atuam em papéis distintos colaborem para a identificação, definição, construção e entrega dos requisitos relativos ao projeto em desenvolvimento.
5 – Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho
As pessoas são a base para o desenvolvimento de projetos, seja de um produto ou de um serviço. Para que estas pessoas possam dar o melhor de si, é fundamental a existência de um ambiente que proporcione os recursos e as interações necessários para obter sucesso. Desta forma, motiva-se as pessoas a almejarem a melhoria constante dos resultados apresentados, sem a necessidade de alguém cobrar por isso.
6 – O método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara
Mesmo na era da tecnologia, a maneira mais fiel de transmissão de informações entre pessoas é uma conversa presencial (ou, ao menos, cara a cara). Embora aplicativos de comunicação sejam muito úteis e facilitam a vida, muitas vezes as conversas por texto não conseguem transmitir a intenção das pessoas. Dependendo do conteúdo, a mensagem pode ser mal interpretada muito facilmente, podendo gerar conflitos desnecessários que irão atrapalhar o trabalho em equipe.
7 – Software funcional é a medida primária de progresso
Para verificar o nível de sucesso de uma metodologia de trabalho é necessário que sejam definidos indicativos para medir o progresso, principalmente quando adotado um novo método para trabalhar. Tratando-se do desenvolvimento de software, a medida mais importante neste sentido é o funcionamento do software. É imprescindível que o produto esteja funcional de acordo com os critérios estabelecidos para os requisitos do projeto, assim garantindo a confiança por parte do cliente.
8 – Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes
Por mais que hajam constantes mudanças, precisa-se manter um ritmo de desenvolvimento e feedback. O time deve constantemente desenvolver os requisitos planejados, enquanto os usuários devem constantemente experimentar e conceder feedbacks sobre as funcionalidades desenvolvidas. Assim, mantém-se um ciclo sustentável de desenvolvimento do produto/serviço. Nesse sentido, deve-se tomar cuidado ao recorrer a horas extras para atender a produção de um determinado produto/serviço, pois mesmo atingindo o objetivo, não se tem um ambiente sustentável, visto que os funcionários não poderão sempre fazer horas extras.
9 – Contínua atenção à excelência técnica e bom design, aumenta a agilidade
A atenção à arquitetura, design e usabilidade do sistema auxilia no uso do produto/serviço pelo usuário final, contribuindo para a diminuição de dúvidas e entendimentos incorretos em relação às funcionalidades do produto. A partir disto, a equipe pode dedicar-se mais ao desenvolvimento de novas funções ao invés de gastar apenas com a manutenção e suporte do que já existe.
10 – Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito
Por vezes, um projeto é iniciado com muitas ideias de funcionalidades que o produto resultante poderia ter. Algumas destas ideias, apesar de serem boas, podem não gerar um ganho relevante ao usuário final do produto. O feedback do cliente durante o processo de desenvolvimento, muitas vezes, ajuda o próprio usuário a identificar o que é e o que não é essencial ao produto. Com isso, pode-se focar os recursos nas funcionalidades que geram mais valor ao usuário.
11 – As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis
Assim como é importante a integração entre pessoas de negócio e desenvolvedores para identificar os requisitos mais úteis aos usuários finais, cabe ao time definir como irá se organizar para realizar o seu trabalho. Em times ágeis, não incentiva-se a existência de uma estrutura de comando e controle sobre os membros da equipe.
12 – Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo
As mudanças no contexto de desenvolvimento de software não ocorrem apenas em relação aos requisitos do projeto, mas também no ambiente do time. Situações como a mudança de integrantes, do local de trabalho, entre várias outras, podem afetar o funcionamento do time e processos que antes estavam funcionando podem deixar de ocorrer conforme esperado. Por isso, a cada ciclo de desenvolvimento, é recomendado que o time avalie seus processos, ferramentas, resultados e relações interpessoais. Assim, experimentam-se diferentes abordagens para resolução de problemas/conflitos, sem receio de testar e promover a mudança.
Conclusão
Na Rech, utilizamos Scrum nos times do setor de Pesquisa e Desenvolvimento desde 2015. A experiência tem sido ótima e temos percebido diversos resultados positivos! Durante estes 4 anos, já experimentamos muitas coisas, errando e acertando, e pudemos aprender muito também. Apesar disso, nunca nos acomodamos, pois acreditamos que sempre há algo que podemos melhorar!
A partir destes conceitos e reflexões, pudemos apresentar as diferentes características que representam o desenvolvimento ágil de software. Mas nem tudo está orientado apenas para software: é possível aplicar os métodos ágeis nas mais variadas áreas, inclusive na sua vida pessoal. Que tal você ou sua empresa experimentar também?
Autores: Scrum Masters Rech