Qual a melhor metodologia de desenvolvimento de software?
As organizações já vem investindo em diferentes metodologias e processos ao longo dos anos, sempre com a promessa de obter grandes benefícios: maior produtividade, maior previsibilidade, maior qualidade, mais entregas.
Ou seja: gerar valor para o negócio de maneira consistente e efetiva na velocidade necessária, capaz de cumprir às expectativas da organização. Entretanto, é possível definir qual a melhor metodologia de desenvolvimento de software?
Muitas vezes, a despeito de todo esforço realizado – e bem sabemos que esse esforço não é pequeno, uma vez que normalmente mudanças organizacionais profundas são exigidas – os resultados ficam muito aquém do esperado. A TI não escapa do rótulo de ser extremamente lenta e burocrática, incapaz de contribuir efetivamente para organização!
Isso tudo traz uma grande frustração, pois, como dito, o esforço financeiro e humano despendido nessas iniciativas é enorme. E a frustração aumenta ainda mais quando uma nova metodologia – uma nova promessa – aparece! Quer dizer então que fizemos até o momento foi em vão? Que devemos jogar tudo fora para que o novo e definitivo caminho seja finalmente percorrido?
Não! Tudo o que fizemos não deve ser jogado fora! Na verdade, tudo que fizemos deve ser revisto e reavaliado à luz de um novo paradigma, norteado pelos princípios e valores da abordagem Lean e das Metodologias Ágeis.
Sumário
- 1 Ser lean – evitar desperdícios
- 2 Repensando a metodologia tradicional de desenvolvimento de software
- 3 Otimização local ou de fluxo?
- 4 Como resolver o problema dessas metodologias de desenvolvimento?
- 5 Afinal, qual a melhor metodologia de desenvolvimento de software? Podemos eleger uma única vencedora?
Ser lean – evitar desperdícios
Peguemos como exemplo um dos mais importantes princípios desses referenciais: o combate ao desperdício.
O combate ao desperdício significa rever todo o processo já existente, eliminando todas as atividades que não geram valor ou que realizamos de forma dispendiosa
O exemplo mais básico é o detalhamento excessivo de requisitos que são extremamente simples, aqueles claros para todos a partir de uma frase. Por exemplo: uma tela de cadastro. Precisa de muito mais que isso?
Repensando a metodologia tradicional de desenvolvimento de software
Mas, há exemplos muito mais perniciosos: a própria estruturação do processo, que muitas vezes opta pelo método tradicional de otimizar a produtividade de cada “especialidade” envolvida ao invés de priorizar o processo como um todo.
Imagine: não lhe soa natural ter um especialista em “Especificação de Requisitos” atuando da seguinte forma:
– Entrevistando um ou mais usuários.
– Escrevendo uma especificação detalhada.
– Enviando a especificação para os usuários aprovarem.
– Enquanto isso, já adiantando outras especificações ou participando de outras atividades?
Essa atuação é muito natural porque ela otimiza a vida de cada participante do processo, não é mesmo? Os usuários são acionados somente quando necessário, e o analista de requisitos consegue trabalhar na especificação com extrema produtividade após ter levantado os requisitos. Além disso, após o envio do documento para revisão, ele pode atuar em outras demandas em paralelo ao processo de aprovação! Não parece maravilhoso?
Otimização local ou de fluxo?
Mas, o que não se percebe nesse tipo de estruturação – e aí mora a armadilha – é que a otimização da atividade de cada participante, ou seja, a “otimização local”, ocorre em detrimento da otimização do fluxo completo de geração de valor.
Na prática, acabamos por ter mais prejuízo: o processo não flui, é constantemente interrompido pela espera de intervenções de especialistas e acaba sofrendo retrabalhos! E o resultado final do processo – a geração de valor, o que realmente importa – é constantemente adiada ou desnecessariamente retrabalhada!
Ora, se o fluxo de geração de valor como um todo não está otimizado, a organização está, obviamente, desperdiçando grande parte do seu esforço.
Qual o sentido de otimizar as atividades locais se o mais importante – a otimização de valor para organização – não está sendo feito?
Como resolver o problema dessas metodologias de desenvolvimento?
Em vista disso, o que devemos fazer de diferente nos exemplos anteriores?
No primeiro caso, de desperdício, a resposta é simples e direta: eliminar o desperdício. Sim. Isso mesmo. Parar de detalhar requisitos que são desnecessários ou que já possuam exemplos é um bom começo.
No segundo caso, de otimização local, o processo deve ser reestruturado de maneira que as atividades sejam executadas visando a otimização do fluxo de geração de valor de forma sistêmica.
Afinal, qual a melhor metodologia de desenvolvimento de software? Podemos eleger uma única vencedora?
Essas ações não demandam jogar fora tudo que foi pensando anteriormente. Os processos tradicionais respeitam e utilizam uma enorme quantidade de boas práticas de gerenciamento e engenharia de software.Mas o pensamento ágil e Lean cria uma nova perspectiva sobre como usar essas práticas, fazendo com que as organizações consigam iniciar um ciclo virtuoso de geração de valor. E que a TI, finalmente, perca seu rótulo de ineficiência.
Ainda não sabe como eliminar o desperdício do seu projeto ou tem alguma dúvida sobre como aplicar os conceitos de Lean?
Converse com a gente. Nós podemos ajudar a sua empresa.