A natureza de desenvolver software

A geração de bom software não é um processo de produção; é um processo de desenvolvimento. Desenvolver é diferente de produzir. Desenvolver é como criar uma receita, enquanto que produzir é seguir os passos de uma receita pronta. São atividades diferentes. Desenvolver uma receita é um processo de aprendizado, de tentativa e erro. Quando um grande chefe cria um prato, ele não o cria de primeira. O prato primordial é resultado de um refinamento, de várias tentativas e variações sobre um tema, na busca do resultado perfeito.

Desenvolvimento
Projetar a receita
Produção
Produzir o prato
  • Qualidade é estar de acordo com o uso
  • Variações são boas
  • Iterações geram valor
  • Qualidade é estar de acordo com os requisitos
  • Variações são ruim
  • Iterações geram desperdício (re-trabalho)

Na Disneylândia, existem centenas de atores cujo único trabalho é fazer com que cada visitante tenha momentos maravilhosos. Os requisitos do que é um “momento maravilhoso” muda de visitante para visitante e o trabalho do ator é descobrir o que o visitante vê como experiência de qualidade e se certificar de que ele tenha essa experiência.

A visão de qualidade de serviço (e hoje software é serviço) leva em conta que cada cliente tem uma idéia diferente do que significa uma experiência de qualidade.

A diferença entre prover um serviço e produzir um produto é que, em serviços, atender a necessidade do cliente requer variações, enquanto que em linhas de produção variações são vistas como inimigas.

Problemas de software possuem várias soluções, em vários níveis, feitas por todos os membros do time. Não só os arquitetos estão envolvidos, mas todos os desenvolvedores. Escrever código envolve um entendimento profundo do problema, reconhecer padrões, experimentar várias abordagens, testar os resultados. Para isso, o melhor processo é aquele que consiste em ciclos curtos de aprendizado.

Fonte: Mary and Tom Poppendieck, Lean Software Development – An Agile Toolkit

Leave a Reply

Your email address will not be published. Required fields are marked *