Caos em projetos de software: como sair dele, como nunca chegar a ele

Você está muito mais próximo do caos do que imagina. Nesse artigo, eu faço uma relação entre histórias e mitos que você já conhece com os conceitos de caos e ordem. Depois te dou uma pequena amostra de como isso pode ser levado a sua realidade em projetos de software. Esse artigo também dá o tom para uma das palestras que vou ministrar na próxima semana no evento online e gratuito que o Software Zen está promovendo.

"Introduza um pouco de anarquia, perturbe a ordem vigente, e tudo se torna um caos. Eu sou um agente do caos", diz o Coringa em ‘The Dark Knight’

As histórias do Batman e do Coringa são uma boa forma de começarmos a destrinchar a íntima relação que existe entre caos e ordem e como isso está relacionado com o que você faz no dia-a-dia do seu projeto de software. É um plano conceitual que pode nos ajudar a entender muitos dos dramas e desafios que vivemos não só em projetos, mas também na vida de forma geral.

O Batman e o Coringa constroem o sentido para suas personalidades em resposta a eventos extremamente traumáticos que delineiam suas vidas à partir da relação que experimentam com o caos. O Batman dá sentido à morte de seus pais culpando o caos vivenciado na forma da criminalidade existente na cidade. Como reação a sua tragédia, ele se apropria de um novo significado para a própria vida: um incansável resgate da ordem perdida na sua cidade.

Ao tentar eliminar o caos de Gotham, ele cria uma versão mais extrema de ordem para os criminosos desafiarem e subverterem. Ao introduzir um estado de ordem opressivo, ele desequilibra o modelo moral da cidade, criando a oportunidade para um novo tipo de caos emergir na forma do Coringa. Esse é o pano de fundo para a narrativa de ‘The Dark Knight’.

Heróis como o Batman e muitos outros, mergulham nas profundezas do caos para trazer de volta uma ordem perdida pela ação do vilão, o disruptor da ordem, causador último do caos. Enquanto as forças comuns conseguem cumprir o seu papel de manter a ordem, não há razão para o aparecimento do herói. O Batman não é a profissão ou função do Bruce Wayne, mas sim a anomalia gerada pelo potencial reativo de ordem que reside dentro do próprio caos quando esse se amplifica. Assim, há um equilíbrio inexorável na dualidade caos e ordem. Um gera o seu oposto e estamos em contínua luta para transitar entre um e outro.

O Yin and Yang demonstra a dinâmica universal das dualidades.

A filosofia taoista explica bem isso por meio do símbolo Yin e Yang. Ele mostra como as dualidades de forças aparentemente contrárias são, na verdade, complementares e interdependentes. Uma dá origem a outra enquanto se interrelacionam. Para a nossa análise ordem e caos, o lado branco do símbolo representa a ordem. O ponto preto dentro do lado branco indica que há sempre caos potencial em todo estado de ordem. O oposto também se verifica. O lado preto representa o caos e o ponto branco dentro dele indica que em todo estado de caos há potencial para geração ou restauração da ordem.

O Gênesis judaico-cristão é outra história que ilustra bem essa relação caos e ordem. Deus cria um mundo cuja natureza é caótica e depois cria um jardim onde coloca o primeiro homem. O Jardim do Éden é a representação de ordem dentro da natureza caótica existente fora de suas fronteiras. A ideia de um jardim é uma perfeita ilustração para a harmonia entre natureza (caos) e cultura (ordem). É o ponto branco dentro do lado preto do Yin e Yang. É nessa harmonia que o homem se sente seguro e confortável. Mas, dentro do Jardim, há uma serpente, o que indica a existência de caos potencial dentro do estado de ordem vigente (agora o ponto preto dentro do lado branco do Yin e Yang). Ao comer o fruto na árvore do conhecimento do bem e do mal, o homem torna-se auto-consciente. É o ganho dessa auto-consciência que o expulsa do paraíso do “ser sem se conhecer”. Como refém da sua própria consciência, ele está condenado a ter que continuamente extrair ordem do caos numa busca incessante para estabelecer um sentido para a própria vida.

A Queda do Homem e a Expulsão do Jardim do Éden pintado por Michelângelo no teto da Capela Sistina.

