Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Postado em
15 December 2010 @ 11:53

Tag(s)
Desenvolvimento, Linguagens, Opinião

O poliglotismo “cria” bons desenvolvedores?

Não.

Vejo algumas concepções falaciosas em nossa comunidade que há muito já foram superadas em outras profissões. Uma delas é que dominar mais ferramentas torna o profissional melhor. Será mesmo?

Estudamos tanto lógica para aprender a programar e nos esquecemos de uma armadilha lógica básica: confundir causa e efeito com correlação. Ou, pior, caímos na falácia do Efeito pela Causa e acabamos invertendo as coisas. O fato é que quanto melhor o profissional, mais ferramentas ele vai querer explorar.

Explico: um bom desenvolvedor vai querer aprender mais linguagens para aumentar seu repertório de soluções. Um péssimo desenvolvedor pode aprender 20247232 linguagens e o máximo que conseguirá é ser um péssimo desenvolvedor em 20247232 linguagens. Causas: dedicação e proficiência. Efeito (um deles): desejo de expandir o conhecimento. E, assim, temos um ciclo virtuoso.

Não me entenda mal: eu acredito que conhecer várias linguagens é algo muito positivo. Mas também vejo acontecer um tipo de “pressão social” por isso, como se não pudessem haver preferências e predileções. É o mesmo tipo de pressão social que rola se você falar que não gosta de “The Beatles”. As pessoas vão te olhar feio, pode ter certeza (os caras foram – ou ainda são – muito fodas e mudaram muita coisa, só não fazem o meu estilo, então por favor não arranquem meu couro – e olha eu com medo da pressão). 😉

Em geral, quando eu digo que acho legal conhecer e brincar com várias linguagens mas que prefiro, de longe, desenvolver com Ruby, muita gente já “olha torto”. Veja bem, eu não quero dizer que vou escolher Ruby pra tudo for desenvolver – isso é ser cego. O que eu quero dizer é: se eu estiver num “empate técnico” durante a escolha de linguagem, vou preferir Ruby sempre (hoje, pois o futuro não se sabe, não é?). Além disso, quase sempre que eu for programar algo por diversão, vai ser nessa linguagem.

Acredito que há ótimos desenvolvedores monoglotas (que logo sentem a necessidade de expandir seu vocabulário) e péssimos desenvolvedores poliglotas. E vice-versa. Não é um requisito, é uma opção. Como diz aquela famosa frase: “Você pode escrever Fortran em qualquer linguagem”.


10 Comentários

Comentário por
Thiago Arrais
15 December 2010 @ 13:46

Sério que você não gosta dos Beatles? Sério mesmo?

Brincadeira.

Ótimo texto, Lucas. Não pude deixar de lembrar de um dito bastante comum: “É possivel programar em COBOL em qualquer linguagem.” Ou seja, se o profissional se limita a aprender sintaxe e bibliotecas, não vai estar se expandindo em (quase) nada. Para realmente desfrutar uma nova linguagem, é necessário entender a filosofia, a razão de ser do negócio, aprender a pensar de um novo modo.

Claro que existem linguagens que não têm absolutamente nenhuma filosofia além de o autor achar que precisava criar uma linguagem para chamar de sua. Mas se a linguagem não tem uma filosofia por trás, não é uma linguagem que valha a pena aprender.


[…] This post was mentioned on Twitter by Thiago Arrais, Lucas Húngaro and tomas_stefano, Gabriel Rubens. Gabriel Rubens said: RT @lucashungaro: O poliglotismo “cria” bons desenvolvedores? ~ http://bit.ly/h110uq #blog […]


Comentário por
Andrei Formiga
15 December 2010 @ 13:55

Discussão interessante. Concordo que confundem causa e efeito, mas discordo que aprender novas linguagens não torna o desenvolvedor pelo menos um pouco melhor. Aprender novos paradigmas, novas formas de fazer as coisas, dá ao desenvolvedor uma visão mais ampla sobre a programação. Isso é um aumento no conhecimento, e portanto uma melhoria sim.

Claro que aprender mais linguagens não cria, automaticamente, desenvolvedores melhores. Mas digamos que temos 2 desenvolvedores com talento e dedicação similares, mas um sabe só uma linguagem e o outro aprendeu várias. Se eu tivesse que apostar, eu diria que o segundo é melhor. Depende da linguagem do monoglota também, e o que ela pode indicar; um cara que só sabe Java talvez seja programador só porque é um emprego, mas não gosta especialmente disso. Um cara que só sabe Haskell é quase certamente um entusiasta, e possivelmente seja melhor no que faz do que o cara de Java.

