sábado, 4 de maio de 2013

Não, o problema não é a linguagem. O problema é você.

Sim, o problema é você.
Nos últimos meses tenho lido e presenciado um volume considerável de programadores reclamando das linguagens de programação com que trabalham. Acho justo, já que como disse Bjarne Stroustrup, existem somente dois tipos de linguagens de programação: aquelas das quais as pessoas reclamam, e aquelas que ninguém usa. ("There are only two kinds of languages: the ones people complain about and the ones nobody uses").

Mas darei nome aos bois: tem muito programador Java por aí querendo migrar para linguagens como Ruby ou Scala só porque em Java "é muito difícil fazer isso ou fazer aquilo". Nada contra migrar de linguagem. Eu até gosto de estimular a diversidade, pois considero que na jornada para se tornar um artesão de software é necessária essa ecleticidade de conhecimento. O problema é o motivo.

Ruby (ou Scala, ou coloque sua linguagem favorita aqui) tem closures. Java não tem (ainda, diga-se de passagem). Ou qualquer outro motivo parecido. Daí eu pergunto: você realmente sabe o que é uma closure? Sabe usar e pra que serve? E estas perguntas valem também pra qualquer motivo.

É uma questão de bagagem. Ao invés de tentar procurar uma linguagem melhor, o verdadeiro objetivo é como conseguir ser um programador melhor. Perdoem-me, mas muitos dos quais ouvi essas coisas programam mal. Muito mal. E não é "achismo". É a experiência de ter programado junto. Outra parte não posso afirmar que programa mal, pois não tenho esta experiência. Mas onde há fumaça...

Escolha uma linguagem e fique com ela. Até ficar bom. Não importa qual. Quão bom? Bom o suficiente pra perceber suas limitações em saber o que realmente está fazendo. Afinal de contas, pense como empregador: você prefere alguém que é ruim em várias linguagens ou alguém que é no mínimo "meia-boca" numa única? Vale uma reflexão, mesmo que seja pequena...

Pois no final de tudo uma linguagem de programação é apenas uma ferramenta que lhe permite expressar suas ideias. Se você não possui ideias (ou possui ideias ruins) e não sabe expressá-las corretamente, qualquer linguagem serve: Algol, Fortran, Cobol, C, Java, C#, Ruby, Scala ou Clojure. Você não vai conseguir usar nenhuma mesmo...