É comum estudantes das áreas de tecnologia chegarem sedentos por aprender uma segunda, terceira, quarta linguagem de programação, imaginando que quantas mais linguagens souber melhor ficará no mercado.
De outro lado, faltam profissionais no mercado. Somam milhares de vagas em aberto, e é seguro dizer que toda empresa de tecnologia está, agora, precisando de bom programadores. Por isso escrevo este post, para separar o que é essencial do que é superficial, e ressaltar os conhecimentos que realmente constituem um bom programador.
Saber ler e escrever
A maior parte do que um bom programador aprende é lendo. A leitura é então a melhor ferramenta para aprender coisas novas e portanto, é preciso saber ler. Vamos mais a fundo; não estou falando saber ler um post ou um tutorial, mas ter a capacidade de ler um livro inteiro sobre programação. A leitura é um hábito, que você pode desenvolver.
A escrita, vem a reboque. Com alguma frequência pessoas chegam a algum grupo do qual participo e enviam uma pergunta, que ninguém consegue entender, relacionado a programação. E eu me pergunto “será que ele pensa da mesma forma que escreve?”, porque, se pensar, já tá explicado. Conseguir juntar argumentos para escrever uma pergunta, ou para contribuir com uma discussão num forum, ou até escrever um post, é algo desejável, e qualquer bom programador certamente tem essa capacidade.
Saber inglês
“Ha… dá pra ser um bom programador sem entender nada de inglês…”
Mentira! Lembro bem quando eu percebi isso. Eu tinha uma startup e programávamos com PHP usando Symfony. As informações que conseguíamos em português naquela época, eram ruins, muito ruins, parecia piada de mal gosto. Vimos que se um programador quisesse ser bom mesmo naquilo, teria que ler material em inglês.
Quando navego em alguns fóruns, grupos de discussão ou até o stackoverflow em português, fico constrangido com o nível das perguntas, e mais ainda, com as respostas.
Nunca fiz um curso de inglês. Este mês (maio de 2018) pela primeira vez na vida me matriculei em um curso (Wiseup) para aprender da forma certa e melhorar minha fala. Mas, ao longo dos últimos 15 anos, foi sempre tentando me virar pra ler e entender. Indo na marra mesmo, forçando a barra.
Mas, voltando no nível do conteúdo em português… pense numa linguagem, procure um livro sobre ela em português, se achar e se ele não tiver sido traduzido do inglês, será com certeza muito menor que um em inglês. Menos páginas significa menos detalhes, e saber superficialmente alguma coisa não será tão útil de verdade, não te tornará especial. Um bom livro (ou post) tem que saber te explicar detalhadamente o que é uma coisa, porque é daquele jeito, de onde veio, para que serve, várias maneiras de ser usada, cuidados ao usar, impactos com o uso… e por ai vai.
Você pode estar me achando um idiota, em querer dizer que todo conteúdo em inglês é tão melhor que o em português. Infelizmente, eu acho, e me incluo nessa estatística. Ache o blog de um “Tiago Gouvêa” lá fora e ele terá conteúdos muito mais consistentes que o meu, com muito mais embasamento.
E as linguagens de programação?
Calma! Dentre os principais requisitos para ser um bom programador, passam muito mais coisas que só saber um monte de linguagens de programação.
Git
Se você pretende um dia na sua vida fazer parte de uma equipe de programadores, trabalhar em uma empresa, ou ser pago para escrever código, você precisará saber usar o git (github, gitlab, bitbucket, etc). Pode ser que usem SVN ou TFS, mas sabendo o git você domina todo o resto.
Caso você já saiba uma linguagem e esteja partindo para a segunda, e não saiba usar o git, pare!
É impossível fazer em equipe um software de qualquer tipo, sem compartilhar o código através de um repositório. De forma resumida, o git te permite programar e alterar arquivos ao mesmo tempo que outros programadores, sem que um sobrescreva o outro, como aconteceria em uma rede local. Além de manter um histórico completo das alterações, tarefas a serem feitas, testes, etc.
Sem o git, o desenvolvimento do linux nunca teria sido possível, nem do windows, nem do macOS, nem do firefox, nem nenhum software que você usa.
Se estamos falando em ser um bom programador, estamos separando curiosos de profissionais.
Quantas linguagens de programação saber?
Se você é um novato, deve ter rolado até aqui só para saber quantas linguagens deve aprender.
Tenho uma má notícia para você; saiba apenas uma!
Explico. Tenho visto pessoas que estudaram C, C++, Java e estão indo para o Python, mas, de fato, não sabem nenhuma delas! Não entendem de verdade uma linguagem sequer. E aqui vem a parte mais importante deste post.
Saiba DE VERDADE uma linguagem!
Chega de querer encher seu currículo de linguagens, ou sair falando que sabe um monte. Vamos focar no que realmente importa.
Seja especialista em uma linguagem!
Chega de conversa, chega de embromação, chega de amadorismo! Sejamos pragmáticos e tenhamos objetivos concretos! Seguem minhas recomendações de como fazer isso:
Resumindo, ao invés de aprender “mal e porcamente” um monte de linguagens, dedique-se de coração em apenas uma.
Se você não for realmente bom em uma, não será bom e nenhuma.
Ha! Nada te impende de estudar outras linguagens, ser curioso e gostar de fuçar.
Algo mais
Na vida real de um programador, muitos outros atributos e conhecimentos te farão ainda melhor.
De fato, saber aprender, gostar de aprender, e se manter em estado de aprendizado constante é o que fará maior diferença.
Novamente, quantidade não é o mais importante, e sim, qualidade. Entender algo a fundo te torna muito melhor que saber várias coisas superficialmente.
Conhecer bibliotecas, pacotes, frameworks irão expandir sua compreensão. Te mostrarão que é possível fazer muito mais, usando o mesmo bom e velho código.
Utilizar alguns padrões de projetos (design patterns) aumentará também sua bagagem. Programar bem vai muito além de conhecer a sintaxe e uso de linguagens de programação, é saber como utilizar elas de forma inteligente, para ter mais resultado escrevendo menos.
Vá além do código, conheça sobre banco de dados, segurança e servidores, se ligue em devops e integração contínua. Ou seja, tenha uma visão ampla de todo o ecossistema ao redor do seu projeto buildado.
Comente!
Concluindo, me diga como foi pra você o caminho pra se tornar um bom programador, ou, o que acha importante os demais aprenderem também. Comente!