Análise de maturidade em software "Frankenstein"

28 de junho de 2013 Por Ramon Durães

imageNós já desenvolvemos software há muitos anos, onde pudemos acompanhar grandes ciclos de evolução da tecnologia, deixando para o passado o famoso cartão perfurado. No entanto, algumas coisas ainda permanecem como antes mesmo com inúmeras inovações e novos caminhos. Ainda hoje diversos projetos são levados ao fracasso ou seguem caminhos dificultosos por falta de modernização e não me refiro à simples troca de compilador e, sim, técnicas ultrapassadas e software construído sem a mínima preocupação com qualidade, que vem gerando um efeito que chamamos de software “Frankenstein”.

Para ter uma visão da forma com que produzimos software, eu lhe convido a comparar com uma fábrica de biscoitos. Quando se tem problema na produção e os biscoitos saem torrados, portanto, não passando pelo controle de qualidade, eles são descartados. Já com o software é tratado de forma complementarmente diferente. Mesmo com problema na produção é levado ao cliente que é obrigado a consumir um produto “avariado” e, após ciclos de reclamações indo e voltando, chega-se uma versão “remendada” do software ao cliente.

Esse modelo moveu a indústria de software por muitos anos, e não é difícil de encontrar algo parecido bem próximo  a você. Criou-se o princípio do erro consciente e o entendimento que machucar o cliente de leve não traz problema, provocando com isso um grande desgaste nos projetos que não são entregues nos prazos, nas pessoas que se desgastam e no próprio patrocinador do projeto, que devido a tantos ciclos recorrentes se desgasta e desacredita no projeto.

A falta de preocupação em produzir software funcionando impulsionou a indústria em um momento do mercado onde o cliente não tinha opções. Era um momento sem concorrência e nem meios de aprender e obter informações. Hoje, o consumidor tem experiência e aplicativos, estando cada vez mais exigente, conectado e influenciando a evolução do produto.

Baseado nas experiências em projetos nos últimos 15 anos, eu elaborei um pequeno questionário para que você possa fazer uma análise e levantar o nível do seu projeto.

DescriçãoPontos
Você tem módulos no projeto que apenas uma pessoa dá manutenção?5

Cada nova manutenção provoca medo em todos do time?

3

A cada mudança há um enorme retrabalho?

5

Alto índice de código duplicado e baixa reutilização?

3
Prazos nunca são cumpridos?1
Longo tempo para liberar versões?3

Backlog de trabalho nunca é finalizado ocasionando demora em atender cliente?

5

Ao corrigir um bug aparecem outros problemas?

3
O cliente pede uma correção e recebe novas funcionalidades?1
Turnover alto de pessoas?1
Dificuldade de relacionamento Cliente X Equipe X Empresa que não confiam no software?3
Quanto mais pessoas entram no projeto mais problemas aparecem?5
Todos se dedicam e trabalham intensamente não enxergando as entregas?3

Várias versões do software duplicadas?

1
A liberação de versão é manual na máquina do desenvolvedor?1

Dificuldade em compartilhar serviços / API / SDK ?

3
Tecnologia utilizada está desatualizada ?1
Dependência de componentes ultrapassados ?3
Dificuldade em escalar desenvolvimento para outras pessoas ?5
Regras de negócio em banco de dados ?3
Código fonte atual é o mesmo de produção ?1
Uso abundante de Stored Procedures ?1

Problemas devido a banco de dados mal projetado, tabelas duplicadas, ausência de integridade ?

3

Some todos os pontos conforme os itens que baterem no seu projeto e calcule o seu nível “Frankenstein”.

PontuaçãoNível
Até 5 pontosProblemático
De 6 a 10 pontosCritico
Mais de 10 pontosCaos

Agora que você já tem uma visão do nível de maturidade do seu software será mais fácil encontrar respostas a questionamentos do tipo:  “Antigamente eu e mais outra pessoa construíamos o software e hoje nem com 30 pessoas conseguimos manter”. Frase muito comum dita no mercado de software.

Todas as empresas e produtos tem um ciclo de adoção da tecnologia, iniciando nos visionários que acreditam na sua ideia até o mercado que procura adotar o seu produto depois da comprovação de valor comprovando que o produto  atravessou o abismo conforme Geoffrey Moore definiu em seu livro “Crossing the Chasm” o conceito “Technology Adoption Lifecyle”. Porém, chega um determinando momento que o crescimento se limita e a concorrência se torna mais próxima, sendo necessário inovar.

É no momento da inovação que o efeito “Frankenstein” no software torna-se mais evidente e mais caro, uma vez que as empresas deixam de investir em inovação para gastar com sustentação de projetos em investimentos cíclicos e recorrentes, minando qualquer iniciativa de renovar. Em estudo do Forrester foi comprovado que gasta-se cerca de 30x mais para manter o software por falta de qualidade.

É o momento de repensar o nosso formato atual de desenvolvimento de software. Participe nos comentários e compartilhe com os seus contatos.

[],
Ramon Durães
MVP, Visual Studio ALM
PSM, PSD, CSM

Para consultoria especializada em projetos de software entre em contato.