Taiichi Ohno chamou o Sistema toyota de Produção um sistema de gerenciamento para “a eliminação absoluta deo desperdício”. Quando perguntado como funcionava ele dizia: “Tudo o que estamos fazendo é olhar para a linha de tempo do momento que o cliente nos faz o pedido até o momento que recebemos o dinheiro. E estamos reduzindo a linha de tempo ao removermos os desperdícios de acréscimos sem valor”. Em suma, esta é a essência do que é a produção lean. No desenvolvimento lean de software, o objetivo é eliminar o desperdício é o mesmo, as o início e o final da linha de tempo podem ser modificados. O relógio é iniciado quando recebe um pedido de resolver uma necessidade do clientes (o que quer que significa na sua organização) e para o relógio quando o software visando aquela necessidade é implantado. O desenvolvimento lean de software tem como foco a redução da linha do tempo ao remover os desperdícios de acréscimos sem valor.
Para eliminar o desperdício, primeiro você precisa reconhecê-lo. Uma vez que o desperdício é tudo o que não agrega valor, o primeiro passo para eliminá-lo é desenvolver um senso aguçado do que o valor realmente é. Não há melhor maneira de desenvolver um profundo conhecimento sobre o que os clientes realmente valorizarão do que quando eles começam a utilizar o software. No nosso ramo o valor tem o hábito de mudar porque, frequentimente, os clientes não sabem realmente o que querem. Além disso, quando eles veem o novo software em ação, sua idéia do que querem invariavelmente muda. Todavia, grandes organizações de desenvolvimento de software desenvolvem um profundo senso de valor do cliente e, continuamente, satisfazem seus clientes. Pense no Google; ele regular e repetidamente encanta clientes ao redor do mundo.
Uma vez que você tenha um bom entendimento do valor, o próximo passo é desenvolver a capacidade de realmente ver desperdício. Desperdício é qualquer coisa que interfere em entregar aos clientes aquilo que eles valorizam no tempo e no lugar em que isso gerará o maior valor. Qualquer coisa que façamos que não adicione valor ao cliente é despedício, e qualquer atraso que impeça o cliente de obter valor quando ele o deseha também é desperdício.
Na produção, o estoque é desperdício. Estoque deve ser manuseado, movido, guardado, monitorado e reabastecido. Isso não só custa tempo e esforço, mas também adiciona complexidade – um multiplicador de grande custo. Estoques se perdem, ficam obsoletos, escondem problemas de qualidade e estagnam dinheiro. Portanto, um dos objetivos da produção é ter o menor estoque possível.
O estoque em desenvolvimento de software equivale aos trabalhos parcialmente acabados. Um software parcialmente acabado tem todos os males de um estoque na produção: se perde, fica obsoleto, esconde problemas de qualidade e estagna dinheiro. Além disso, a maior parte do risco de desenvolvimento de software jaz em trabalhos parcialmente acabados.
Uma grande forma do desperdício no desenvolvimento de software é p churn (volatilidade, inquietação, necessidade de mundaça) sempre esta associado a grandes estoques de trabalho parcialmente acabado. Quando os requisitos são específicados muito antes da codificaçãom certamente eles mudarão. Quando os testes acontecem muito depois da codificação, o churn testar-e-corrigir é inevitável. Infelizmente, esses tipos de churn são apenas precursores de um churn ainda maior de atraso na integração (também conhecido com big-bang).
Entretanto, a maior fonte de desperdício no desenvolvimento de software são de longe as funcionalidades adicionais. Somente certa de 20% das funcionalidades e funções em um programa personalizado típico são usadas regularmente. Algo como dois terços delas raramente usadas. Não estamos falando de segurança necessária ou funcionalidades de segurança. Estamos falando de funcionalidades que realmente não eram necessárias em um primeiro momento. Existe um enorme custo para desenvolver funcionalidades adicionais em um sistema de software. Eleas acrescem uma complexidade ao código base do programa que eleva seu custo a uma taxa alarmante, tornando seu custo de manutenção cada vez mais caro e reduzindo drasticamente seu tempo de vida útil.