Todas essas histórias nos falam sobre a necessidade que temos de saber navegar entre ordem e caos pra conduzir a transformação que realizamos no mundo. Essa relação de alternância entre um e outro acontece o tempo todo em nossas vidas e em nossos projetos. E quando o contexto é desenvolvimento de software, você vai perceber, durante a leitura desse artigo, que entender como transitar entre um e outro pode ser fundamental para chegar aos resultados que você precisa alcançar.

Vencendo o caos

A melhor história de surgimento do Coringa foi roteirizada por Alan Moore, em 1988, no episódio “The Killing Joke”. A história conta como Jack Napier lutava para manter sua vida em ordem, mas não conseguia devido a sua carreira fracassada como comediante. Em um mesmo dia, ele é informado da morte trágica da sua esposa grávida de seu primeiro filho, depois é traído e incriminado pela máfia e enfim cai no tonel de químicos que o desfigura completamente. Assim, Jack Napier se torna o Coringa, levando-o a dizer uma de suas mais conhecidas frases:

“Basta um único dia para reduzir o homem mais são que existe em um lunático. Isto é o quão longe o mundo está de mim agora. Apenas um único dia.”

Compare a história do Coringa agora com esta história vivida por uma empresa de desenvolvimento de software que conheci:

“Estávamos indo bem já tendo passado da metade da nossa sprint quando recebemos uma ligação de um cliente preocupadíssimo. O banco estava recusando o pagamento de vários boletos impressos pelo nosso sistema. Fizemos uma análise da situação e descobrimos que uma mudança feita há alguns dias gerou uma inconsistência no cálculo do dígito verificador da numeração do boleto. Milhares de boletos estavam nas mãos de clientes que teriam ou já tiveram o imenso desprazer de chegar na boca do caixa e descobrir que não poderiam pagá-los. A notícia caiu como uma bomba pra toda a equipe. Foi preciso parar tudo, descobrir o que estava errado, fazer o acerto, criar um plano de contingência, negociá-lo com os clientes, reconstruir os bancos de dados para corrigir as informações processadas com erro, enviar comunicados para os clientes informando sobre o problema e dando instruções sobre como corrigi-lo, criar mecanismos de checagem para evitar que acontecesse novamente no futuro e, depois de tudo, ainda renegociar o cronograma do projeto como um todo que, por causa disso, ficou todo comprometido. Um pesadelo técnico e de gestão vivido todo em um único dia.”

Assim como na história de Jack Napier, o sistema de trabalho da história anterior vivia lutando para se manter em ordem até o momento em que o time recebe a ligação do seu cliente. Ordem é um estado sistêmico onde o comportamento de um sistema ou situação é estável e os eventos gerados pelas interações entre seus elementos são previsíveis. Em outras palavras, você sabe onde está e o que vai acontecer. O mapa que você carrega na sua mente encaixa-se de maneira satisfatória com o terreno do mundo real.

Depois do telefonema para a equipe, a sequência de eventos é caótica. A interação entre os elementos do sistema (pessoas na equipe, clientes e gerentes) é totalmente arbitrária e movida pelo medo e ansiedade sobre o que pode vir a acontecer. Como diz o próprio Coringa:

“Você sabe qual é a chave para o caos? É o Medo.”

Quando em estado de caos um sistema é imprevisível. Ele indica que estamos em uma situação onde o futuro é incerto; onde não entendemos o que está a nossa volta; onde o que está a nossa volta ou suas decorrências estão fora do alcance da nossa percepção. Nesse estado, a nossa capacidade de se planejar é comprometida. Deixamos de agir para fazer o que é preciso ser feito e passamos a reagir de acordo com o desenrolar dos eventos que se sucedem a nossa frente. Quando vivemos em estado de caos, não sabemos como terminaremos o dia de hoje, nem como começaremos o dia de amanhã. Tudo acontece de um dia para o outro.

Não foi o caos na vida de Jack Napier que criou o Coringa, mas sua postura cínica diante da tragédia que o gerou. Ao invés de criar significado, Jack prefere adotar o niilismo. Ele remove todo o significado existencial da vida, a transformando em uma piada que o faz querer rir a cada vez que se encontra com alguém que a valoriza. O Coringa é o adversário mais desafiador para o Batman porque, diferente dos outros, ele não tem interesse em ganhar. O seu único interesse é que todos percam.

A postura de Bruce Wayne é diferente. Diante da tragédia e do caos gerado por sua perda, ele cria significado para ela. Ele usa o Batman como instrumento para implementá-lo, ou seja, como instrumento para lidar de forma muito profunda e comprometida com a raiz do problema que gerou a sua perda.

