Assim como aprender uma nova língua, aprender uma nova linguagem de programação é no mínimo frustrante. O mais foda é você não conseguir se comunicar direito e nem mesmo com as ideias bem organizadas na sua cabeça você não consegue botar elas pra fora com clareza.
Agora que estou tentando aprender uma outra linguagem de programação achei interessante tentar traçar esse paralelo: Aprender inglês (ou qualquer outra língua) e aprender uma nova linguagem de programação.
Como acabei de voltar de um intercâmbio na Nova Zelândia e vi que ser fluente numa língua é muito mais que conhecer algumas nuances dela. Antes de sair do Brasil achava que meu inglês era excelente porque sempre li e ultimamente tenho escrito bastante coisa usando inglês, chegando lá vi que a história era outra…
Falta de confiança e regressão
A primeiro desafio foi vencer a falta de confiança. A sensação de voltar a ter 5 anos é horrível. Você conhece algumas palavras, consegue usar construções básicas da língua, mas, mesmo assim exige do ouvinte um esforço homérico pra entender. A dificuldade em se comunicar aliada aos erros consecutivos vão minando, ainda mais, sua confiança e começam a te tornar inseguro, pelo menos, foi assim comigo. Passei a pensar muito mais do que estava acostumado para falar qualquer coisa (o que é um erro gravíssimo) e, tornei o ato de falar comigo meio chato.
A falta de confiança faz também com que nós desenvolvedores demoraremos muito mais para dar um passo para frente e até para trás. Parece que até estruturas comuns são um bicho de sete cabeças - imagine que fazer um for
sem consulta na documentação não parece uma boa ideia.
A regressão (a sensação de ter 5 anos) é natural e, a menos que você esteja muito disposto a aprender, ela vai acabar te derrubando. Cansa não conseguir se comunicar direito. Enche o saco pra caralho você ter que se esforçar o triplo pra entender alguma coisa. Claro, que no caso de morar fora do país eu não tinha muita opção de desistir, mas, teve muita hora que eu, literalmente, mandei gente se foder porque eu não tava afim, ou seja, desistir e abrir mão de qualidade por cansaço passa a não te incomodar tanto.
Vícios
A experiência pode trazer com ela alguns vícios. Quando estava na escola de inglês percebi dois de maneira clara: usar the pra tudo e esquecer pronomes (segundo o professor um dos erros mais comuns entre estudantes latinos), por exemplo:
A frase “is very good to be here” parece estar correta e pra gente é bem fácil de traduzir, porém, a falta o pronome it no começo da frase ou ela fica sem sujeito. Um exemplo desses esquecimentos no maravilhoso mundo das linguagens de programação é, por exemplo, esquecer de colocar o $
para declarar uma variável em PHP ou esquecer de colocar public
na declaração de classe do C#.
É importante lembrar que cada linguagem tem sua própria maneira de resolver problemas. O inglês tem verbos auxiliares e modais para substituir as conjugações, o PHP tem arrays que substitui listas e hash maps. Não se livrar desses vícios vai fazer com que você tente escrever PHP em Java, vai empatar seu aprendizado e trazer com eles problemas de comunicação, código difícil de entender ou que jamais será aceito em uma PR.
Para vencer esses vícios é importante não tentar resolver um problema como se estivesse na sua língua nativa, pesquise e pergunte como os nativos resolvem o problema que você está enfrentando.
Não ser fluente
Desse aqui não tem como escapar e, nem é bem um problema… Tá mais pra uma consequência do desafio. A maior preocupação aqui é a incapacidade de entender de bate pronto o que está escrito ou como interpretar o contexto sem entender muito bem o significado de algumas construções e até palavras (métodos). O que mais recordo é pedir pra atendente do McDonalds repetir três vezes o que ela disse e ela só tinha perguntado: “Have it here or take away?” (HAHAHAHAHAHA).
A experiência e, claro, a prática fazem com que esse problema seja de todos os mais passageiro.
Sotaque e gírias
Ser fluente, infelizmente, não garante que você entenda TUDO. Um exemplo simples é fazer um português tentar acompanhar uma conversa entre dois paulistanos. São tantas gírias e a gente fala tão rápido, que fica bem foda de entender tudo e entender certo.
Um sotaque diferente ou qualquer gíria podem (e geralmente vão) prejudicar seu entendimento. O sotaque de uma linguagem de programação são os padrões que ela usa para as construções conhecidas como o foreach
, que no caso do PHP usa as
e no C# usa-se in
. As gírias são a criação de novas construções que facilitam a comunicação, como o list
do PHP que te permite popular variáveis a partir de um array
. Por isso é importante conhecer os coding standards da linguagem e sempre ler código dos “locais” pra saber como fazer isso e aquilo, assim, uma construção diferente não vai te pegar de surpresa.
E, é claro que não preciso dizer que a sintaxe é essencial, né? Não vai adiantar nada tentar aprender inglês escrevendo sempre em português…
A conclusão do paralelo
Os passos que estou seguindo para não cair nos mesmos erros do inglês são esses aqui:
1) Troque ideia com os nativos pra melhorar seu entendimento do idioma e as gírias deles, procure conhecer os coding standards pra não escrever nada que pareça alienígena para eles.
2) Pare de pensar como se estivesse falando sua língua mãe e passe a pensar como resolver os problemas e fazer as perguntas certas na linguagem que você quer aprender.
3) O único caminho pra vencer a insegurança e a regressão é ser fluente e, para isso é preciso estudar e praticar sempre que possível. Procure recursos, troque ideia com pessoas experientes e corra atrás!
4) Vá viajar, conheça coisas e pessoas novas! Esse é o melhor jeito de expandir seu conhecimento e viver novas experiências!
5) Agradecer o Augusto pela revisão, sem ele este post não faria tanto sentido :)