Em toda relação de prestação de serviços, algumas vezes é impossível garantir um determinado resultado antecipadamente, e a confiança é fundamental para a evolução da parceria. Se você vai ao médico, por exemplo, ele vai analisar seus exames, receitar alguns medicamentos e acompanhar o desenvolvimento para decidir os próximos passos. Você confia que ele saberá o que fazer e te curar, mas ele só pode garantir o melhor tratamento possível, não a cura. Assim como em um processo legal, no qual os advogados envolvidos prometem buscar os interesses de seu cliente, mas não podem garantir o melhor resultado. Ou ainda no caso de um gestor de fundo de investimento, que pode, no máximo, apresentar um retrospecto e prometer empenho para que o sucesso se repita, mas não pode garantir o lucro.
O curioso é que na área de serviços de software a quantidade de incertezas e de fatores que fogem ao controle é a mesma da medicina, advocacia ou do mercado financeiro, mas a maioria das pessoas ainda acredita que, por ser tecnologia e uma área exata, é possível garantir todo o horizonte e os resultados do projeto. Normalmente, o histórico de sucessos e a reputação do advogado, médico ou fundo são suficientes para estabelecer uma relação de confiança entre as partes, o que não acontece na área de software.
Conforme estudo realizado pelo Standish Group, o índice de sucesso de projetos ágeis chega a ser três vezes maior do que o de projetos waterfall (neste modelo, as fases do projeto são divididas e as entregas são feitas ao final de cada fase). O uso da metodologia de lean innovation (processo de consultoria para identificar os pontos fortes e as oportunidades dentro do processo de inovação atual e modelo de negócio de uma empresa) também oferece um pouco mais de chance de sucesso, apesar de não termos métricas oficiais, apenas evidências empíricas. Se todas as partes envolvidas assumirem desde o início que há incertezas e se prepararem para isso, o sucesso é muito mais provável. Ou, no pior caso, eventuais fracassos serão bem mais rápidos e menos dolorosos.
Normalmente, são três as variáveis envolvidas em um projeto de software: qualidade, escopo e custo. Podemos garantir realmente duas delas, mas nunca as três. Isso porque a qualidade não é negociável, e o custo deve ficar dentro do orçamento. A solução, então, é ter um escopo flexível, orientado ao cliente e não ao contrato. Traçando um paralelo, é como um Banco Central, que só pode controlar duas das variáveis taxa de juros, base monetária (inflação) e taxa de câmbio. O banco não pode garantir um valor determinado para as três, uma delas com certeza vai flutuar.
O estado do conhecimento das últimas décadas mostra que o sucesso em projetos de software é construído a partir de uma abordagem empírica, um bom time, uma relação transparente e de confiança com o cliente e da participação integral dos envolvidos. Apesar disso, a norma ainda é o uso de desenvolvimento em cascata, no qual pessoas preferem assinar contratos inviáveis, caros e com três vezes menos chance de sucesso. A busca de um hedge em todas as dimensões elimina por construção o possível retorno do ativo.
Contradizer a academia, a indústria e as experiências empíricas é um autoengano que deixa e continuará deixando o Brasil fora de todas as referências no que diz respeito a desenvolvimento de software. Considerando o atual contexto de apagão de mão de obra e que, enquanto na Islândia o ensino básico oferece linguagens de programação no Brasil as crianças mal sabem português e matemática, não podemos nos dar ao luxo de fazer software errado.
*Fernando de la Riva, diretor-executivo da Concrete Solutions.