O pensamento enxuto para o desenvolvimento ágil

        

Neste artigo, aprenderemos como é simples iniciar o pensamento base dos processos ágeis, dessa forma, conseguiremos romper algumas barreiras iniciais na implementação de um modelo ágil em nossas corporações.

 

Uma das recentes  discussões que habitam as organizações que desenvolvem ou consomem software é o seguinte: “Esse negócio de processos ágeis realmente funciona? Ou então, como iniciar um projeto, usando as idéias de modelo ágil?”

 

Muitos de nós já usamos processos ágeis, porém, muitas vezes, o fazemos sem uma filosofia maior, e acabamos apenas usando o caráter operacional dos processos ágeis existentes e isso limita o resultado que o processo em questão pode oferecer, pois enquanto as idéias inerentes não forem institucionalizadas, em todos os níveis de uma organização (operacional, tático e estratégico), haverá um forte descompasso de resultados.

 

Na verdade, existe uma solução proposta para isso, imagine uma empresa alinhada as idéias dos processos ágeis  para área de desenvolvimento de software e para as demais áreas, seus pensamentos estejam alinhados como os ideais de modelo enxuto de trabalho, semelhante ao proposto pela Toyota, isso seria um verdadeiro paraíso ou então uma grande utopia  para quem almeja bons resultados para sua companhia.

 

Bem, isso não é nada do outro mundo, nem impossível de acontecer,  uma vez que existe uma grande correlação entre os processos ágeis e modelos gerenciais enxutos que muitas organizações têm usado(Just-in-time, Lean, kaizen)

 

Pensado dessa forma, fica muito fácil para que você também consiga  visualizar a aplicação da mesma linha de idéias em todos os níveis da empresa, criando uma forte cultura ágil na organização voltada para soluções efetivamente que agreguem valor ao universo da corporação.

 

Portanto meu caro amigo, caso você esteja pensando em implementar algum processo ágil para seus projetos de desenvolvimento de software, convido você a fazer um exercício mental antes disso, olhe os modelos operacionais de sua organização em forma de linha de tempo, imagine todos as tarefas  que são usadas até o término da construção de software (ver Figura 01).

 

mppedafig01.JPG 

Figura 01 – Linha do tempo original.

 

E agora,  identifique as tarefas que você considera ser desnecessárias(ver Figura 02).

 

mppedafig02.JPG 

Figura 02 – Identificação das tarefas desnecessárias.


Atenção:

Apesar da simplicidade da idéia em volta do pensamento enxuto, tenha muito cuidado nessa fase, principalmente para não sejam eliminadas tarefas que tenham impacto na qualidade do produto em questão, principalmente em atividades de testes, ou seja, muitas vezes, pensamos que as atividades de testes não agregam valor ao projeto, e dessa forma podemos prejudicar a qualidade do software produzido.

 

Agora elimine essas tarefas desnecessárias e monte novamente a linha de produção de seu processo (ver Figura 03).

 

mppedafig03.JPG 

Figura 03 – Linha do tempo otimizado.

 

Viu alguma diferença? Viu como a idéia é simples? Se  você respondeu sim para essas duas últimas perguntas, bem vindo ao pensamento do desenvolvimento ágil de software, agora tente fazer o mesmo com o processo de software que você utiliza hoje.

 

Porém (sempre existe um porém), é nesse ponto que muitos de nós falham, pois eliminar as tarefas desnecessárias esbarra em alguns problemas como:

- Zona de conforto – Às vezes as tarefas desnecessárias, criam uma zona de conforto, que temos muito medo em perdê-las;

- Capacidade de Produção – Existe um eminente perigo em eliminar tarefas, pois muitas vezes, não sabemos qual a real capacidade de produção que temos, dessa forma subdimensionamos ou superdimensionamos nosso modelo produtivo.

- Velocidade – Assim como a capacidade de produção, temos dificuldades  em conhecer nossa real velocidade, criando dessa forma, pontos  de esperas por demandas ou  pontos desvios de esforços.

- Falta de clareza das tarefas – Às vezes as tarefas não estão claras, e temos dificuldade em identificá-las em nossos projetos (isso realmente é um grande problema).

 

OK, você concorda com a necessidade do pensamento enxuto, mas está com dificuldade em visualizar suas tarefas desnecessárias? Então vamos lá, vou tentar  lhe  ajudar a identificar essas tarefas em projeto típico de desenvolvimento de software:

-  Muito Tempo de  análise e design do problema como um todo  Normalmente, no início do projeto, é investindo um tempo muito grande no processo de análise e design a fim de propor um modelo único como solução para todo o problema que projeto de software se propõe, observe que os processo ágeis não eliminam a análise e design, o que eles propõem é distribuir em várias  fases durante todo o projeto, com objetivo de solucionar partes menores  do todo em questão.   

-  Excesso de documentação  - Aqueles famosos artefatos que preenchemos, e que muitas vezes nunca serão lidos ou atualizados;

-  Síndrome de Nostradamus – Isso é clássico, às vezes, com a maior boa vontade criamos vários recursos sem que haja uma necessidade eminente para ele, simplesmente apostando em uma possível flexibilidade  de alteração futura ou por imaginar que o cliente irá usar algum dia.

- Esticar para caber – Isso também é comum, às vezes quando terminamos alguma tarefa antes do tempo previsto, criamos uma série de “sub-tarefas extras   a fim de preencher o espaço vago até a data prevista inicialmente.

 

Veja que muitas vezes, fazemos essas práticas não por que somos maus, mas por que acreditamos que aquilo é correto para aquele momento, o grande problema dessas abordagens é que além de consumirem muitos esforços,  elas retardam a entrega de tarefas que realmente agregam valor ao projeto.

 

Note que esses problemas são comuns, e devem ser vencidos de maneira gradual e madura, porém, como você de ver notado nesse texto, termino lembrando-lhe que  independente do framework que irá utilizar (XP, FDD, Scrum, Cristal, DSM), tenha essa idéia em mente: a chave para  o sucesso de qualquer processo ágil, consiste em eliminar as tarefas que não agregam valor ao projeto e fornecer mais valor em menor tempo de forma constante ao cliente, pense fortemente nisso antes iniciar seu projeto com desenvolvimento ágil.

 

Espero sinceramente que você tenha gostado desse texto, e que o mesmo sirva de semente para aguçar suas idéias sobre os processos ágeis, sentindo-se então, desafiado a iniciar suas primeiras experiências com essas idéias relacionadas ao desenvolvimento ágil de software.