Como chegar a 10x (resultados): o que qualquer desenvolvedor pode aprender com os melhores

E se eu lhe disser que você pode ser 10 vezes melhor que a média? Não é duas vezes melhor. 10 vezes melhor: uma ordem de magnitude. Você realmente se destacará. Você terá acesso a melhores empregos, salários mais altos e maior satisfação no trabalho.

Eu entrevistei, ensinei e mentorei centenas de desenvolvedores. Talvez o argumento mais valioso seja que haja uma enorme variedade de níveis de habilidade, mesmo entre os desenvolvedores que vivem da codificação há anos.

Ainda mais impressionante para mim é a facilidade com que a maioria deles pode melhorar. Também notei que um grande número de desenvolvedores deseja melhorar. O que eles parecem ter dificuldade é saber no que trabalhar e como trabalhar.

A boa notícia para aqueles comprometidos com a excelência é que a maioria dos outros desenvolvedores simplesmente não está ciente da oportunidade de melhorar ou não está motivada o suficiente para assumir o compromisso.

Simplesmente decidir se tornar um desenvolvedor 10x dará uma enorme vantagem sobre a concorrência.

Além do mais, 10x não se trata apenas de habilidades de desenvolvimento. Esse é apenas um fator em uma grande variedade de fatores importantes. Obviamente, você não pode ser um desenvolvedor de 10x sem as costeletas, mas as costeletas de codificação por si só não são suficientes.

As origens do meme de desenvolvedor 10x

Uma preponderância de pesquisa sugere que há uma diferença de ordem de magnitude no desempenho entre os desenvolvedores. Para citar Steve McConnell (autor, “Code Complete”):

A conclusão geral de que “existem diferenças de ordem de magnitude entre os programadores” foi confirmada por muitos outros estudos de programadores profissionais (Curtis 1981, Mills 1983, DeMarco e Lister 1985, Curtis et al. 1986, Card 1987, Boehm e Papaccio 1988, Valett e McGarry 1989, Boehm et al 2000).

Acontece que essa coisa de 10x vai muito além dos desenvolvedores individuais. As diferenças existem na produtividade da equipe em uma variedade de indústrias, níveis de habilidade entre todos os tipos de artistas e atletas, etc.

10x parece muita diferença. É fácil cometer o erro de que o resto de nós não tem chance de atingir esse nível de excelência - o simples fato é que a maioria de nós não. Mas o que é realmente interessante é que existe um caminho claro para a excelência. As pessoas não nascem grandes desenvolvedores. Eles chegam lá através de prática focada e deliberada.

Isso levanta uma questão importante: o que exatamente devemos praticar? O que os melhores desenvolvedores têm em comum e essas qualidades são coisas que o resto de nós pode aprender e imitar?

O que torna alguns desenvolvedores 10x melhores do que outros?

Existem muitos fatores que tornam alguns desenvolvedores 10x melhores que outros. É muito mais do que quantos ingressos eles fecham. É claro que fazer o trabalho é uma medida de vital importância, mas em que mais você pode melhorar para obter 10x e em que deve trabalhar primeiro?

Pesquisamos cerca de 1.000 desenvolvedores para descobrir. Primeiro, realizamos uma pesquisa informal no Twitter para coletar palavras usadas para descrever desenvolvedores extraordinários, e não tão extraordinários:

Em seguida, consolidamos as respostas em uma lista de palavras simples e descritivas e criamos uma pesquisa com duas perguntas de múltipla escolha.

O que faz um ótimo desenvolvedor?

1. Pense no desenvolvedor mais extraordinário com quem você já trabalhou. Selecione todas as palavras que as descrevem.

A idéia aqui é fornecer aos desenvolvedores uma lista de qualidades em que eles podem se concentrar. Essas são todas as habilidades que você pode praticar e aprimorar.

Vamos começar analisando o que torna ótimos desenvolvedores excelentes. Começaremos com os 5 principais:

Acontece que todos esses fatores superam medidas comuns de produtividade como "rápido" e "eficiente" por uma margem saudável.

Solução de problemas: a solução de problemas é o que os desenvolvedores fazem, por isso não é surpresa que essa qualidade receba notas altas, mas o que diferencia um solucionador de problemas médio de um ótimo solucionador de problemas? Resolvendo os problemas certos. Os desenvolvedores querem se sentir produtivos e frustrados quando há coisas que os impedem.

