- 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
Obrigado pelo ótimo texto!!
Encontro conforto na ideia de que este texto não é uma checklist e ganho coragem com a ideia de que não existem atalhos.
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.
Lembro do comportamento que imaginei durante a entrevista.
Pessoalmente, também considero importante "sempre pensar no que estou construindo".
Era mesmo um bom termo: pensamento crítico
Isso realmente me ajudou muito. Obrigado pelo ótimo texto.
Então basta pedir para o LLM ler a documentação oficial para você!
RTFM: leiam a documentação oficial.
Embora digam que não é uma checklist, acho que vou adotá-la como minha checklist.
Concordo muito com a ideia de que é preciso consultar a documentação oficial.
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.
.... 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.
As frases são difíceis demais..
Na web, sim.
Não são todos, mas a maioria dos itens realmente faz sentido para mim.
Comentários no Hacker News
Não fazer suposições é o mais importante nos negócios
Ao lidar com algo novo, gosta de fazer algumas suposições antes de ler a documentação de referência a fundo
É melhor consultar diretamente a fonte em vez de depender de Stack Overflow ou LLMs
Os melhores desenvolvedores se comunicam e aprendem com pessoas de todos os níveis
Usar bem o Stack Overflow pode ajudar muito
Os melhores programadores podem ter ótimo desempenho mesmo sem formação em CS
Além da programação, a comunicação com o domínio de negócios também é importante
Ler e entender mensagens de erro ajuda muito na resolução de problemas
asdfpara gerenciar versões de Python, Go e NodeJS, foi possível resolver problemas por meio das mensagens de erroO que é
asdf? Você precisa olhar os avisos.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...