O que todo bom programador precisa saber? - Tiago Gouvêa Tiago Gouvêa
Home → Blog → O que todo bom programador precisa saber?
Por Tiago Gouvêa em 27 de Maio de 2018
É 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.
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.
Tente colocar isso na sua rotina, ler um livro (que te interesse, claro) e se esforçar mais para escrever corretamente e de forma clara.
"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.
Vá trazendo o inglês para sua leitura, busque no google apenas em inglês quando o assunto for programação e adquira assim mais conhecimento de qualidade.
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.
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.
Entender o git, te torna um programador muito melhor. Então, dedique-se a usar o git diariamente.
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:
Leia livros sobre esta linguagem da primeira até a última pagina, para entender todos os detalhes e nuances, que a maioria não sabe;
Acesse o stackoverflow (ou outro forum) e responda perguntas da pessoas sobre essa linguagem. Isso prova para você e para os outros que você realmente domina algo;
Submeta uma palestra para um evento pequeno na sua cidade, ou grande como o TDC e ajude aos demais a entender aquela linguagem;
Deixe projetos públicos no seu github com códigos nesta linguagem. Faça seu repositório ser sua carta de entrada para um novo emprego ao invés do currículo;
Participe de algum projeto open source, pegando uma issue em aberto. Boa parte dos grandes projetos marcam as issues "boas para começar", indicando que são as melhores para quem está chegando naquele repositório;
Vá a eventos como o Campus Party e fique por conta de ver todas as palestras sobre sua linguagem favorita, converse com os palestrantes, ajude outros participantes. Isso te ajudará e entender o quanto você realmente sabe, e o que ainda não entende;
Procure saber o que estão preparando para as próximas versões que serão publicadas da linguagem. Quais serão as melhorias? O que vai útil mesmo? Quando ela for lançada você já saberá como tirar melhor proveito dela;
Concentre-se com toda sua força em ser o melhor programador desta linguagem. Você certamente não será o melhor, mas poderá sim ser um dos melhores.
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.
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.
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!
O que exige a profissão "programador"
Etiquetas:aprender programação, git, github, java, linguagem programação, programação, stackoverflow
Participar comentando (4) →
Postagem maravilhosa, agregou bastante. Obrigado!
Thiago Silva 15 de Julho de 2018
Verdade Tiago, estou aprendendo de fato Ruby on Rails, porém não me atrapalho de saber um pouco de PHP, porém Saber Ruby on Rails é o foco principal.
Danilo Sampaio 28 de Maio de 2018
Esse negocio de saber somente uma linguagem, não cola. Pois todo vaga de TI quer que o cara saiba Java, C#, Html, java scripit, php, JSP etc. BAnco X, banco y etc. Em fim quer que o cara seja superdotado. Hoje dia você não consegue um bom emprego senão dominar varias linguagens.
Tiago Gouvêa 28 de Maio de 2018
Entendo seu ponto de vista Danilo.
De fato, é preciso saber várias coisas né… este tipo de vaga é feita para todos. Quem é muito bom MESMO em algo, não entra neste tipo de vaga. Quem é especialista em algo (talvez até com certificação) não entra em fila, e não participa deste tipo de processo de seleção.
HTML, CSS, JavaScript são coisas que se aprende em poucas semanas. JavaScript, já exige um pouco mais de dedicação. Para quem vai pro "caminho web", dependendo do foco, são "linguagens agregadas", que entram no pacote, mesmo sem ser o foco principal.