A pergunta que fica é: Qual é a sua postura, e da sua equipe, diante das tragédias e do caos gerado por eventos semelhantes ao relatado no exemplo acima? Que nova personalidade emergirá desse caos enfrentado pela sua equipe para lidar com a raiz do problema que o gera?

Para vencer o caos não só pontualmente, mas definitivamente, é preciso reconstituir o estado de ordem ao mesmo tempo em que se vence o medo das incertezas e da imprevisibilidade intrínseca ao caos em que se vive. Assim como o Batman faz, é preciso agir proativamente e mergulhar na raiz dos problemas para atuar onde ninguém espera que você atue. Será preciso coragem, confiança, persistência, assertividade, vontade, resiliência e foco para lidar bem com os problemas em sua raiz. Basicamente, os mesmos atributos dos heróis das histórias e mitos que conhecemos.

Como nunca chegar ao caos

Seres humanos passam a vida navegando entre esses estados de caos e ordem. Aprendemos rapidamente que muito caos (anarquia) é ruim e muita ordem (comando, controle, tirania) também é ruim. Para nunca chegar ao tipo de caos que descrevemos até agora, é preciso saber como se integrar com ele. Afinal, o caos em si não é necessariamente ruim. Na verdade, quando na medida certa um pouco de caos é necessário.

É do caos que qualquer criação é extraída; é ali que as coisas se formam, que evoluem; é onde a criatividade floresce. Como escreveu o filósofo Immanuel Kant no livro “História Geral da Natureza e Teoria do Céu”:

“Deus adicionou uma arte secreta às forças da natureza de modo que as permite tornar-se à partir do caos em um sistema de mundo perfeito.” Kant

Para não deixar Kant sozinho nessa defesa do caos, também podemos recorrer a Nietzsche:

"É preciso haver caos dentro de você para que você dê a luz a uma estrela dançarina" Nietzsche

Pense na dinâmica que acontece em uma reunião de brainstorming, por exemplo. Ali você está tentando resolver um problema por meio da contribuição espontânea de ideias soltas, eventualmente até absurdas, oferecidas pelas pessoas reunidas. Existe um caos intencional na dinâmica, simplesmente porque é no caos que está o nascedouro das ideias que você precisa. Tais ideias nada mais são do que estruturas cognitivas organizadas de forma coerente, ou seja, ordem. Uma dinâmica de brainstorming nada mais é do que um exercício colaborativo de extração de ordem (ideias de solução) do caos (problema enfrentado).

Assim, e como já vimos anteriormente no texto, não é uma questão de eliminar o caos, mas de dominar as inevitáveis transformações de ordem em caos, e de caos em ordem que vivenciamos dia após dia.

Essa relação de mútua transformação acontece o tempo todo em nossos projetos: há caos potencial sendo gerado em todos os movimentos que fazemos; e há ordem potencial que pode ser extraída do caos que é inevitavelmente formado pelo processo natural de transformação do mundo.

Por exemplo, imagine que você acabou de passar o dia inteiro escrevendo código para uma nova feature em que está trabalhando. Esse movimento adicionou caos potencial ao sistema. Você terá ordem novamente depois que: (1) reintegrar o seu código com o que os outros programadores fizeram em paralelo com você; (2) alguém testar e validar o que você fez; (3) seu cliente começar a usar o que você implementou; (4) o uso do cliente não revelar nenhuma falha ou inconsistência.

Assim, temos caos em potencial quando estamos trabalhando em código ainda não integrado; ou quando temos features implementadas no sistema, mas ainda não-testadas; ou quando temos versões do produto que ainda não passaram pelo crivo de aprovação ou uso por nossos clientes; ou quando uma nova versão ainda não passou por um período mínimo de estabilização enquanto está sendo usada pelos seus usuários.

Repare que em todos os exemplos usei a palavra “ainda” que claramente revela a situação de temporalidade do caos e dessa "espera intrínseca" para que o sistema volte a estar novamente em estado de ordem. Isso te ajuda a perceber que:

Em projetos de software, o caos é um estado sistêmico temporário e recorrente; uma força ativa de criação, que precisa ser restringida de forma que se mantenha a consistência do estado de ordem que busca-se alcançar.

Colocando em outros termos: Trabalho em andamento é sempre caos em potencial. Quando o trabalho em andamento não é bem gerido, seja por desenvolvedores ou gestores, em suas micro ou macro-rotinas, ele aumenta a probabilidade de cenários de caos descontrolado no projeto. O caos potencial precisa ser induzido e rapidamente estancado, já esse caos acompanhado de descontrole é o que precisa ser evitado.