Agora, se alguém olha estranho pra você quando diz que prefere usar Ruby, essas pessoas devem ter algum preconceito com Ruby (ou com outro elemento da história). Acho que todos, ou a maioria dos desenvolvedores escolhem uma linguagem “principal”, mesmo que saibam e usem ocasionalmente várias outras. De toda forma, é uma reação estranha.


Comentário por
Lucas Húngaro
15 December 2010 @ 14:27

Andrei, é bem por aí mesmo.

Como eu disse no texto, torna-se um ciclo virtuoso. Aprender outras linguagens vai ajudar o profissional a melhorar, que por sua vez vai querer aprender outras e assim vamos.

O que eu discordo é com essas duas falácias: “para ser um bom desenvolvedor, *tem* que ser poliglota” e “aprender várias linguagens vai te tornar um bom desenvolvedor”.

O bom desenvolvedor vai procurar aprender várias linguagens como forma de expandir seu conhecimento (ele não se torna bom por isso, ele já é bom e, então, melhora). O desenvolvedor ruim vai procurar aprender só porque “dizem por aí” que é uma boa. E vai continuar sendo ruim.


Comentário por
Felipe Pavao
16 December 2010 @ 8:32

É como se houvesse essa tal pressão social pela expansão do conhecimento. Concordo e já vivenciei isso que você mencionou sobre o cara ruim permanecer ruim mesmo aprendendo coisas novas.

Acho que o cuidado que devemos ter é dar feedback verdadeiro dentro de nossas organizações, e tentar nivelar alguém que esteja com dificuldades antes de incentivar o aprendizado de novas linguagens.


Comentário por
Lucas Húngaro
16 December 2010 @ 10:22

Felipe, um dos piores conselhos que já vi darem a desenvolvedores que ainda não assimilaram a maioria dos princípios do desenvolvimento de software é esse: aprender mais linguagens. Fazer isso sem as bases e princípios necessários é como construir um arranha-céus sobre areia movediça.


Comentário por
devGabriel
20 December 2010 @ 14:41

Concordo com você em todos os aspectos.
Uma das coisas que me deixa um pouco nervoso são os xiitas que encontramos em alguns lugares. Pessoas que defendem uma tecnologia até o fim e desdenham de pessoas que usam outras, sem ao menos ter conhecimento suficiente para isso. O bom desenvolvedor é aquele que consegue resolver um problema da melhor maneira possível, independentemente da linguagem.
Linguagem não faz ninguém melhor ou pior do que ninguém…

Um abraço,
Gabriel.


Comentário por
Adilson Carvalho
20 December 2010 @ 16:51

Dae galera.

Eu acho que ser poliglota é essencial. Eu comercialmente trabalho com C#.Net, e o meu jeito de programar (e até de entender) Linq nele melhorou muito quando comecei a programar mais em javascript e ruby.

Eu vejo que você acaba sendo melhor por estar exposto a idéias que talvez não tenham vez em uma linguagem, mas que são usadas em outras.

o BOO por exemplo me ensinou como é importante código claro e expressivo.

Isso alias em ruby é quase lei… quando vi que posso dizer timeout = DateTime.now + 2.minutes eu comecei a achar C# muito pouco expressivo.

Ótimo post!


Comentário por
Lucas Húngaro
20 December 2010 @ 17:05

Adilson, com certeza é muito importante!

Fundamental é conhecer alguns princípios básicos, que são úteis independente de linguagem. Sabendo isso, aprender outras linguagens é ótimo porque nos vemos livres de uma carga de conhecimento e começamos num quadro em branco. Daí podemos aprender sem alguns vícios e, assim, enxergar coisas que não conseguíamos ver antes, como foi o seu caso.


Comentário por
Jose
31 December 2010 @ 7:18

@Adilson Podes sempre criar extensoes em C# para resolveres o teu problema. Alias, e’ o que muitos teem feito para melhorar a legibilidade do C#.

@Andrei Isso mesmo! Eu gosto que programadores que pensam “outside the box”, que se focam no problema que teem de resolver e na melhor tecnologia para o fazer no minimo espaco de tempo, com o minimo esforco e com o menor custo para o cliente. Eu chamo a isto ser profissional.


Deixe um comentário