Posts Profissionais

O que todo bom programador precisa saber?

É 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.

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.

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.

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.

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.

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.

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.

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!

Tiago Gouvêa

Full-stack Developer, fazendo códigos desde o século passado. Criador da metodologia "Aprender programação em 20 horas" e diretor da startup App Masters, voltada para o desenvolvimento de aplicativos. Apaixonado por tecnologia e viciado em café.

Conteúdo relacionado

Respostas (13)

Escreva uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

  1. leandro

    Valeu brother, sei html, css básico javascript básico e estou me aprofundando em php logo que eu souber que estou sabendo pelo menos o avançado da internet irei para asp e java mais até lá e cérebro vlw

    1. Tiago Gouvêa

      Excelente! Só toma cuidado pra não saber só um pouco de cada coisa. PHP, ASP e JAVA me parecem ter o mesmo uso… talvez dê uma olhada só por alto em cada um, mas pega apenas um destes pra estudar pra valer e se tornar ninja nele!

  2. Eric

    Sou engenheiro eletricista, mas na faculdade me interessei por programação, estudei bem C e sinto que embora eu não seja excelente, eu percebi o que você explica no seu texto, isto é, que há muito chão pra percorrer para estudar uma só linguagem e melhorar seu nível de programação, sua noção de algoritmos e, enfim, entender mais de computação e as coisas que você pode fazer com ela.

    Mas eu tenho uma grande dúvida : como conseguir um emprego para ENTRAR em TI, uma vez que não é nada incomum as vagas pedirem domínio de várias linguagens e ferramentas? Não descarto estudar muitas, mas como você mesmo escreveu, só pra conhecer uma já leva muito tempo e experiência. Eu deveria aplicar para as vagas mesmo não conhecendo todas as tecnologias ou ir tentar estudar tudo de tudo antes de aplicar?
    Ainda sinto que pode ser especialmente difícil no meu caso, que me formei e já não posso estagiar, o que ajudaria a pegar experiência em um cargo que exige menos expertise.

    Ficaria feliz de conhecer a sua opinião! Valeu!

    1. Tiago Gouvêa

      Legal Eric! Eu escrevi um post que (acho) responde sua pergunta, é o “Emprego de programador (sem ter experiência) como conseguir?“. Outro post que está diretamente ligado a este é “Projetos (reais) para aprender programação“.
      Dê uma lida neles e veja se responde sua pergunta. 🙂
      Abraços

  3. Washington Elvira Filho

    A verdade é que a gente tem um grande vácuo no ensino aqui no Brasil. Eu sou estudante de TI e percebo o quanto uma faculdade só serve pra você saber que algo existe e pra diploma. A metodologia de ensino na maioria delas não é adequado.
    As faculdades e cursos se preocupam em te ensinar if, for, while, coisas tão básicas que você aprende tão facilmente, e se esquecem de explicar conceitos essenciais de programação que farão diferença. Por exemplo explicar direito a essência de um método, quando e por que usar publico ou privado, static, final, void pra instanciar objetos.
    Arquitetura! Esse é outro gap nos ensinos. Eu to tendo que aprender na marra fazer uma boa arquitetura de projeto. Quando eu devo criar uma classe específica pra realizar determinada atividade? Do banco de dados até a tela, quais as melhores arquiteturas para cada tipo de trabalho e porque? Como elas funcionam? Esse tipo de conhecimento sempre é passado de forma muito complexa. Os professores do Brasil que eu pego dificilmente explicam de forma clara e simples esse tipo de coisa.
    Nos videos em inglês eu realmente aprendo muito mais. Sempre tem essa preocupação de explicar de forma simples e didática, e mostrando o funcionamento. É muito comum você pegar uma aula de MVC por exemplo onde é cheio de desenho mostrando a arquitetura. Sinceramente, quem entende esses desenhos? Se a arquitetura serve pra usabilidade prática de um programa, não é melhor ensinar debugando um programa simples usando aquela arquitetura pra mostrar como ela funciona?
    É essa preguiça dos professores aliado à falta de interesse de quem tá aprendendo que faz com que o Brasil seja tão fraco em qualificação dos profissionais de TI.

  4. Romullo

    Tiago parabéns por este post brother! Eu tava lendo e querendo mais kkk muito bom o conteúdo e vi que estou no caminho certo em relação suas recomendações!

    Tinha duvida em relação a “saber (n) linhagens” e isso me prendia muito, eu não conseguia focar em nenhuma e meu aprendizado não evoluía!

    Como estou começando agora nesse mundo ainda tenho muito a aprender! Me formo esse ano em ADS mas confesso que só me “interessei e consegui” apreender algo realmente, de uns 6 meses pra cá. Até então eu estava achando que programação não era mim.

    Mas no fundo eu sei que sou apaixonado pela tecnologia e tenho muita facilidade pra aprender, nesse momento eu estou muito envolvido com JAVA, na qual já estou no desenvolvimento de um sistema ERP pequeno pra empresa onde trabalho no qual já esta em funcionamento (claro que no momento apenas eu que uso kkk) mas estou aplicando bem meus conhecimento e procurando me dedicar mais cada minuto!

    Estou aplicando o uso do GIT como citado acima, participo de fóruns, comunidades, até ano passado mesmo sem saber muita coisa(sabia mais do jeito errado) eu contribuía com projetos open source Android e fim estou procurando aprender muito e muito.. E vou procurar me dedicar ainda mais no JAVA, claro que sempre com o desejo de evoluir e procurar aprender sobre novas tecnologias já que o mercado esta sempre em contante evolução né rsrs!

    Vlw e abraço Tiago e parabéns por este site brother..

  5. Djalma

    Postagem maravilhosa, agregou bastante. Obrigado!

  6. Luana

    Olá !
    Adorei seu post , terminei meu curso tecnólogo em TI e quero mim especializar em programação .
    Vou fazer inglês logica de programação e programação orientada a objetos antes de escolher a linguagem que quero mim especializar , estou pensando em php ou sql.
    Gostei de suas dicas .
    Acha que estou no caminho certo ?
    Att
    Luana sampaio

    1. Tiago Gouvêa

      Olá Luana. Acho que está no caminho certo sim. Não existe um só caminho certo, existe o caminho certo pra você.

      Mas, de qualquer forma, faz sentido o seu raciocínio sim. 🙂

      Manda bala e boa sorte!

  7. Thiago Silva

    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.

  8. Danilo Sampaio

    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.

    1. Tiago Gouvêa

      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.
      Como eu digo no post, é bom aprender várias, mas saber pra valer ao menos uma!
      Grato por participar! 😀

      1. Joni

        Olá,

        É uma excelente questão. Quem está vocacionado para a Web deve entender várias linguagens agregadas neh? Eu digo isso porque na verdade trabalho há algum tempo na web e acho que nunca percebi a fundo uma linguagem. Obrigado pela sua partilha.