Categories
Comunidade Engenharia de software Mercado

Programador “Religioso” x “Filósofo”

Há algum tempo atrás enquanto usava o GTalk encontrei uma mensagem sensacional que o Anselmo Alves havia colocado no seu status:

“Philosophy is questions that may never be answered. Religion is answers that may never be questioned.”

(“Filosofia são questões que podem nunca ser respondidas. Religião são respostas que nunca podem ser questionadas.”)

Quando li essa frase imediatamente lembrei do que acontece no dia-a-dia do nosso mercado; do ambiente de trabalho a conferências e listas de discussão. Sem querer entrar em detalhes profundos ou em opiniões/flames sobre assuntos não-técnicos, vejo que existem dois tipos de programadores: os Religiosos e os Filósofos.

A palavra “religião” vem do latim “religio”, que significa “prestar culto a uma divindade”. Os programadores Religiosos fazem exatamente isso: aproveitam todas as oportunidades que podem para louvarem a sua linguagem ou framework favoritos. Os Religiosos dificilmente aceitam “religiões” diferentes da sua e os mais extremistas acreditam que a sua linguagem ou framework resolve todos os problemas do universo e são a chave da salvação da humanidade. Eles aceitam tudo cegamente e nunca reconhecem ou questionam os defeitos desses projetos que apoiam (e em alguns casos mais extremos até transformam esses problemas em “features”). Quando aparece um problema pela frente não precisa nem pensar: ele usará a sua ferramenta favorita para resolvê-lo, não importa o que seja (um padrão também conhecido como “One Ring to rule them all”).

“Filosofia” vem do grego “philos” (que ama) + “sophia” (sabedoria), ou seja, “que ama a sabedoria”. Filosofia é a investigação crítica e racional de questões, ou seja, um programador Filósofo não está procurando defender uma linguagem ou framework mas sim em investigar várias delas, analisar como elas funcionam e refletir sobre como elas podem ajudá-lo a resolver problemas. Os Filósofos são curiosos; eles sempre querem compreender e questionar o funcionamento e utilidade das ferramentas que usam. Quando precisam resolver um problema eles analisam de forma racional todas as opções que conhecem e se nenhuma delas for boa o suficiente eles pesquisam e procuram uma opção mais eficiente.

Um programador precisa resolver problemas complexos com qualidade e precisa ser cada vez mais produtivo/veloz para atingir um objetivo (desenvolver um produto, terminar um projeto da sua empresa e por ai vai). A melhor ferramenta não é a sua preferida ou aquela que você escolheu para seguir e amar, e sim aquela que te faz ser mais rápido, mais produtivo, com mais qualidade e que te dá mais conforto para trabalhar. A melhor ferramenta é a que melhor atende os requisitos da sua profissão e do seu projeto, não o seu ego (ou sua religião).

Seja menos “religioso” e mais “filósofo”! Com a mente aberta e sem encarar ferramentas como “a verdade definitiva” (ou descartando-as sem ao menos testar e conhecer como funcionam) você terá muito mais chances de ser bem-sucedido.

Categories
Fun

Flame Wars

Para quem não sabe, flame war é uma discussão entre duas ou mais pessoas onde as pessoas ou grupos de pessoas defendem idéias diferentes e normalmente opostas. Cada um dos lados fica tentando desesperadamente derrubar o outro lado com milhares de argumentos normalmente ofensivos e exagerados, até que todo mundo sai na porrada e ninguém entende mais nada. E neste momento quando tudo parece que vai ficar tranquilo cada um dos trolls já está pensando no próximo flame war…

Eu até gosto de flame wars. Na verdade eu gosto de boas discussões, tanto de assistir quanto de participar. Elas em geral são muito produtivas pois exercitam os extremos de uma idéia e você sempre acaba aprendendo coisas interessantes sobre algum assunto.

O problema é que os profissionais da nossa área têm uma forte tendência a serem religiosos extremistas com suas tecnologias preferidas! Caramba, é impressionante, todos os desenvolvedores adoram discutir o sexo dos anjos da programação. Cada um acha sempre que a linguagem que mais sabe é a melhor. Uns acham que Java serve para tudo, até para fazer um sistema operacional. Outros acham que Perl é que é perfeito, que tem a velocidade da luz (um pouco mais rápido até). Quando chega nesse ponto é que deixa de ser uma discussão interessante para virar um flame war.

O motivo deste post é que nos últimos 10 dias eu participei de pelo menos 10 flame wars sobre diversos assuntos. O único deles que realmente foi interessante/útil foi um sobre webservices SOAP x REST que começou no ActiveResource, uma classe nova do Rails que faz mapeamento objeto-serviços (semelhante ao que o ActiveRecord faz para o banco de dados). Todos os outros 9 foram pura porrada sobre religião, preferências sexuais e etc: “Windows x Linux”, “Java x Perl”, “Ruby On Rails x Perl”, “Java Magazine x Mundo Java” e por aí vai. E eu reparei que isso não acontece só comigo ou só no lugar que eu trabalho, isso sempre aconteceu nos últimos anos e em todos os lugares que eu me lembro aonde tinham profissionais de TI.

Eu acho que o motivo disto tudo está ligado a isso aqui (retirado da descrição de “Flaming” na Wikipedia):

Muitas vezes, os flamers o fazem simplesmente para estabelecerem uma posição de pseudo-superioridade ou autoridade. Em outras, os flamers desejam simplesmente ofender e irritar participantes de uma discussão ou ainda alimentar animosidades entre duas ou mais pessoas participantes da discussão, e neste caso eles são denominados trolls. Há vezes em que o flamer encontra no flaming a única maneira de resolver as diferenças entre ele e alguma outra pessoa. Na maioria das vezes, porém, os flames são mensagens enfurecidas e pouco racionais publicadas por pessoas que tem sentimentos ou ligações fortes com o assunto em questão.

No final das contas um flame war acaba sendo como uma discussão de futebol. Cada um acha o seu time infinitamente superior, o melhor do universo. O outro time só tem viados, travecos e mongolóides. A discussão começa com declarações brandas como “vai perder o jogo seu botafoguense otário”, até que no final todo mundo está saindo na porrada esfregando a cara do outro no chão. E ninguém chega a lugar nenhum. E quando acaba começa tudo denovo, sobre o mesmo assunto. E vai dar no mesmo lugar.

Então resolví escrever esse post como um convite aos meus queridos colegas desenvolvedores: POR FAVOR, chega de discussões sem fundamento (pelo menos vamos maneirar um pouco, afinal de contas ninguém é de ferro, hehehe)!