17 de outubro de 2009

12 Maneiras de Diminuir o Lead Time no Desenvolvimento de Software

1. Meça tudo! Quando a história foi criada; quando entrou no sprint; quando o desenvolvimento começou e acabou; quando foi para QA; quando foi publicada em produção. Sem medir, você nunca saberá se está melhorando ou piorando!

2. Melhore a qualidade: quanto melhor a qualidade do desenvolvimento, menos tempo em QA, menos bugs e menos retrabalho - eduque os desenvolvedores, coloque pessoas de QA na equipe, determine uma política de zero bugs, automatize os testes unitários, de regressão, testes funcionais e de integração.

3. Reduza o retrabalho: bugs identificados por clientes levam tempo para ser resolvidos - o cliente avisa do bug, passa pela equipe de QA, é reproduzido, é cadastrado no sistema de bug tracking, vai para um desenvolvedor, é reproduzido novamente, validado com o Gerente de Produtos se realmente é bug, é analisado, corrigido, testado por QA novamente, encerrado no bug tracking, empacotado para publicação e deployado. Faça certo da primeira vez, com qualidade, e evite o retrabalho.

4. Releases frequentes: colocar novos recursos em produção a cada 2 semanas permitirá que você aproveite a receita gerada por eles logo. Se seu deployment ocorre a cada 6 meses, uma nova funcionalidade criada hoje só trará resultado daqui a 6 meses. Além disso, com releases frequentes todo o processo de desenvolvimento flui melhor, e os problemas são detectados mais cedo no processo.

5. Para de trabalhar em paralelo: se cada desenvolvedor leva cinco meses para fazer sua funcionalidade, e cinco puderem levar um mês para fazer uma funcionalidade, a cada mês você resolverá o problema de um cliente em vez de ficar cinco meses com cinco clientes insatisfeitos. É claro que nem tudo pode ser paralelizado (9 mulheres grávidas por 1 mês não geram um filho... mas muita coisa pode sim!)

6. Histórias mais curtas: a regra 80/20 vale para o software, com 20% do desenvolvimento você satisfará 80% das necessidades de seu cliente, e, estudos mostram que mais de 60% dos recursos de um software nunca são usados. Entenda seu cliente, e foque naquilo que é mais relevante.

7. Gerencie o fluxo do desenvolvimento: post-its numa lousa, status das histórias e acompanhamento transparente explicitam os gargalos do processo, e, somente depois de conhecidos eles poderão ser melhorados.

8. Cancele reuniões: desenvolvedores entregam valor quando estão desenvolvendo; reuniões desviam seu foco e geram insatisfação para todos (inclusive para eles!). Metodologias ágeis como Scrum tem reuniões pré-definidas, com duração pré-estabelecida, minimizando as reuniões desnecessárias.

9. Deploy contínuo: quanto mais automatizado for o processo de testes e deployment, mais frequentes poderão ser os deployments. Quanto mais frequentes, mais rapidamente uma feature desenvolvida e testada irá para produção, diminuindo os buffers desnecessários.

10. Tenha uma gestão de produtos ágil: para de falar, e faça! Reduza o tempo em que uma feature fica sendo elaborada, e não desenvolva features diferentes ao mesmo tempo. Utilizando metodologias ágeis, melhorias podem ser aplicadas ao longo do processo, iterativamente.

11. Não tenha pontos únicos de falha (SPOF - single points of failure) - com SPOFs, você está sempre sujeito a problemas imprevisíveis que podem desviar seu foco. SPOFs podem ser de hardware ou software, mas também podem ser de pessoal (apenas 1 designer, apenas 1 especialista em alguma tecnologia, um único desenvolvedor de determinada parte do sistema)

12. Nivele seu trabalho: evite períodos de picos e vales no desenvolvimento - ociosidade e sobrecarga são dois extremos que prejudicam o ritmo do desenvolvimento e tornam o lead time variável.


Fonte: e-book "12 Things to Shorten Your Lead Time" - http://codemonkeyism.com/

0 comentários: