150 pontos por GN⁺ 2025-04-10 | 19 comentários | Compartilhar no WhatsApp
  • Ao conhecer desenvolvedores de diferentes perfis, o autor passou a refletir sobre as características em comum dos melhores desenvolvedores
  • Este texto é um registro de observações escrito para inspirar desenvolvedores iniciantes ou pessoas que querem evoluir

Leia primeiro a documentação de referência

  • É importante criar o hábito de ler primeiro a documentação oficial, em vez de recorrer antes ao Stack Overflow ou a LLMs
  • As documentações oficiais de Apache, Python, TOML e outros projetos são, na prática, muito bem escritas
  • Criar o hábito de aprender diretamente na fonte ajuda muito no longo prazo

Entenda profundamente suas ferramentas

  • Saber “usar” uma ferramenta e realmente “entendê-la” são níveis diferentes
  • Quem conhece bem uma ferramenta consegue explicar cada configuração
  • Para entendê-la bem, é preciso conhecer:
    • sua história (por que foi criada)
    • seu presente (quem a mantém)
    • suas limitações (quando ela não é a escolha certa)
    • seu ecossistema (ferramentas ao redor, bibliotecas etc.)
  • Se você usa Kafka como tecnologia principal, precisa conhecê-la além do nível do que viu no Reddit

Leia as mensagens de erro com atenção

  • Se você observar uma mensagem de erro com calma, vai perceber que ela contém pistas
  • Os melhores desenvolvedores conseguem inferir o problema a partir de pouca informação
  • Em 80% dos casos, dá para resolver o problema apenas lendo bem a mensagem de erro

Saiba dividir problemas em partes menores

  • Ficar travado é algo que acontece com todo mundo, e só dá para sair disso quebrando o problema em partes menores
  • Pessoas com muita experiência ou grande capacidade de resolução de problemas fazem isso com facilidade
  • No fim das contas, o trabalho central de um desenvolvedor é dividir problemas grandes em problemas pequenos
  • Se você resolver os problemas simples passo a passo, o problema como um todo também será resolvido

Lide com código sem medo

  • Os melhores desenvolvedores não têm medo de ler código
  • Em vez de dizer “isso não é minha área”, eles simplesmente tentam e aprendem
  • Muitas vezes, até em um código que acabaram de conhecer, rapidamente se tornam a referência dentro do time

Ajude sempre outras pessoas

  • O desenvolvedor que ajuda mesmo quando está ocupado é um bom colega de equipe e um excelente profissional
  • Curiosidade e postura colaborativa são qualidades indispensáveis de um bom desenvolvedor

Escreva

  • Desenvolvedores excelentes também se expressam bem e sabem colocar suas ideias no papel
  • Compartilham seu pensamento por meio de blogs, palestras, atividades em open source etc.
  • A habilidade de escrever está diretamente ligada à estrutura do pensamento
  • O código de quem escreve bem tende a ser estruturado, claro e, às vezes, até espirituoso

Nunca pare de aprender

  • Independentemente da idade, quem continua aprendendo é quem realmente se destaca como desenvolvedor
  • Não têm receio de experimentar novas ferramentas ou linguagens
  • Não seguem cegamente as tecnologias mais recentes; sabem analisar por conta própria seus prós e contras
  • Mesmo sendo jovem, cair em ideias fixas faz o crescimento parar

Não se prenda a status

  • Bons desenvolvedores buscam aprender com qualquer pessoa, independentemente do cargo
  • Têm a atitude de reconhecer que até pessoas iniciantes têm algo a ensinar
  • Encontram inspiração em conversas com pessoas que trazem novas perspectivas

Construa reputação

  • Habilidade importa, mas fazer com que ela seja conhecida também importa
  • Reputação é um meio de ampliar sua influência
  • É possível construir reputação de formas como:
    • criar ou colocar em produção serviços importantes
    • desenvolver ferramentas conhecidas
    • contribuir para projetos famosos de open source
    • escrever livros que sejam amplamente citados
  • Reputação não se constrói da noite para o dia; exige esforço constante e tempo

Tenha paciência

  • É preciso ter paciência tanto com as pessoas quanto com os computadores
  • As pessoas ao seu redor não são burras; apenas não têm informação suficiente
  • Sem paciência, a frustração se acumula facilmente e a colaboração se torna difícil
  • Para resolver problemas difíceis, são necessários foco e persistência

Não culpe o computador

  • Os melhores desenvolvedores nunca culpam o sistema nem fatores externos
  • Mesmo problemas que parecem aleatórios à primeira vista têm uma razão lógica
  • O importante é ter a postura de investigar até o fim para encontrar a causa

Saiba dizer “não sei”

  • Em entrevistas, o autor já chegou a esperar deliberadamente pelo momento em que a pessoa dissesse “não sei”
  • O que importa não é a resposta em si, mas a atitude
  • Os melhores candidatos admitem que não sabem e então começam a raciocinar
  • A postura de reconhecer que não sabe mostra potencial de aprendizado
  • Pessoas que mentem ou fingem saber acabam sendo negativas para o time

