Olá! havia algum tempo que não dedicava um tempo para escrever algo por aqui. E como atualmente estou como integrante de um Squad Agile no cliente onde presto serviço, gostaria de compartilhar um pouquinho da minha experiência prática com vocês sobre desenvolvimento ágil, de forma bem genérica.
Atualmente estou envolvido no desenvolvimento de um robô que faz abertura de uma mudança no BMC Remedy e respectivamente gera todas as tarefas do ciclo de vida da mudança. Logo que entrei neste projeto ficou muito claro quais os requisitos e objetivos que eram esperados para a entrega final. Porém empregaríamos o desenvolvimento ágil neste projeto e a mentalidade da forma como entregamos um produto, ou resultado final, muda e muitas coisas boas acontecem.
Mas o que é desenvolvimento ágil?
O desenvolvimento ágil de software, ou Agile, é uma coleção de metodologias usadas para gerenciar equipes de desenvolvedores. Defende o planejamento adaptativo, o desenvolvimento evolutivo, a entrega antecipada e a melhoria contínua, além de incentivar uma resposta rápida e flexível à mudança.
Nesse modelo pessoas e comunicação são consideradas mais importantes que ferramentas e processos.
O Agile enfatiza a pergunta aos usuários finais o que eles querem e mostra frequentemente a eles demos do produto à medida que ele é desenvolvido. Isso contrasta com a abordagem "Waterfall", o desenvolvimento orientado por especificação e o que os profissionais do Agile chamam de "Design inicial grande". Nessas abordagens, os recursos são planejados e orçados antes do início do desenvolvimento.
Com o Agile, a ênfase está na “agilidade” - poder responder rapidamente às necessidades dos usuários e outras circunstâncias em mudança.
É muito importante para os iniciantes em desenvolvimento ágil, e até mesmo aqueles que já tem uma vivência com o assunto, sempre revisitar o Manifesto Ágil para fixação de alguns conceitos.
Como funciona isso na prática?
Voltando ao nosso projeto é importante destacar que aplicamos SCRUM como metodologia ágil, e assim explicar como organizamos as atividades e também apresentar alguns termos utilizados quando usamos essa metodologia ágil.
Dividimos as etapas do projeto em pequenas entregas, o que no jargão do desenvolvimento ágil chamamos de sprint's. Antes de cada sprint definimos junto com o usuário ou demandante o que será o resultado final de cada entrega, ou sprint. Sempre pensando em funcionalidades mínimas e simples, mas que no final entregam em soma um resultado final totalmente alinhado as necessidades e expectativas do usuário demandante.
Neste cenário foi me foi solicitado criar um serviço com linguagem de programação Java que conseguisse acessar o BMC Remedy via REST API e na sequência realizasse um registro de mudança com parâmetros mínimos pré-definidos.
As etapas ficaram divididas mais ou menos assim:
Produto | Evidência de Entrega / Resultado Final | |
1 | Robô Acessa | Programa java acessando o BMC Remedy via API por meio de token adquirido com usuário e senha. |
2 | Robô Escreve | Programa java registra uma nova mudança no BMC Remedy via API por meio de token. |
3 | Robô Recebe Entradas | Programa java recebe parâmetros de um emissor externo para realizar o registro no BMC Remedy. |
4 | Robô Emite Saídas | Programa java recebe resultados de todas as interações com BMC Remedy e emite respostas para o emissor externo. |
Observe que cada sprint gera entregáveis que serão sempre validados pelo demandante. Esta dinâmica de trabalho, gerando entregas, geralmente é curta o que dá uma dinâmica muito boa para os projetos tanto do ponto vista de prazo como de entrega de funcionalidades a todo tempo.
Quais as vantagens?
Usando o método tradicional "Waterfall" para gerenciar projetos de desenvolvimento de software já vivenciei algumas experiências como: definição de atividades desnecessárias, prazos longos para atividades simples, priorização de atividades de baixa relevância para o resultado final esperado, mudança de visão do demandante a respeito dos processos ou cenário que geram a demanda, e o pior de todos eles, entregar ao final um produto ou resultado que atende parcialmente, ou não atende em nada as necessidades e expectativas do cliente (usuário ou demandante).
Como no modelo ágil quebramos a entrega em etapas (ciclos ou sprints) permitimos um cenário onde cada funcionalidade ou detalhe é discutido e validado entre os envolvidos. Isso nos permite ter um melhor controle e certeza para todas as partes sobre o que está sendo feito e que de fato ao final o nosso resultado será satisfatórios a todos os anseios criados.
Conclusão
Desenvolvimento Ágil é extremamente flexível e os projetos que exibem características dinâmicas beneficiarão desse processo, pois irá descobrir que os gerentes de projetos que trabalham neste ambiente tratam metas como “sprints”; o objetivo é adaptar-se continuamente às mudanças abruptas do feedback do cliente. É mais adequado para pequenos projetos de software constituídos por uma equipe altamente colaborativa ou um projeto que requeira iteração frequente.
Créditos
Photo by You X Ventures on Unsplash