Quais eram as características em comum dos desenvolvedores excepcionais que você conheceu até agora?
Como venho pensando bastante ultimamente sobre temas como aprendizado, crescimento e produtividade, fiquei curioso sobre este assunto.
Indo além, em que pontos vocês acham que um bom desenvolvedor é diferente de um desenvolvedor excepcional?
Eu também agradeceria se vocês respondessem trocando "desenvolvedor" por outro papel/cargo ao qual pertençam ou que conheçam bem. (e.g., tech lead, CTO, CEO, fundador, designer, PM, ...)
Eu acho que os pontos em comum de desenvolvedores excepcionais são, em grande parte, os três seguintes.
-
Percepção do problema: encontram coisas que outras pessoas nem chegam a reconhecer como problema e identificam possibilidades de melhoria.
-
Definição do problema: observam a situação e as causas do problema em camadas e perspectivas muito diversas e, ao transformar suas experiências anteriores em padrões, reduzem o problema a algo muito mais simples (ou mais eficaz, mais fundamental) de resolver.
-
Resolução do problema: conseguem imaginar várias soluções possíveis e, entendendo os trade-offs de cada uma, escolhem a solução que faz sentido para a situação atual da organização. Também sabem em que momento e com base em quais sinais essa decisão deve ser mudada. E aplicam a solução em unidades pequenas, de um jeito que permita receber feedback rapidamente.
7 comentários
Senso de moda: nota zero.
Se for para falar de um traço em comum, isso é a única coisa que me vem à cabeça.
É meio brincadeira, meio verdade..... rsrs
Basicamente, eu também acho que desenvolvedores são pessoas que resolvem problemas.
Mas não acho que seja algo que precise ser limitado apenas a desenvolvedores; eu apontaria conexão como a característica das pessoas extraordinárias.
Há muitas coisas na cabeça delas — conhecimento, experiência, ideias e assim por diante — e acho importante saber se a pessoa consegue conectá-las bem.
Quando se identifica um problema, pensar em uma solução é uma conexão de primeiro nível,
mas conectar um problema a outro para imaginar uma situação mais complexa e buscar uma solução diferente também é conexão,
assim como conectar várias soluções e ideias para criar uma solução mais simples, flexível e superior também é conexão.
Não apenas no desenvolvimento: acredito que, nos dias de hoje, é uma habilidade muito importante conseguir relacionar desenvolvimento com aspectos de negócio ou conectar coisas que aparentemente não têm nada a ver entre si.
Também fiz a pergunta no Facebook, e o Kim Chang-jun comentou que eu deveria consultar um artigo. Fiquei pensando como não tive essa ideia antes.
Como o artigo de 2015 chamado “What Makes a Great Software Engineer?” foi citado 150 vezes, pretendo lê-lo.
https://ieeexplore.ieee.org/abstract/document/7194618
spilist2, olá! Acho que também vi você fazer essa pergunta no Facebook :) Eu também sempre penso nisso, mas por acaso o conteúdo do artigo é algo que você recomendaria?
Acho que o artigo provavelmente é uma dissertação de doutorado (
dissertation), e pelo PDF ele tem nada menos que 300 páginas. https://digital.lib.washington.edu/researchworks/bitstream/…Por isso, ainda só consegui ler até o capítulo 2 (
introduction,related works), mas mesmo só até aqui já gostei muito do conteúdo. O texto também é escrito de forma acessível. Recomendo.Eu li o capítulo 6 porque parece ser o ponto principal entre os artigos que você compartilhou rsrs, e o conteúdo é muito bom! Isso me fez refletir sobre mim mesmo mais uma vez!! rsrs Obrigado.
Depois de fazer a pergunta, fui pesquisar no Google e encontrei alguns textos. Também apareceu a palavra-chave 10x engineers.
https://linkedin.com/pulse/great-engineer-vs-good-marissa-fayer-mba/
Um bom desenvolvedor tem ferramentas especiais para resolver problemas. Um bom desenvolvedor é sistemático e racional, olha de todos os ângulos e analisa todas as entradas e saídas possíveis.
Um desenvolvedor excepcional, com base em todas as capacidades mencionadas acima, aplica isso a soluções prontas para uso imediato. Aplica de forma criativa padrões já conhecidos (princípios da ciência e da matemática, princípios de desenvolvimento lean etc.) a novos problemas da vida real.
Os desenvolvedores mais excepcionais sabem ouvir. Ouvem o problema, ouvem as partes interessadas e aquilo a que elas dão valor, ouvem o mercado, ouvem o feedback. E ouvem a voz interior que sugere abordagens criativas.
==
https://www.quora.com/How-do-you-identify-a-good-vs-great-engineer
Há respostas demais... mas olhando só algumas das mais votadas:
(Usando o exemplo da pessoa que trouxe um ventilador para a esteira transportadora) uma pessoa preguiçosa sempre procura uma forma de não trabalhar. O engenheiro preguiçoso é o melhor engenheiro.
Um bom engenheiro resolve o problema que lhe foi pedido. De vez em quando faz cursos para melhorar sua própria capacidade técnica. Um engenheiro excepcional vai um passo além do que foi pedido.
Quando as pessoas têm perguntas, procuram por ele.
Aprende continuamente.
Compartilha de forma constante o que sabe.
Defende o que considera certo, mas também sabe quando recuar.
Não tem medo de colocar a mão na massa.
Verifica se não existem bugs semelhantes em todos os outros sistemas (ou se já foram corrigidos).
Propõe uma solução ou arquitetura de longo prazo para evitar que bugs parecidos voltem a acontecer. (com uma análise de custo/benefício entre cada solução)
Também olha além da sua área de especialidade para ver se outros grupos não passaram por problemas semelhantes. (ou já entrou em contato com eles)