Hoje irei falar um pouco sobre os 7 princípios do desenvolvimento Lean de software.
Embora Lean não seja considerado um método ágil, seus valores são estão muito alinhados com os valores ágeis.
Basicamente os princípios são:
- Eliminar o desperdício
- Fortalecer o time
- Entregas rápidas
- Otimizar o todo
- Construir qualidade
- Adiar decisões
- Amplificar conhecimento
1) Eliminar o desperdício
São considerados como desperdícios:
Trabalho parcialmente feito – O famoso “está pronto, só falta testar”. É fundamental que as equipes criem uma boa definição de “pronto/done” para evitar retrabalhos em itens teoricamente finalizados.
Processos extras – Documentação “pesada” exigida que não agrega valor ao software final. Veja minhas considerações sobre estes tipos de processos extras neste artigo.
Funcionalidades extras – O famoso “Gold-Platting”, ou seja, desenvolver funcionalidades não requeridas pelo seu cliente/usuário final visando agradá-lo. Você pode me perguntar: “Mas Vitor, não temos que encantar nosso cliente e colaborar conforme você mesmo escreveu neste artigo?”. Minha resposta: “Encante seu cliente, entregando VALOR e QUALIDADE na construção do software baseado nos requisitos que ele pediu”.
Alternação de tarefas ou multi-tarefas – O famoso “atue 20% do tempo neste assunto, atue 37,5% do tempo neste outro assunto, atue 22,4% do tempo neste outro assunto e o restante do tempo neste assunto que é mais prioritário”. É cientificamente comprovado que até 40% do esforço é desperdiçado em alternar tarefas, pois o cérebro possui um “delay” para se desligar de uma tarefa e se concentrar em outra. Quando tentamos fazer tudo de uma vez, na verdade não estamos dando foco em nada.
Espera – A equipe desenvolve, faz os testes unitários, realiza a garantia da qualidade e quando passa o software para homologação, o cliente não tem tempo para testar. Esta espera é muito custosa para um projeto de software, pois os recursos de desenvolvimento não podem ser liberados enquanto não finalizar o projeto, porém ficam ociosos.
Esforços de comunicação – Equipes grandes ou geograficamente distribuídas requerem uma boa gestão de comunicação e uma boa gestão de stakeholders. A falha nessa gestão pode comprometer o projeto e o tempo gasto para colocar o projeto de volta aos trilhos pode ser considerado como desperdício.
Defeitos – Quer pior coisa do que implementar um software cheio de bugs para o seu cliente? A credibilidade do time vai lá para baixo, além de gerar um custo de qualidade para a correção destes bugs e gastar tempo que poderia ser utilizado em outros projetos.
2) Fortalecer o time
Criar um ambiente onde a equipe trabalhe de forma auto-organizada e auto-dirigida, evitandomicro-gerenciamento
3) Entregas rápidas
Maximizar o ROI (Return Of Investiment) do projeto, entregando software de valor de forma rápida e contínua.
4) Otimizar o todo
Entender que o software concluído é muito mais que a soma das partes entregues e verificar como ele está alinhado com os objetivos da empresa.
5) Construir qualidade
Garantir qualidade no desenvolvimento do software utilizando técnicas como:
- Teste unitário através de TDD : Escrever o teste / teste falho / escrever o código para passar o teste
- Refatoração: Melhorar e refinar o código escrito, evitando manter legados de débitos técnicos e fazendo com o que o software continue se comportando da mesma maneira.
- Integração contínua: Compilação automática do repositório de código, verificando se o código inserido não prejudicou demais funcionalidades do software.
6) Adiar decisões
Deixar as decisões e comprometimentos para o último momento responsável, permitindo coletar informações e ter experiências para fortalecer a tomada de decisão.
7) Amplificar conhecimento
Priorizar a comunicação e o feedback contínuos entre equipes e usuários durante o processo de desenvolvimento de software.
O que vejo hoje como grande falha, na maior parte dos projetos de desenvolvimento de software que vivenciei, em todos os pontos, é a questão do desperdício e da falta de qualidade. Bom, mas essa é a minha experiência! E a de vocês ?