Na maioria das grandes bases de código, há partes do código que ninguém deseja manter. Se você reservar um tempo para cavar essa parte do código e limpá-lo, facilitará a vida de todos que tiverem que lidar com esse código.

Se houver processos comuns que precisam ser automatizados, reserve um tempo para automatizá-los. Marque algumas grandes vitórias e seus colegas de trabalho e gerentes apreciarão a iniciativa. Concentre-se nos problemas com maior impacto. Se todos os desenvolvedores da equipe gastarem 5 minutos por dia em uma tarefa repetitiva que poderia ser automatizada e levaria apenas 30 minutos para automatizá-lo, faça-o. Em uma equipe com 6 desenvolvedores, leva apenas 1 dia para pagar o investimento.

Hábil: As habilidades são desenvolvidas a partir de dois ingredientes: compreensão e prática. Primeiro você tem que saber o que praticar. Você precisa entender os conceitos que formam os fundamentos da linguagem e da arte da programação e, em seguida, precisa colocar esse entendimento em prática.

Se você não tem certeza do que aprender e praticar, consulte as "Principais estruturas e tópicos do JavaScript para aprender em 2017". A tecnologia muda rapidamente, mas o idioma se adapta lentamente, e ferramentas de aprendizado como o React & Redux ensinam padrões arquiteturais e conceitos de programação que o servirão por anos, independentemente da estrutura do mês.

Às vezes, entrevisto desenvolvedores que respondem maravilhosamente a todas as minhas perguntas, mas, assim que peço para que me mostrem exemplos em código, eles tropeçam. Você precisa de inteligência em livros e habilidade prática. Ter apenas um ou outro não o levará muito longe. Ao ler sobre novos conceitos, não deixe de praticá-los e tente inseri-los no seu código diário. Certifique-se de ter uma compreensão realmente sólida de quando e como usar os conceitos e um entendimento completo de como eles funcionam em aplicativos reais.

A melhor maneira de aprender a codificar é codificar.

Mentor / professor: saber muito sobre programação é ótimo, mas você é apenas uma pessoa. Não importa o quão produtivo você seja por conta própria, não há como corresponder ao desempenho de um grande multiplicador. Um multiplicador é alguém que multiplica a produtividade de equipes inteiras.

É difícil enfatizar demais o impacto que um multiplicador pode ter em sua equipe. Mesmo que o multiplicador não produza código sozinho, em uma equipe de 3, você ainda estará à frente se um deles for um grande multiplicador:

  • 2 1x devs
  • 1 10x dev não faz nada além de ajudar os outros 2 devs a atingir 5x
  • 3 devs podem corresponder à contribuição de valor de 10 1x devs

Na realidade, equipes com uma forte cultura de orientação tendem a se orientar. Todo mundo contribui com algum código. Um ou dois se destacam e investem mais tempo ajudando outros desenvolvedores e fornecendo análises de código de alta qualidade.

Obviamente, simplesmente jogar mais rendimento em um problema não produzirá melhores resultados mais rapidamente. (Consulte "O mês do homem mítico"), mas um desenvolvedor que compartilha as melhores práticas com a equipe e ajuda a escrever um código mais flexível, mais sustentável e mais livre de erros vale o seu peso em ouro.

Excelente aluno: Costumo dizer às pessoas para contratar alunos apaixonados. O mundo da tecnologia muda rapidamente, e ninguém pode acompanhar tudo, mas você deseja desenvolvedores que possam se adaptar rapidamente, se você decidir fazer alterações importantes na tecnologia. Se você deseja se beneficiar mais dos multiplicadores, também precisa contratar desenvolvedores treináveis ​​e ansiosos para aprender coisas novas. Os melhores desenvolvedores são mentores e mentorandos - ótimos professores que também entendem claramente que podem aprender coisas novas valiosas até mesmo dos novatos mais ecológicos.

Apaixonado: Para melhorar constantemente, você precisa estar motivado para ir além dos requisitos básicos do trabalho. Você deve ter um compromisso com a excelência e, à medida que melhora e obtém mais reconhecimento, esse compromisso é recompensado pelo reconhecimento e pela satisfação no trabalho.

