Projetos de software: Como lidar com mudanças?

Prazos apertados, mudanças de última hora, software de qualidade duvidosa ou que não resolvem o problema que deveriam resolver. Quem é programador ou gerencia projetos de software já teve experiências ruins com itens dessa lista.

É importante perceber que parte dos problemas citados são condições do ambiente e não estão relacionados às práticas de equipes de desenvolvimento de software. Tempo curto e mudanças imprevistas estão atreladas às incertezas do mercado e, portanto, devem ser levados em conta por qualquer metodologia de projetos de softwares que escolhamos para nossas equipes.

Já que falamos em incertezas, a história da escolha do barco em que Amyr Klink atravessou a remo o oceano Atlântico é interessante, já que um fator externo de extrema importância a se considerar foi a possibilidade de tempestades em alto-mar. Não era possível prever se ocorreriam tempestades. Então havia duas possibilidades: construir uma grande embarcação que suplantasse as intempéries, como um transatlântico, ou construir um barco que se adaptasse às condições externas.

Se optasse por um embarcação grande, Klink não conseguiria operá-la sozinho quanto mais propelir o barco apenas com a força de seus braços. A solução foi construir um barco que pudesse capotar em caso de tempestade. Assim foi concebido o barco I.A.T

É certo que ao tombar em alto-mar não seria possível manter a rota planejada. Porém, seria possível, além da essencial adaptação às condições metereológicas, correção de rota assim que a tempestade passasse.

Traçando paralelo com projeto de software, também há duas formas de lidar com as mudanças no projeto. A primeira é aderir a processos complexos que contemplam gestão de mudança e de riscos como CMM e CMMi. Já a segunda consiste em implantar processo que se adapte ao ambiente, ainda que não se tenha total controle sobre a “rota” planejada como proposto por metodologias ágeis.

Outra forma de se ver o problema é do ponto de vista do triângulo da administração de projetos que é composto dos vértices tempo, custo e escopo. Porém, como escopo é resultado de tempo vezes os recursos (que compõem o custo) não é possível manter o tempo e custo com variação do escopo.

Assim,  a saída ágil é fixar tempo e custo e ao longo do projeto negociar o escopo para que o software entregue mais valor, atendendo às mudanças e imprevistos que ocorram ao longo do projeto. Para o programador, as metodologias ágeis trazem arcabouço para que ele abrace as mudanças, incentivando a preparação da arquitetura do sistema e impondo práticas de programação que diminuam o custo de mudança.

Já para o gestor, a agilidade transforma a atividade de cobrar tarefas e garantir exatidão nos documentos de requisitos para a prática de manter boa comunicação entre cliente e equipe e para o cultivo da cultura de melhoria contínua no time de desenvolvimento. Acima de tudo, os KPIs mudam e o sucesso é medido pela entrega de valor para o negócio.

Se você se interessou pelo assunto de metodologias ágeis, não deixe de saber mais sobre o curso de Metodologias Ágeis da Let’s Code.