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.

Tags: , , , , , ,

18 Responses to “Programador “Religioso” x “Filósofo””

  1. Na realidade, eu acho que é mais uma questão de tirania/inexperiência mesmo. Também já pensei a respeito deste problema que, aliás, Pascal descreveu com quase perfeição no seu conceito de tirania, o qual trato aqui: http://www.itexto.net/devkico/?p=596

  2. Tetsuo says:

    Um problema é que todo religioso vai se dizer um filósofo, e um filósofo, depois de muito pensar, pode chegar à conclusão de que determinada tecnologia é melhor do que as outras para uma determinada classe de aplicações, e vai recomendar seu uso. Como diferenciar os dois?

    E quando abandonar a filosofia em prol do pragmatismo? Não dá pra realmente aprender uma ferramenta se você não se aprofundar nela. Mas como se aprofundar em algo quando existem tantas outras para ‘testar e conhecer’?

    E a ferramenta ‘que te faz ser mais rápido, mais produtivo, com mais qualidade e que te dá mais conforto para trabalhar’, não seria provavelmente aquela que é a ’sua preferida ou aquela que você escolheu para seguir e amar’?

    • Um problema é que todo religioso vai se dizer um filósofo, e um filósofo, depois de muito pensar, pode chegar à conclusão de que determinada tecnologia é melhor do que as outras para uma determinada classe de aplicações, e vai recomendar seu uso. Como diferenciar os dois?

      Realmente isso é complicado. Com o passar do tempo você começa a reconhecer quem pensa com a cabeça e quem é fanático por uma tecnologia. No meu caso, por exemplo, a avaliação é totalmente empírica. Não sei te dizer um método para descobrir isso a não ser ficar atento para pequenos sinais como o cara não mostrar pontos negativos da ferramenta, não considerar outas ferramentas como possíves soluções (ou sequer conhecer soluções alternativas), transformar “bugs” em “features” e por aí vai.

      E quando abandonar a filosofia em prol do pragmatismo? Não dá pra realmente aprender uma ferramenta se você não se aprofundar nela. Mas como se aprofundar em algo quando existem tantas outras para ‘testar e conhecer’?

      Não concordo. Você não precisa se aprofundar em todas as ferramentas para aprender o mínimo necessário para se virar. Por exemplo, eu conheço razoavelmente o Django. Nunca me aprofundei por muito tempo e não conheço todos os mínimos detalhes, mas conheço o suficiente para quando aparecer um problema específico que ele possa ser útil ou se encaixe bem na solução eu saiba que ele existe, saiba basicamente como funciona e saiba pelo menos por onde começar a usar. Eventualmente em algum momento na vida farei um projeto de vários meses com ele onde vou ter oportunidade de me aprofundar e aprender todos os detalhes de como funciona, mas enquanto isso meu conhecimento – mesmo que não tão profundo – já me ajuda e aumenta a quantidade de opções que posso analisar para trabalhar.

      E a ferramenta ‘que te faz ser mais rápido, mais produtivo, com mais qualidade e que te dá mais conforto para trabalhar’, não seria provavelmente aquela que é a ’sua preferida ou aquela que você escolheu para seguir e amar’?

      Não necessariamente. Por exemplo, eu amo Ruby, adoro saber das novidades que saem no mundo Rails e da linguagem em si. Atualmente estou pensando em fazer um aplicativo para iPhone e é certo que vou usar o Titanium. Eu até poderia usar Ruby pra isso (Ruby Cocoa) mas conhecendo os dois eu entendo que é melhor usar o que será mais produtivo e rápido para o projeto ao invés de usar o que eu sigo e amo. A ferramenta ‘que te faz ser mais rápido, mais produtivo, com mais qualidade e que te dá mais conforto para trabalhar’ varia em função do contexto.

  3. Muito bom o artigo Guilherme.

    Conheço muitos xiitas que se você pensar em dizer que uma solução x se aplica melhor a um problema y, fala até babar.

    Seria muito bom se todos fossem um filósofo.

  4. vitor hugo says:

    é.. e neste caso você filosofou.

    gostei! :)

  5. camilo lopes says:

    opa! Guilherme, excelente post! porem poucos profissionais de TI sao filosofos seja um profissional de desenvolvimento, segurança da informacao etc. Sempre que dou uma palestra sobre Java é bem comum alguem perguntar qual melhor IDE? Dai ja podemos tirar que na propria faculdade/universidade os alunos ja herdam essa questao de : mais religiao e ser menos filosofo. Já fui assim um dia, quando a experiencia era quase 0. E seu post mim fez relembrar onde toda minha historia de religiao e filosofia comecou :D .
    Parabens!

    • Tetsuo says:

      Hum… qual é a melhor IDE para um filósofo?…

      É que responder ‘elas são só ferramentas’, é apenas ‘tirar o corpo fora’, evitar se comprometer (e não só em relação a IDEs).

      E um filósofo pode ter preferências pessoais, não pode? :D

  6. camilo lopes says:

    opa! o filosofo nao tem melhor IDE.
    “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.”.
    Em poucas palavras costumo responder, aquela que atende aos negocios do cliente para determinado projeto. Concerteza essa é a melhor IDE.”
    E a respeito da ultima pergunta, acho que um filosofo pode sim ter preferências pessoais, porem ele deve estar sempre aberto a mudanças. O “religioso” normalmente não está aberto a nenhum tipo de mudanças. É aquilo que ele impressou na mente e ja era, nem a força divina faz o cara o mudar :D .
    abracos,

  7. [...] Programador “Religioso” x “Filósofo” – Guilherme Chapiewski (Guilherme Chapiewski); [...]

  8. pango says:

    Guilherme,

    Gostei do seu artigo, como gosto da maioria dos artigos que você escreve. Quero apenas fazer uma pequena correção. “Religião” vem, na verdade, do latim “religare”, que quer dizer “ligar, ou unir, novamente”, com o sentido de restabelecer os laços entre os homens e a divindade.

    Abraço.

  9. Guilherme.
    Concordo com seu ponto de vista, mas acho que poderíamos acrescentar “evangelista, guru” ao “linguagem ou framework favoritos”.
    Utimamente tenho visto cada vez mais profissionais “filosóficos” em termos de linguages e frameworks, mas “MUITO RELIGIOSOS” em termos de como fazer as coisas.
    - Se o guru X não recomendou, não serve.
    - O evangelista Y faz assim, então só assim funciona.
    Acho que tudo na vida exige estudo, e ponderação.
    Como você escreveu muito bem: “Com a mente aberta e sem encarar ferramentas como “a verdade definitiva” (ou descartando-as sem ao menos testar e conhecer como funcionam)”
    Parabéns.

  10. Hugo Rosa says:

    Concordo com a ideia do filosofo x religioso. Só tenho uma ponderação a fazer com relação aos iniciantes. Quando eles perguntam: “Qual a melhor IDE?”, “Qual a melhor linguagem?”, “Qual a melhor metodologia?”.

    Isto não é sinal de religiosidade ainda, mas poderá se tornar. Responder que não importa, não é bom também como já foi dito. Normalmente nestes casos você tem um discípulo perdido na sua frente, e como bom mestre filosofo mostre a ele o caminho a percorrer, mas não percorra junto (levar pela mão é religiosidade), apenas oriente.

    Explique para ele, que cada linguagem/metodologia/IDE tem sua particularidade, que é importante conhecer diferentes para ampliar a mente. Pode até dizer por qual você começou, mas explique também que cada mente pensa de modo diferente, e ser adaptam diferentemente.

    Eu sou prefiro ruby, mas uso outras também. E tenho amigos ótimos programadores em java, perl, C e assembly, e todos eles conhecem outras linguagens. E ao invés de discutir com eles eu aprendo, o que é bem melhor, pelo menos para mim.

  11. Logan says:

    Por isso que eu sempre digo: A melhor ferramenta é aquela que nós conhecemos.

  12. Eu adorei o seu post e acrescentaria o seguinte:

    O aprendizado sobre desenvolvimento de sistemas de TI, engenharia de software, metodologias gerenciais segue o seguinte ciclo de vida:

    1) Nasce religioso (é a única coisa que aluno sabe, ele está sob o efeito deslumbre)
    2) Cresce um filósofo religioso (enquanto busca conhecimentos diferentes daquele no qual se especializou também defende seu ganha pão [forma como entitula a linguagem/tecnologia nativa]).
    3) Pode seguir 2 caminhos (Filósofo ou Xiita) : Quando o estudo de alternativas rende frutos, quando as oportunidades de ser imerso a outras necessidades acontece e a pessoa aproveita esse momento se torna então um filósofo. As vezes [nem mesmo por culpa da pessoa] a pessoa é condicionada a executar sempre as mesmas práticas, nem sempre é instigado ou incentivado a usar coisas novas… quando isso acontece, por uma questão de defesa, a pessoa se torna xiita.

  13. Abraao says:

    Cara! Vc tirou as palavras da minha boca! Já fui um religioso, hoje sou filosofo, mas sempre temos aquela lang q preferimos, no meu caso C++.Ótimo Post!

Leave a Reply