Desenvolvedores apaixonados dominam seu ofício, desenvolvem um senso de orgulho e propriedade no trabalho e ficam mais felizes em seus trabalhos.

Muitos desenvolvedores me perguntaram como me tornar mais apaixonado e motivado. Minha resposta é melhorar. Coloque no trabalho. À medida que você adquire mais habilidades, começa a se divertir mais. (Consulte "Tão bom que eles não podem te ignorar").

Confie em mim, nenhum músico gostava de percorrer suas escalas e exercícios de velocidade até começar a sentir sua melhora. Poucos corredores adoraram a sensação de ficar sem fôlego até perceberem melhorias nos tempos de corrida ou até que ponto podiam correr antes de ficarem sem fôlego.

À medida que realizamos as coisas, acionamos ciclos positivos de feedback químico em nosso cérebro que nos enchem de um sentimento de felicidade ou euforia. A força desse efeito varia dependendo do tamanho do objetivo, mas mesmo pequenos objetivos podem desencadear o ciclo de feedback positivo.

Em outras palavras, se você estiver se esforçando para se sentir motivado a trabalhar em suas habilidades de codificação, comece com algo realmente simples que você possa fazer em alguns minutos e depois desenvolva isso. À medida que você repete o processo cada vez mais e ataca objetivos maiores, os níveis de dopamina no cérebro aumentam e, com isso, o prazer de aprender também aumenta.

À medida que você ganha mais habilidade, ganha mais paixão por dominar a habilidade.

O que os piores desenvolvedores têm em comum?

Independentemente de quantas grandes qualidades você tenha, existem alguns atributos negativos que podem realmente arrastá-lo para baixo. Felizmente, se você os conhece e tem a capacidade de ver claramente suas deficiências, talvez possa reduzir o impacto negativo.

2. Pense no pior desenvolvedor com quem você já trabalhou. Selecione todas as palavras que as descrevem.

Incompetente: Felizmente, o pior atributo dos piores desenvolvedores também é o mais fácil de corrigir. Se você não é um codificador muito bom no momento, confira "Aprenda a codificar: 13 dicas que podem economizar anos de esforço" e comece a trabalhar! Se você não estiver se sentindo muito motivado, role para cima e releia a seção sobre o desenvolvimento da paixão por seu ofício.

Arrogante: Este é muito mais difícil de resolver, mas simplesmente decidir fazer um esforço pode fazer uma grande diferença na maneira como as outras pessoas o percebem. Uma pessoa arrogante sente a necessidade de se inchar ou de abater outras pessoas para se sentir bem consigo mesma - mas isso nunca funciona. Em vez de se sentir melhor consigo mesmo, você pode sentir uma síndrome de impostor e ansiedade por outras pessoas descobrirem que você não é tão inteligente quanto se imagina.

Pessoas arrogantes frequentemente:

  • Suponha que eles sejam a pessoa mais inteligente da sala.
  • Recuse-se a explicar algo porque a outra pessoa "não entenderia".
  • Converse com os outros / condescenda.
  • Finja ser mais esperto do que realmente é. Frequentemente, as coisas do Google para parecer inteligente, em vez de admitir que há algo no mundo que elas não sabem. (Observação: nada de errado com o Google para aprender. Pesquisar no Google apenas para parecer inteligente é uma questão diferente).

Não cooperativo: as pessoas arrogantes frequentemente presumem que sabem melhor e, quando outras pessoas estão trabalhando em uma visão compartilhada, e pessoas arrogantes freqüentemente se recusam a entrar a bordo. Se você não concordar com algo, fale e seja ouvido, mas não presuma ter um entendimento completo de todas as compensações que o restante da equipe está considerando, e mesmo que você tenha um entendimento completo da situação, não use isso para justificar insubordinação e comportamento brusco. Sempre faça o seu melhor para ser gentil e prestativo.

Desmotivado: é difícil conseguir qualquer coisa útil se você não estiver motivado para participar do trabalho. Consulte a seção sobre o desenvolvimento da paixão acima.

