sábado, 16 de abril de 2011

Lean - Código perfeito ou evolução constante?

A ideia principal por trás do Lean é a perfeição. Pela perfeição, identificamos, analisamos e melhoramos nosso value stream. Por ela, eliminamos o desperdício e focamos no que realmente agrega valor. Um dos princípios do Lean diz para competir com a perfeição e não com a concorrência. Todos os elementos da natureza evoluem constantemente. Será que existe código perfeito?

É claro que não. Como tudo que é criado, o código sempre pode evoluir. No princípio de sua vida, a necessidade é maior e a evolução ocorre intensamente. Quando o código está maduro, obviamente, evolui lentamente. A questão é: a evolução não para nunca.

Então quando devemos subir o código para produção? Devemos considerar o código pronto quando ele atingir o nível de maturidade que a equipe acha aceitável. O "aceitável", como podemos imaginar, está intimamente ligado ao prazo. Assim, quanto menor o prazo, menor será o grau de maturidade aceitável, trazendo consequências negativas para a qualidade.

Competir contra a perfeição traz uma vantagem óbvia, pois não estabelecemos um teto. Entretanto, tem uma desvantagem não tão óbvia que é a necessidade de critério para estabelecer metas. O ser humano precisa conquistar. Se ficar muito tempo sem uma conquista, acaba frustrado.

No desenvolvimento de software, quem seria o concorrente? Infelizmente, é comum encontrarmos desenvolvedores que competem de forma nociva com outros desenvolvedores. Isso, infelizmente também, é uma característica do ser-humano. Por isso, não é exclusividade de desenvolvedores.

Quando a competição é nociva, as pessoas guardam o conhecimento e têm medo da evolução de outro profissional. É a defesa mais frágil, na minha visão. A fragilidade vem do fato do outro profissional só depender dele. O que vai acontecer quando for ultrapassado?

O que considero uma defesa robusta e firme? O profissional competir contra a perfeição, desafiando-se a cada dia. Quem pensa sempre em evoluir não precisa se defender negando a passagem de conhecimento. Como tem necessidade de evoluir, e as discussões são excelentes ferramentas de evolução coletiva, ensina sem medo, procurando fazer o melhor possível.

Quando ensina, vai perdendo um aluno e ganhando alguém para discutir ideias. Ouço isso desde os tempos de primário. Com o debate, as ideias evoluem e todos ganham, pois os resultados são melhores. Melhorar algo que já é razoável/bom é mais prazeroso que evoluir o que está muito ruim.

A evolução do time é importante para todos e deve ser incentivada. Ontem, conversando com o Rafael Ponte, Daniel Passos e Marcos Sousa, surgiram algumas formas de incentivo, como dojos e palestras frequentes. Não tenho dúvidas que a adoção deste tipo de prática pode nivelar o time de forma eficiente.