A essência do desenvolvimento iterativo que ninguém nunca te contou

Esse artigo descreve as motivações que me levaram a iniciar um projeto para escrever um livro de forma iterativa, ao invés do jeito tradicional, onde se escreve o livro todo e só no final se publica. Para acompanhar esse processo, faça o download da última versão do livro, em versão Kindle ou PDF, nessa página. O conteúdo desse capítulo — e do livro como um todo, será discutido em uma série de webinários ao vivo nos dias 12 e 14/09.

O trabalho intelectual é o que hoje nos desafia mais. Não há fórmulas para redigir artigos, fazer palestras, desenvolver produtos, gerir projetos, programar software, criar cursos ou escrever livros. Temos estruturas cognitivas que interagem entre si e produzem um encaixe único que insiste em desafiar toda e qualquer receita de ação para esse tipo de empreendimento.

O fato é que temos que deixar essas estruturas trabalharem onde elas atuam melhor: no terreno onde precisamos descobrir o que fazer, e fazer. Afinal, as receitas, os projetos detalhados, as fórmulas que você tem que seguir pressupõe uma conformidade com um output delineado na partida. A dificuldade é que, na partida, temos uma visão de baixa resolução do que é preciso ser feito.

Imagine que o seu projeto é uma foto de baixa resolução. No início, você tem uma ideia de como você quer o resultado final. Você consegue reconhecê-lo, mas é pixelado, embaçado, um borrão. Ela está assim, em baixa resolução, porque falta informação sobre a aplicação da sua solução para o problema em questão. Quando você progride da maneira certa, aumenta a quantidade de informações que validam a eficácia da aplicação da solução ao problema. Assim, a cada passo, sua foto ganha mais detalhes, mais contornos; a cada passo, seu projeto se torna mais vivo, se torna um organismo mais aderente ao seu propósito.

Esse é o caminho que deveríamos seguir enquanto aplicamos a ideia de desenvolvimento iterativo em nossos projetos, mas não é o que acontece frequentemente. Ao invés de aumentar a nitidez da foto de forma gradativa, o que muitos fazem é aumentar o tamanho do borrão. Perdemos o foco no problema que estamos resolvendo e vamos atrás de mais escopo, mais features, mais coisas pra fazer. Aumentamos o tamanho da máquina, o número de botões.

Assim, o desenvolvimento iterativo é uma estrutura de ação poderosa para nos ajudar a encontrar e desenvolver as melhores soluções para os problemas que precisamos resolver. O que chamamos de eficácia nada mais é do que a medida da qualidade desse encontro problema-solução, ou seja, o quão bem você encaixou as duas peças desse quebra-cabeças.

A pergunta que fica então é: como eu posso conduzir esse processo de encaixe nos projetos que eu desenvolvo?

Parte da resposta está no vídeo a seguir. Depois de assisti-lo, volte aqui comigo para elaborarmos a questão mais um pouco.

O primeiro ponto do vídeo diz respeito à estratégia que se deve usar: buscar a coisa certa por meio da validação rápida da solução dada para a menor representação do problema que você conseguir isolar.

Para isso é preciso que, ao invés de criar uma solução para resolver o problema, você desenvolva a solução enquanto o problema está sendo resolvido. Isso nos leva a ideia de que “o produto é construído enquanto cumpre o seu propósito” e não “para cumprir um propósito”. Esse último acaba sendo o entendimento mais comum das pessoas e isso gera uma infinidade de problemas.

Não iteramos para cumprir um propósito, iteramos para nos manter sempre conectados ao cumprimento desse propósito; e também para cumpri-lo cada vez melhor até que estejamos suficientemente satisfeitos e prontos para nos dedicar à solução de um novo problema.

Os organismos vivos seguem a melhor estratégia para lidar com essa problemática. O propósito de um organismo vivo é sobreviver e prosperar. Se ele falha, morre. Então, desde o tempo zero, ele deve estar preparado para isso. Ele cresce sempre como um todo, melhorando sua capacidade de cumprir seu propósito a cada passo do seu crescimento.

Se o seu processo de desenvolvimento de software seguisse essa estratégia, ele cresceria melhorando gradativamente a solução que dá para o mesmo problema. Cumpriria seu propósito desde o momento zero e, então, com o tempo, se tornaria mais eficaz em resolver cada vez melhor o problema que se propõe em resolver.

Mas não é esse o caminho mais comum.

Estamos acostumados a ter uma visão analítica das coisas que construímos. Precisamos separar as coisas em partes, construí-las e depois juntá-las. Ao invés de tentarmos descobrir gradativamente qual é o melhor encaixe de uma potencial solução com o problema que ela resolve, fazemos de forma diferente do que a natureza nos ensina. Não usamos a estratégia dos organismos, mas dos mecanismos.

Em desenvolvimento de software, costumamos separar a solução em partes, chamando-as de funcionalidades — ou de histórias de usuário, ou de requisitos. Então as organizamos, geralmente em módulos, no chamado "backlog do projeto". O próximo passo é selecionar, desse amontoado de partes, aquilo que será construído no próximo espaço de tempo reservado para controlar o progresso do projeto; e, muito ingenuamente, chamamos esse processo de desenvolvimento iterativo.

Ao invés de produzirmos os organismos mais bem preparados para se resolver um problema, apenas criamos máquinas com mais fios e botões. Nossos softwares se transformam em uma infinidade de telas de cadastros e relatórios difíceis de usar, de manter e de melhorar.

Para os projetos onde a eficácia é a meta, ou seja, onde buscamos fazer a coisa certa e resolver bem os problemas que temos nas mãos, precisamos de um modo de pensar diferente.

Hoje, uso essa forma de pensar em todo o trabalho intelectual que crio: textos como esse que publico, cursos que crio, palestras que ministro ou os softwares que desenvolvo. O Software Zen, por exemplo, foi criado exatamente dessa maneira. É lá que eu consolido e compartilho todas as informações que adquiri durante minha carreira que hoje me permitem ser mais eficaz nas coisas que faço.

Também usarei essa filosofia no meu próximo grande projeto: um livro. Sempre fui cobrado pelos meus alunos a escrever um livro sobre os temas que exploramos no Software Zen. Depois de quase 3 anos postergando esse projeto, decidi pegar um pequeno pedaço do programa do curso e transformá-lo em um livro. E assim será feito.

O projeto “A Fórmula da Eficácia para Projetos de Software” começa agora. Você pode acompanhá-lo se inscrevendo nessa página…

Evoluirá como um organismo. Já nasce como um todo coeso desde o início. Já nasce com o propósito de ajudar as pessoas, especialmente desenvolvedores de software, a se tornarem mais eficazes, não só em seus projetos, mas no cotidiano de suas vidas. Cumprirá seu propósito desde o momento zero. Não será construído para cumprir seu propósito quando terminado, cumprirá seu propósito enquanto estiver sendo construído.


Como já mencionei, não se esqueça de acompanhar o processo de publicação do livro, faça o download da última versão do livro, em versão Kindle ou PDF, nessa página. O conteúdo desse capítulo — e do livro como um todo, será discutido em uma série de webinários ao vivo nos dias 12 e 14/09.