Perceba, dessa forma, que não é possível evoluir para um estado superior de ordem sem passar por um estado intermediário de caos temporário. Aquele código novo que você escreve para implementar uma dada feature retira, temporariamente, o sistema de sua ordem estabelecida até então. Avançar no desenvolvimento do seu produto implica em saber navegar nessa alternância inevitável entre caos e ordem. E é aí que muita gente se perde. Para entender como se adequar a essa dinâmica, é preciso saber com o entrar em estado de fluxo.

Entrando em estado de fluxo

Como você já percebeu, o segredo é saber transitar nessa fronteira entre caos e ordem. O que há nas intermediações dessa linha que divide os dois é o que eu chamo de “estado de fluxo”.

O Estado de fluxo, na verdade, foi primeiro batizado pelo psicólogo húngaro Mihaly Csikszentmihalyi como sendo “um estado psicológico operacional onde se executa uma atividade de forma totalmente imersa em um sentimento de foco energizado, completo envolvimento e prazer no processo produtivo”. Mas foi o psicólogo canadense Jordan Peterson que me chamou a atenção para essa co-relação entre o estado de fluxo e a fronteira entre caos e ordem.

Quando há muito caos não há engajamento voluntário, nem imersão energizada positivamente, há tensão e ansiedade (energias negativas), o que não é sustentável no longo prazo e só se paga em momentos de crise. Por outro lado, quando há muita ordem, também não há engajamento no processo produtivo. Há tédio, apatia e uma constante vontade de fazer outra coisa. Para se manter no estado de fluxo, é preciso ir para a fronteira entre essas duas zonas sistêmicas.

No caso de um projeto de software, manter-se em estado de fluxo significa dar pequeno saltos de injeção de caos, seguidos por esforços imediatos de restauração da ordem. O que vale como regra geral, nesse caso, é o tempo em que você leva entre o salto para o caos e a restauração da ordem. Assim, por exemplo, devem ser cuidadosamente definidos:

  • o tempo entre uma nova rotina de código ser escrita (caos) e ela ser validada por um teste unitário (ordem);
  • o tempo entre a execução de uma nova definição tática de distribuição de trabalho para a equipe (caos) e sua validação na próxima reunião diária (ordem)
  • o tempo entre o planejamento do próximo incremento do produto (caos) e a release com o dado incremento ser colocada em produção (ordem).
  • outros exemplos vão ao infinito…

Esse é basicamente o tempo em que você permanece na fronteira entre caos e ordem em todas as suas micro-rotinas. Para se manter em estado de fluxo é preciso saber, acima de tudo, administrar não só esse tempo, mas também a dinâmica de se manter constantemente nessa fronteira.

Essa habilidade tem relação com a sua capacidade de fazer “design de sistemas de trabalho” e é um dos grandes segredos dos times de sucesso.

Conclusão

Muitas coisas que acontecem na sua vida ou no seu projeto podem ser mapeadas em uma espécie de dinâmica sistêmica em torno desses dois estados dualísticos fundamentais: caos e ordem.

O caos é desconfortável e incômodo, mas é o nascedouro de novas possibilidades. A ordem é segura e confortável, mas também um estado de estagnação. O giro da vida acontece no trâmite entre eles.

Quando o caos se apresentar na sua frente novamente, você já sabe o que fazer: Coloque a sua capa de Batman e o seu cinto de utilidades e mergulhe na missão que vai restaurar a ordem da sua Gotham. Quando, por outro lado, o tédio e o controle dominarem o momento, vista-se de Coringa, crie um pouco de caos e faça as coisas saírem do lugar. Achar o ponto de equilíbrio para que você entre em estado de fluxo. No final, esse é o grande desafio.


Esse assunto, além de vários outros, serão tratados em mais detalhes e serão recheados por ideias e conceitos práticos na série de palestras online que vou ministrar nos dias 24, 26 e 30/01/2017.

Inscreva-se gratuitamente nessa página...


Alisson Vale fundou o Software Zen pra ajudar desenvolvedores, líderes de projeto e outros agentes de mudança em empresas de software a encontrarem a causa raiz dos seus problemas para resolver a coisa certa e assim saírem do caos em que se encontram. Para saber mais conheça nosso programa online de gestão de software.