Desenvolvimento de Software: Velocidade ou Qualidade?

O que é mais importante para você? O que é mais importante para sua empresa? O que seu superior responsável valoriza no desenvolvimento de software?

Entregar rápido ou entregar com qualidade?

Na teoria a maioria valoriza a qualidade, mas na prática, muitos poucos fazem acontecer. Existem empresas, desenvolvedores e vários gestores que nem questionam isso, sendo uma questão totalmente inexistente, ignorada e deixada a sorte do destino. Cada desenvolver, seja júnior, sênior e pleno faz o quem bem quer.

Doa a quem doer, hoje vou te contar a verdade desse descaso, te mostrando os efeitos colaterais desse fato em três esferas:

  1. na gestão do projeto
  2. na equipe de desenvolvimento
  3. nos clientes da da solução

1º Gestão

Vou te apresentar os números da gestão de uma empresa anonima que desenvolve software e que se enquadra nesse caso:

O gráfico acima mostra o números de desenvolvedores usadas para desenvolver 8 versões de um sistema. Começou com menos de 10 e terminou com 1.200 desenvolvedores. Tenho certeza que você vai concordar que esse crescimento deve ser uma indicação de sucesso significativo!

Agora, vamos analisar a produtividade da equipe no mesmo período de tempo, medido por linhas simples de código.

Claramente existe algo errado aqui. Mesmo que cada lançamento seja apoiado por um número cada vez maior de desenvolvedores, o crescimento do código parou na faixa de 7 mil.

Agora, segue um gráfico realmente assustador, a próxima figura mostra o custo de linha de código e sua mudança ao longo do tempo.

O que causou essa mudança notável na produtividade? Por que o código esta 40 vezes mais caro para produzir na versão 8 em oposição ao lançamento 1?

Do ponto de vista dos desenvolvedores, isso é tremendamente frustrante, porque todo mundo está trabalhando duro. Ninguém diminuiu seu esforço. E, no entanto, apesar de todos os seus heroísmos, horas extras e dedicação, sábados e domingos, a coisa simplesmente não acontece. Todo o esforço da equipe é consumido com o “gerenciamento da bagunça”. O trabalho é praticamente o mover a bagunça de um lugar para outro, e o próximo, e o próximo, para que possam adicionar mais um pequeno recurso.

Não se esqueça que, o mais importante nessa empresa é entregar a próxima nova funcionalidade…

Se você acha que é ruim, imagine o que esta imagem parece para quem esta bancando a conta:

A figura acima mostra dados da folha de pagamento no mesmo período. Esses números não são sustentáveis. Não importa quão rentável a empresa seja: essas curvas drenam catastroficamente o lucro do modelo de negócio e levar a empresa a um colapso financeiro. Qualquer gestor financeiro examinaria esses dois gráficos e saberia que a ação é necessária para evitar o desastre.

Mas que ação pode ser tomada? O que deu errado? O que causou esse declínio incrível na produtividade? O que os executivos podem fazer, além de culpar sua equipe de  desenvolvimento?

É isso que acontece quando as empresas valorizam mais a entrega do que a qualidade.

Chega um ponto no ciclo de vida da gestão do projeto de software que o custo da mudança fica bem mais caro que o beneficio ou ROI da manutenção.

O pior de tudo é ver que muitas empresas estão nesse patamar e não tem nem a capacidade de identificar isso, vivendo no prejuízo constante.

Você já viu uma “fabrica de software” quebrar? Ou um setor de desenvolvimento “in-house” ser totalmente desfeito? Eu já!

A medida da qualidade de um software é simplesmente a medida do esforço necessário para atender às mudanças da necessidades do cliente. Se esse esforço é baixo, e permanece baixo em todo a vida útil do sistema, a qualidade é boa. Se esse esforço cresce com cada nova versão, a qualidade é ruim. É simples assim.

2º Equipe

Mas mudando de assunto, você já deu manutenção em um sistema que foi feito sem qualidade? Gostou? Foi uma boa experiência?

  • Não se acha nada.
  • Não da para alterar partes internas.
  • Não da para mover estruturas.
  • Não da para substituir partes internas.
  • Quando se tenta alterar um parte, quebra outra.
  • O desenvolver fica cansado, estressado e infeliz.
  • Nenhum desenvolvedor quer assumir uma mudança ou mexer no sistema.
  • Não existe controle, confiança ou segurança.
  • Alguns desenvolvedores preferem sair da empresa a viver nesse ambiente.
  • Alguns desenvolvedores preferem desistir de um novo emprego quando veem que vão entrar nesse barco.

A pior coisa que existe no desenvolvimento de software é você dar manutenção em um sistema tudo bagunçado que não foi você que fez.

Você já passou por isso? Já sentiu na pele esses efeitos?

3º Cliente

Você sabe a opinião de usuários finais que fazem uso desse tipo de sistema?

  • O sistema não atende as mudanças de negócios.
  • A solução não é competitiva.
  • A solução não é estratégica pois sempre chega atrasada.
  • Novas versões são um terror, por que já sabem que vai gerar erros ou quebrar partes não relacionadas.
  • O sistema não presta…
  • A equipe responsável é incompetente.
  • O setor de desenvolvimento é considerado como “despesa” e não como “estratégico” para negócio.

Conclusão

Qualquer um pode fazer um software, um adolescente, um estagiário, um universitário e etc. Mas fazer um bom sistema não!

Fazer um sistema de qualidade é outra questão. É difícil, precisa de conhecimento e habilidades que a maioria dos programadores não tem tempo de desenvolver. Requer um nível de disciplina e dedicação que a maioria da empresas não valorizam em fazer. Principalmente, é preciso uma paixão pelo artesanato e o desejo de ser profissional. E quando você faz um software com qualidade, algo mágico acontece:

  • Você não precisa de centenas de programadores para mantê-lo funcionando.
  • Você não precisa de documentos massivos de requisitos e enormes sistemas de rastreamento de problemas.
  • Você não precisa de equipes de programação 24/7.
  • Quando o software é feito corretamente, requer uma fração dos recursos humanos para criar e manter.
  • As mudanças são simples e rápidas. Os defeitos são poucos e distantes entre.
  • O esforço é minimizado e a funcionalidade e a flexibilidade são maximizadas.

Mudança de Paradigma

O que eu tenho que fazer para entregar um software com qualidade?

Mude o paradigma: para de focar só na entrega e coloque a qualidade no mesmo patamar como premissa de projeto!

Na prática, como eu faço isso?

Na engenharia de software: Qualidade = Organização = Práticas, Diretrizes, Valores tem um único nome = ARQUITETURA DE SOFTWARE!

O objetivo da arquitetura de software é minimizar os recursos humanos necessários para construir e manter o sistema requerido.

Arquiteto de Software

Esse é o principal papel do arquiteto de software nas empresas, lutar com todas as forças e recursos possíveis para não deixar isso acontecer. Gostaria de entrar nessa luta comigo? Segue sugestões de cursos:

Vamos que vamos, boa semana!

“Abrão creu em Deus, o SENHOR, e por isso o SENHOR o aceitou.” Gênesis 15:6

Anúncios