Lean Software Development – 2003
Mary Poppendieck e Tom Poppendieck
Lean ou Toyota Production System é uma metodologia desenvolvida pela Toyota com foco na eliminação de desperdícios, velocidade de processos, qualidade e cadeia de valor.
Idealizado e implementado na Toyta no Japão após a segunda guerra mundial por Taiichi Ohno (1912 – 1990), então executivo da empresa, ficou conhecido como LEAN MANUFACTURING.
- Taiichi Ohno: Fluxo “Just-In-Time” – Complexidade vs. Economia de Escala / Autonomation – “Stop-the-Line”
- Shigeo Shingo: Produção sem estoque – Trabalho organizado em tarefas pequenas, Zero Inspeções – “Mistake-proof”
Lean possui uma abordagem empírica, iniciando por construir um conceito de produto de alto nível, realizando entregas iterativo-incrementais, realizando feedbacks constantes, que permitem que ajustes sejam feitos para uma contínua evolução do produto, até alcançar o resultado esperado.
“Ter as coisas certas no lugar e hora certa, desde a primeira vez, enquanto elimina-se o desperdício, estando sempre aberto a mudanças”.
O termo Lean Software Development teve sua origem em 2003 com a publicação do livro homônimo de Tom e Mary Poppendieck, quando apresentaram como aplicar seus princípios no desenvolvimento de software:
1. Elimine Desperdícios
“Desperdício é tudo aquilo que não agrega valor ao cliente” — Taiichi Ohno:
– Trabalho incompleto (artefatos inacabados)
– Processos a mais (burocracia ou gerenciamento desnecessário)
– Funcionalidades a mais (complexidade desnecessária)
– Troca de tarefas (sincronizar código novo e manutenção)
– Redução de Handoffs (transferência de responsabilidade)
– Atrasos (decisões a cada 15 minutos e contornos)
– Defeitos (TDD é investimento)
2. Inclua a Qualidade no Processo
Não deixe os testes para o final, evite-os desde antes do início. – “Inspecionar para prevenir defeitos é bom; Inspecionar para encontrar defeitos é desperdício” — Shigeo Shingo

3. Crie Conhecimento – Incentive a Gestão do Conhecimento:

4. Adie Comprometimentos (Decisões irreversíveis tomadas o mais tarde possível – last responsible moment)
Em uma recente palestra que assisti de um arquiteto de software do Google, ele foi enfático em dizer que tentar antecipar decisões é um erro, estas devem ser tomadas o mais adiante possível, posto que teremos informações mais precisas com o andamento do projeto … Decididamente, fazer isso é uma arte ! 🙂

5. Entregue Rápido – “A moral da história é que devemos encontrar uma maneira de entregar software tão rápido, que nossos clientes não tenham tempo de mudar de idéia” — Mary Poppendieck
Um fluxo de entrega contínua tem o ciclo completo a cada User Story, permitindo que após o desenvolvimento com testes automatizados tenham mínimo delay para entrega em produção – continuous delivery:

6. Respeite as Pessoas – “A verdadeira inovação da Toyota é sua habilidade em usufruir da inteligência dos trabalhores comuns” — Gary Hamel
7. Otimize o Todo -É preciso estar atento a todo o processo e as causas que devem ser trabalhadas para a melhoria, com foco métricas adequadas, conhecimento da cadeia de valor e da satisfação do cliente.
Em uma palestra em 2011 sobre o modelo de produção TOYOTA, marcou uma frase muito legal deles, mais ou menos assim – “Quanto mais os outros vem à Toyota para fotografar e registrar o processo atual para tentar copiá-lo, mais diferentes de nós eles ficam, pois o diferencial não esta no processo, mas nas pessoas!”.