Não faça suposições

  • Como na filosofia do PEP 20, diante de ambiguidade, nunca faça suposições
  • Os riscos de supor são:
    • se estiver errado, vira bug
    • mesmo se estiver certo, você pode passar a acreditar em uma premissa errada e causar problemas depois
  • Se você não tiver certeza:
    • pergunte
    • leia a documentação
    • use ferramentas de debugging
    • procure evidências

Mantenha a simplicidade

  • Pessoas inteligentes escrevem código inteligente; pessoas realmente excelentes escrevem código simples
  • Código simples é muito melhor para manutenção
  • Saber distinguir quando a complexidade é necessária e quando não é é a verdadeira marca de competência

Considerações finais

  • Este texto não é um checklist, e uma boa engenharia não é uma competição
  • Mas não se engane achando que dá para pular as partes difíceis
  • Não existem atalhos para se tornar um excelente desenvolvedor

19 comentários

 
dduha 2025-04-24

Obrigado pelo ótimo texto!!

 
openman 2025-04-17

Encontro conforto na ideia de que este texto não é uma checklist e ganho coragem com a ideia de que não existem atalhos.

 
geekbini 2025-04-13

Se você entende o projeto da empresa,
independentemente de se tornar um desenvolvedor sênior em qualquer área,
seja firmware, app ou web,
parece que você chega a um nível em que consegue depurar como o problema aconteceu
ao analisar logs de depuração da web, do app ou do firmware.

 
softer 2025-04-11

Lembro do comportamento que imaginei durante a entrevista.

 
wogns3623 2025-04-11

Pessoalmente, também considero importante "sempre pensar no que estou construindo".

 
wogns3623 2025-04-13

Era mesmo um bom termo: pensamento crítico

 
lighteach 2025-04-10

Isso realmente me ajudou muito. Obrigado pelo ótimo texto.

 
kylian 2025-04-10

Então basta pedir para o LLM ler a documentação oficial para você!

 
dudlf016 2025-04-10

RTFM: leiam a documentação oficial.

 
kandk 2025-04-10

Embora digam que não é uma checklist, acho que vou adotá-la como minha checklist.

 
haejuk99 2025-04-10

Concordo muito com a ideia de que é preciso consultar a documentação oficial.

 
aer0700 2025-04-10

Quando ensino programação pela primeira vez, acho que o primeiro sinal de aptidão como programador aparece em saber ou não ler as mensagens de erro com atenção.

 
postinsight 2025-04-19

.... O problema são as pessoas sem a noção básica de reconhecer que erros e bugs sempre vão existir — esses é que são charlatões.

 
roxie 2025-05-05

As frases são difíceis demais..

 
postinsight 2025-04-19

Na web, sim.

 
coremaker 2025-04-10

Não são todos, mas a maioria dos itens realmente faz sentido para mim.

 
GN⁺ 2025-04-10
Comentários no Hacker News
  • Não fazer suposições é o mais importante nos negócios

    • Desenvolveu habilidades de resolução de problemas na fabricação de semicondutores, onde o custo de hipóteses erradas é muito alto
    • É preciso sempre entender 100% da causa raiz
    • Evita stacks tecnológicas incomuns porque elas atrapalham a análise de causa raiz
    • Resolver o problema com precisão é a forma mais rápida de construir reputação
  • Ao lidar com algo novo, gosta de fazer algumas suposições antes de ler a documentação de referência a fundo

    • Ao aprender uma nova linguagem ou API, faz suposições com base no tutorial e depois lê a documentação de referência
    • Prefere linguagens e IDEs com suporte a recursos como Intellisense
  • É melhor consultar diretamente a fonte em vez de depender de Stack Overflow ou LLMs

    • Como em livros de matemática, no começo é difícil, mas com o tempo passa a ser possível entender
    • docs.rs para crates de Rust, hoogle para Haskell e o C++ reference são excelentes materiais de referência
  • Os melhores desenvolvedores se comunicam e aprendem com pessoas de todos os níveis

    • Pessoas novas oferecem perspectivas frescas, e obstáculos do passado podem já ter desaparecido
    • É preciso verificar periodicamente por que as regras existem
  • Usar bem o Stack Overflow pode ajudar muito

    • LLMs são úteis para análise de eventos em tempo real ou automação, mas não podem substituir programadores
    • Depois de entender um tema com ajuda de LLMs, é melhor consultar a documentação oficial
  • Os melhores programadores podem ter ótimo desempenho mesmo sem formação em CS

    • Há casos de pessoas de outras áreas que aprenderam programação e cresceram rapidamente
  • Além da programação, a comunicação com o domínio de negócios também é importante

    • É preciso considerar vários fatores além da programação
  • Ler e entender mensagens de erro ajuda muito na resolução de problemas

    • Ao usar asdf para gerenciar versões de Python, Go e NodeJS, foi possível resolver problemas por meio das mensagens de erro
 
postinsight 2025-04-19

O que é asdf? Você precisa olhar os avisos.

 
postinsight 2025-04-19

Bem, acho que a postura de não querer ser o melhor absoluto é melhor. Esse papo de escrever... de ajudar... entre esse tipo de gente...