Salve, desenvolvedores!

A ideia dessa coluna sempre foi de passar experiências para que vocês consigam desenvolver melhor, mais tranquilos e focados em seus objetivos. Zen é uma palavra originada nos estudos do Budismo e dá nome a uma de suas principais vertentes. O Zen pode ser atribuído à prática dos ensinamentos e meditação com o fim de alcançar o estado de espírito de realização. Não sou budista, embora a cultura envolvida sempre tenha me admirado.

Ora, nosso objetivo como desenvolvedores é de evoluir nossos produtos e a nós mesmos, de maneira a trabalhar um ciclo virtuoso de melhoria contínua – não guerreando com essa evolução, mas fazendo-a da maneira mais sensata possível.

Como parte dessa experiência de evolução, vamos citar um exemplo bem simples, ligado inclusive ao budismo: imagine algo relacionado à palavra “meditação”. Provavelmente você, assim como a maioria das pessoas as quais pedi isso, imaginaram um monge meditando, provavelmente por ser uma cena recorrente em diversos filmes. Agora expanda isso: um monge dificilmente vive sozinho. Um monastério normalmente abriga mais monges, aprendizes, colaboradores, entre outros… nunca estão de fato sozinhos. Eles compartilham seus pensamentos, ensinamentos, descobertas pessoais uns com os outros.

Na nossa realidade, costumeiramente distante de monastérios, é comum termos pessoas ao nosso lado. Mas colaboramos normalmente entre nós? Nem sempre. Aqui quero introduzir, caso você ainda não conheça, o conceito de comunidade. Uma comunidade é constituída de pessoas que agem em prol de um objetivo comum. O monastério é um exemplo claro de comunidade, assim como deveria ser o time com o qual você trabalha.

Se você desenvolve software hoje, com certeza já ouviu falar de comunidades de software. Essas comunidades trabalham, muitas vezes sem dinheiro, em prol de espalhar conhecimento sobre determinada área de conhecimento – seja de uma linguagem, plataforma, tecnologia…

Temos como exemplos aqui no Brasil diversas delas – notadamente Appsterdam, SouJava, GURUs e PHP-(alguma coisa) país afora, e tantos outros que seria impossível listar aqui. Todos, além de construir uma estrutura de aprendizado em seu próprio foco interagem entre si por ter objetivos em comum. Mesmo empresas investem nessas comunidades, como é o caso dos GDGs (Google) e da MSDN (Microsoft).

Além do óbvio compartilhamento de conhecimento por meio de palestras e eventos, o que mais uma comunidade pode trazer de bom para o seu dia a dia codificando? Ora, praticamente todas as ferramentas que o auxiliam no desenvolvimento hoje, como frameworks, suítes de testes, documentação, servidores… de novo: uma comunidade trabalha em prol de um mesmo objetivo. Pessoas trabalham, muitas vezes sem ganhar um tostão para isso, para fazer a biblioteca de url routing que você está usando nesse momento. E como fazer isso sem dinheiro, sem um gerente? Compartilhando conhecimento, obtendo feedback continuamente e, principalmente, aprendendo um com o outro.

“Ok, mas o que isso tem a ver com o time aqui da empresa?”, você pode estar se perguntando. Imagine seu time, trabalhando com o mesmo ânimo que um projeto opensource, como uma comunidade. Pessoas interagindo ao invés de competir (sim, eu sei que isso acontece no seu time de um jeito ou de outro). É uma mudança de mentalidade. Imagine seu time discutindo o produto no qual vocês estão trabalhando como se estivessem a definir os próximos passos do Spring/Symfony/Rails/Django… se o empenho em trocar conhecimento entre o time for incentivado, se as pessoas fossem reconhecidas publicamente pelos seus feitos e fossem humildes com relação às suas falhas. Aceitar feedback como forma de aprendizado. Este não é um ambiente mais amigável? É o clima em comunidades de software.

Se você leu isso e achou algo revolucionário, no mau sentido da palavra, (então provavelmente você é um gestor à moda antiga), aqui vai uma outra “revolução”: trabalhar com TI é evoluir constantemente. Diferente de outras áreas do conhecimento, a cultura que gira em torno desta matéria está sendo reinventada todos os dias. Scrum, Integração Contínua, Gestão do Conhecimento são tópicos nos quais você deve pensar não só pelo valor que eles agregam ao seu produto, mas também às pessoas executando-o.

E, como uma comunidade aberta, saber aprender mesmo em situações negativas – como em feedbacks/retrospectivas com críticas a empresa ou a gestão. Sim, gestores, diretores, e vários “C-alguma coisa-O”s devem deixar de pensar no cargo e sim no papel executado no contexto da empresa – assim como cada um tem seu papel nas comunidades. Essa mudança de paradigma, de descer do degrau e conversar como pessoas em diferentes papeis aproxima o Executivo do Tático e ambos do Operacional.

Mais uma nota aqui: em empresas ou comunidades, sempre devem ser pessoas a lidar umas com as outras – apesar de que alguns ainda acreditem que seu cargo deva fazer esse meio de campo.

Em resumo, trazer o ambiente de comunidade para dentro da empresa só tem benefícios, se devida e sensatamente executado. Seja o desenvolvedor que interage com os outros do time, aprenda e ensine sempre. Seja o gestor que ouve e faz o que é necessário para que o time, que inclui você, estejam alinhados com relação ao objetivo. Seja o executivo a deixar sempre clara a visão do projeto para todos.

Sejam a comunidade a levar seu desenvolvimento a um novo patamar. Sejam fãs de sua própria comunidade e façam o possível para que ela tenha cada vez mais fãs. Façam isso juntos, como comunidade, fazendo o necessário para tornar seu dia a dia num “estado de espírito” compartilhado, prazeroso e produtivo, para todos.

Desenvolvam Zen, até a próxima!

PS: Perdoem-me budistas se cometi algum equívoco aqui; sou todo ouvidos para aprender corretamente e de maneira mais ampla. Precisei ser breve nesta descrição.

(postado originalmente em Trabalhe (Z|B)em acompanhado @ iMasters)