O que é Desperdício?
Desperdício(Waste) é tudo aquilo que não adiciona valor a um produto, valor este que deve ser percebido pelo usuário.

Se um componente de software não utilizado usuário é mantido no sistema, isto é desperdício. Se um ciclo de desenvolvimento de software se esforça para levantar um livro de requisitos que não é lido, isto é desperdício. Se os desenvolvedores produzem mais funcionalidades que o imediatamente necessário, isto é desperdício. Em desenvolvimento de software, transpor o trabalho entre equipes é desperdício.
Para o modelo Lean, o ideal é encontrar o que o cliente deseja, e então criar ou entregar exatamente o que ele necessita, virtualmente no exato momento da solicitação.
Qualquer coisa que entre no caminho de rapidamente satisfazer uma necessidade do cliente é considerado desperdício!

Encontrando desperdício

Por Mary Poppendieck: Eliminate Waste

Os sete desperdícios do Desenvolvimento de Software

Trabalho Particialmente Finalizado
Você deve possuir uma vaga idéia de como o sistema funcionará. Pode até ter uma noção de requisitos de negócio e condições de sucesso para uma funcionalidade. Quem sabe até mesmo algum código produzido.
Entretando, equanto este código não estiver integrado a sua base de código, tiver sido validado e aceito por seu usuário, não há como prever o seu comportamento. Funcionalidades pela metade apenas atravancam o caminho para trabalhos que poderiam ser feitos. Tornando-se facilmente obsoleto, trabalho parcionalmente concluído é pior do que trabalho nenhum… Funcionalidades e códigos parcialmente finalizados ampliam a complexidade de seu sistema, e amplificam os custos de manutenção de sua aplicação.

Processos Extras
Você já se perguntou se todo o papel utilizado é realmente necessário? Algum procedimentos para desenvolvimento de software requerem papeis para serem assinados por usuários, fornecendo rastreamento e permitindo a aprovação para uma mudança. Já verificou se o cliente realmente acha estes procedimentos valiosos? O fato de um documento ser um artefato de software não o torna valioso. Se você tem que esperar que um documento seja produzido para que você inicie o seu trabalho, reavalie a real necessidade de tal documento, e porque não, proponha mudanças.

Funcionalidades a mais
Pode parecer ótimo entregar ao cliente mais funcionalidades do que ele está esperando… pegá-lo de supresa, e supreendê-lo… este é o desperdício mais śerio. Mais funcionalidades significa: Mais código para ser mantido. Mais testes para serem realizados. Mais documentos de especificação para serem criados. Mais conteúdo para gerar documentação. Mais bugs para aparecerem no sistema… enfim: jogar dinheiro no lixo… ainda mais se você pensar que 80% do total de funcionalidades de um sistema simplesmente não são utilizadas.

Troca de tarefas
Organizar pessoas em múltiplos projetos é outra forma de desperdício. Por ser uma atividade essencialmente intelectual, é necessário, toda vez que ocorrer a troca entre tarefas de projetos diferentes, que o desenvolvedores foque-se em algo completamente novo. Contexto de projeto diferentes, realidades diferentes, procedimentos muitas vezes diferentes…
O tempo que ele levará para estar realmente produtivo em cada projeto reduzirá muito! Sem contar que, normalmente, ocorrerá uma guerra de interesses entre os projetos pela atenção do desenvolvedor…
Minha vó já dizia: fazer muitas coisas ao mesmo tempo é um pretexto para não finalizar nenhuma

Espera
O maior ponto de desperdício em desenvolvimento de software é esperar para que algo seja produzido. Esperas em iniciar projetos, realizar testes, aguardar o levantamento de requisitos detalhistas, desenvolver uma funcionalidade são consideradas desperdício.
Atrasos distanciam seu usuário de receber um produto que satisfaça suas necessidades. Em muitos casos, atrasos são apenas a ponta do iceberg para problemas muito maiores. Em ambientes e mercados muito competitivos, atrasos e esperas podem significar milhões de investimento perdidos.
Poucos consideram custos realicionados a participação do mercado como sendo influenciada por atrasos… mas os principais líderes do mercado atualmente foram os pioneiros em seus nichos

Movimento
Desenvolvimento de software é uma atividade que demanda muita concentração, e interrupções podem ser desastrosas no trabalho realizado. Quanto tempo um desenvolvedor leva para encontrar uma informação? Questões sobre requisitos de negócio ou informações técnicas levam quanto tempo para serem respondidas?
Documentos que transitam entre setores também são desperdícios. Quanto mais pontos um documento passar para iniciar sua implementação, maior será o ruído causado pela interpretação de informações (efeito telefone sem fio)

Defeitos
Você sabe o quanto custo a correção de um problema em fase desenvolvimento? e na integração? UM ABSURDO!!
Defeitos no sistema não agregam valor, não satisfazem o cliente, e definitivamente não são baratos. Qualquer tipo de retrabalho causado por problemas de implementação de requisitos, interpretação de necessidades e correção de documentação devem ser severamente combatidos. Neste ponto os métodos ágeis diferem muito dos modelos mais tradicionais: Construa com qualidade, não tente aferir qualidade após o produto pronto. Crie uma sistema que evite que os erros ocorram, e não que verifique se eles estão presentes em seu sistema para depois corrigí-los.

Tentar eliminar alguns dos desperdícios existentes no desenvolvimento de software é o primeiro passo para melhorar a qualidade de seu sistema… Tente!

Victor Hugo Germano

CEO da Lambda3