Teimoso: O motivo de eu não consolidar "teimoso" e "não cooperativo" é que a teimosia não se resume à cooperação. Às vezes, os desenvolvedores ficam presos tentando fazer algo que simplesmente não funciona. Eles colocam dias em uma solução que não tem chance de sucesso, mas às vezes se recusam a admitir que estão perplexos. Freqüentemente, os desenvolvedores batem a cabeça contra um bug que eles ficam cegos por horas, quando outra pessoa pode ter descoberto a solução em minutos.

Não caia nessa armadilha. Esteja aberto ao fato de que todo desenvolvedor fica cego para problemas em seu próprio código de tempos em tempos. Todo desenvolvedor luta. Todo desenvolvedor precisa de ajuda de vez em quando. Esteja disposto a solicitá-lo e fornecê-lo quando for solicitado a você.

Outras qualidades dos desenvolvedores 10x

Na minha opinião, você deve se concentrar mais nos seus pontos fortes do que nas suas fraquezas. Escolha uma coisa para melhorar esta semana e foque nela incansavelmente. Mas talvez você tenha uma força maior não esteja na lista dos cinco principais. Aqui estão algumas outras qualidades que podem fazer uma grande diferença:

Pessoas honestas e comunicativas incentivam uma das características mais importantes de qualquer relacionamento de desenvolvimento: Confiança.

Muitas vezes, os desenvolvedores caem em uma armadilha onde desaparecem por um buraco de coelho por dias e, quando ressurgem, construíram algo que não se integra ao resto do aplicativo, ou você descobre que eles estão perseguindo seus cauda tentando resolver um problema que deveria levar horas ou minutos.

Comunicar, comunicar, comunicar. Não fuja sozinho por muito tempo. Verifique seu código todos os dias. Obtenha análises de código de pelo menos 1 ou 2 membros da equipe. Informe ao seu gerente o que você está trabalhando diariamente.

Isso criará confiança mútua. Sua equipe terá a chance de ajudá-lo a eliminar obstáculos e aprenderá que pode confiar em você para mantê-los informados e fazer progressos constantes e constantes.

Eficiência: O que mais me impressiona nesse ponto é o quão abaixo está a lista. É claramente um dos aspectos mais importantes da produtividade pessoal, mas a produtividade pessoal afeta a produtividade da equipe muito menos do que você imagina. Para ser verdadeiramente eficiente, você precisa se concentrar em atributos que melhorarão seu fator de multiplicação: Quanto você pode melhorar a eficiência de toda a equipe? Para muito mais sobre eficiência pessoal, consulte "Contagem regressiva de resoluções de ano novo do JavaScript". Particularmente o item 2: “Melhore seu processo de desenvolvimento”.

Próximos passos

Como vimos, existem muitos fatores importantes que contribuem para o sucesso dos melhores desenvolvedores. Então, por onde você deve começar?

A capacidade de resolver problemas é o item principal da lista. Aqui estão algumas coisas que você pode fazer agora para aprimorá-lo:

  • Faça alguns exercícios de codificação. Os iniciantes devem verificar a faixa de JavaScript no FreeCodeCamp ou os exercícios em JavaScript eloquente. Desenvolvedores mais avançados devem trabalhar em conceitos de arquitetura ao criar aplicativos práticos. Empurre-se sempre além do limite de seus recursos atuais.

O mesmo funcionará para desenvolver suas habilidades, suas habilidades de aprendizado e até mesmo seu prazer e paixão pelo código: Prática!

Quem poderia imaginar que tudo o que você precisa fazer para escolher quatro dos 5 principais atributos mais importantes de um desenvolvedor de 10x é a prática?

Para preencher a única peça que falta, ensine o que aprendeu a outras pessoas. Responda a perguntas, mentor, emparelhe o programa com seus colegas de trabalho e verifique se todos da sua equipe estão comprometidos com uma cultura de orientação.

Compartilhe sua nova paixão encontrada pela excelência com todos ao seu redor, e toda a equipe irá melhorar com você.

Não sabe ao certo como trabalhar?

Aprenda JavaScript com Eric Elliott. Traga a equipe com você!

Eric Elliott é o autor de "Programação de aplicativos JavaScript" (O’Reilly) e "Aprenda JavaScript com Eric Elliott". Ele contribuiu com experiências de software para a Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC e os principais artistas de gravação, incluindo Usher, Frank Ocean, Metallica e muitos outros.

Ele passa a maior parte do tempo na área da baía de São Francisco com a mulher mais bonita do mundo.