Extreme programing e a inteligência coletiva

Bem vindos à 3ª edição do “Pense nisso!”

A revista National Geographic Brasil de julho 2016 veio com uma matéria sobre Inteligência Coletiva, que falava do comportamento de pássaros, abelhas, formigas e peixes que estavam sendo estudados e também aplicados no trabalho, no aeroporto, na internet e eu diria também no desenvolvimento de software com objetivo de facilitar e otimizar processos.

No caso do formigueiro, a colônia é capaz de resolver problemas impossíveis para cada formiga individualmente, como por exemplo, achar o caminho mais curto para a melhor fonte de comida.

Se individualmente elas são estúpidas, coletivamente são ágeis e eficientes, fenômeno denominado de “inteligência de enxame”.

Uma característica muito importante no formigueiro é o fato de ninguém está no comando, e a colônia funciona muito bem, mesmo sem ter um sistema de controle. O funcionamento da colônia é baseado em diversas interações entre as formigas, cada qual seguindo regras práticas muito simples sendo a comunicação por meio do toque e odor (ferormônio).

Outro fato interessante ocorre num enxame de abelhas que mesmo havendo desacordos frequentes sobre os lugares onde formar nova colméia, elas sempre escolhem o melhor local. Chegando a essa decisão por avaliações independentes e algum tipo de votação. Novamente é um trabalho coletivo descentralizado. A abelha rainha possui a única função de pôr ovos.

Esse comportamento das formigas já é extensamente aproveitado na computação na área de otimização combinatória através do algoritmo ”colônia de formigas” que é utilizado para descobrir a melhor rota para coleta de lixo em uma cidade, transporte de combustíveis a partir de poços de petróleo espalhados geograficamente, com objetivo de diminuir o tempo do serviço, diminuir o gasto com combustível, evitar que o caminhão passe mais de uma vez pela mesma rua, entre outros problemas.

Comparando um pouco esses princípios da inteligência coletiva podemos identificá-los em práticas do Extreme Programing como a do ”Código Coletivo” onde todas as classes e métodos pertencem à equipe e caso seja necessário qualquer integrante poderá modificá-lo sem ter que pedir permissão, mas para garantia de segurança só é possível o uso pleno dessa prática se a equipe investir na criação de testes automatizados.

Fazendo analogia com as comunicações simples das formigas o XP utiliza-se das práticas de ”programação em pares” e de ”Reunião em pé”, em que o conhecimento poderá ser dividido e propagado para todos os integrantes da equipe garantindo dessa forma a prática do código coletivo e evitando o risco de determinada rotina ou código fique sem manutenção devido a falta de algum desenvolvedor por motivo de doença.

Nesse caso logo outro assume pois já tem uma noção do funcionamento do código. As reuniões garantem o andamento correto do desenvolvimento sem correr o risco de fugir do que foi priorizado em planejamento.

Existe várias outros valores, princípios e práticas no XP, que juntos acabam tornando o desenvolvimento mais produtivo, mas algo importante deve ser reforçado: para o funcionamento efetivo cada integrante da equipe deve estar comprometido e assumir as responsabilidades. Isso deve ficar bem claro, senão acaba voltando para outras práticas hierarquizadas em que o desenvolvedor fica esperando que o gerente de projeto lhe dê algo para fazer.

É bem semelhante à coletividade das abelhas, formigas e peixes que sozinhos são prezas fáceis e não conseguem realizar tarefas complexas, mas em conjunto, cada qual fazendo sua parte, conseguem realizar tarefas que até hoje fascinam os pesquisadores da área.

Bom, fico por aqui e até o próximo “pense nisso!”.