Como qualquer setor industrializado, a produção de software enfrenta os mesmos desafios de ganhar produtividade, reduzir custos, produzir inovação e garantir qualidade. No pós-guerra, o pensamento enxuto, o Lean Thinking, possibilitou aos segmentos, como a indústria automotiva, alcançar novos patamares produtivos. Por que não possibilitaria o mesmo à produção de software?
Redução de desperdícios, melhoria contínua e produção puxada são ações que também fazem todo o sentido na produção de software. Por isso, empresas, organizações de qualidade de software, vêm consolidando o pensamento Lean para o mundo de produção da tecnologia, em especial, de software e “traduziram” Lean Thinking em 7 princípios relacionados a software:
Neste post:
Desperdício é tudo aquilo que não traz valor para um cliente final, um usuário e acaba, ao contrário, gerando custo e esforço inútil. Em matéria de software, por exemplo, são:
Alguns exemplos de onde estão os desperdícios que o pensamento Lean pretende erradicar no processo de desenvolvimento de software:
Na Gerência de Requisitos:
Quando se estabelece previamente e muito antecipadamente requisitos, como nas práticas tradicionais de desenvolvimento de software, a chance de se desenvolver requisitos que já foram superados são enormes.
A bem da verdade, essa é uma questão que transcende os requisitos e acaba na codificação. Há cerca de 5 anos, o Standish Group dizia no seu “Chaos Report” que apenas 7% das funcionalidades escritas em um software comercial nos EUA eram utilizadas sempre e que 45% das funcionalidades nunca eram usadas.
A equação, porém, é simples: se escreve código demais, gerando complexidade, mais necessidades de testes; volumes grandes de documentação, necessidades maiores de manutenção… Custo… Custo…. Custo
Na Estruturação dos Processos:
A pergunta deve ser sempre a mesma: tudo isso é realmente necessário? Passos a mais é burocracia. Desperdício de tempo e de dinheiro. E muito provavelmente insatisfação do usuário.
Outro pilar fundamental é a forma de organizar e gerir a equipe. É precioso apostar num ambiente com autonomia, no sentido de possibilitar que a equipe se organize e se auto-oriente. As reflexões que você deve fazer:
1) Todo o time se envolve suficientemente nas análises, discussões e decisões?
2) A sinergia, o modus operandi do time favorece o desenvolvimento das pessoas?
3) Os softwares, os produtos refletem o pensamento e o estilo de toda a equipe?
4) Atuamos muito no micro-gerenciamento? Ou praticamos auto-gestão e feedback?
Só um enunciado bastaria: entregar software de maior valor, de forma rápida e contínua significa maximizar o ROI (Return Of Investiment) do projeto. Entregar mais rápido significa também colher feedback; significa errar mais cedo e aprender com os erros. Em resumo, o desenvolvimento de um software precisa ser um processo iterativo.