ti-enxame.com

O que diferencia os programadores excepcionais dos realmente bons?

Você sabe quem eles são. Eles são as estrelas do rock da programação:

  • Eles codificam 10X mais rápido.

  • O código deles simplesmente funciona.

  • Eles não apenas conhecem o idioma principal por dentro e por fora, mas também sabem como funciona sob o capô.

  • Eles sabem a resposta para quase todas as perguntas antes que você faça.

  • Alguns deles inventaram os princípios de programação que todos usamos.

  • E eles tendem a ser estranhamente humildes também.

O que há com essas pessoas? Existe algo no processo de pensamento que é fundamentalmente diferente do programador acima da média? Ou eles são simplesmente pessoas muito talentosas que trabalham duro?

Em outras palavras: como posso ser como eles? Sei o que acho que preciso aprender para ser tão bom, mas parece que levarei os próximos dez anos para aprendê-lo, e então meu conhecimento ficará obsoleto.

59
Robert Harvey
  • Humilde: Um programador excepcional nunca afirma que seu código é o melhor, na verdade ele estará sempre procurando uma maneira melhor (todas as chances que tiverem.) .

  • Paciente: Um programador excepcional terá paciência ilimitada (Isso não significa que eles perderão dias com um problema. Consulte: Solucionador de problemas) .

  • Solucionador de problemas: Um programador excepcional poderá resolver um problema em minutos que podem levar dias para o programador médio.

  • Curioso: Um programador excepcional será incapaz de resistir a tentar descobrir por que algo ocorre.

  • Engenheiro: Um programador excepcional projetará sistemas em vez de manobrar uma confusão de estruturas (Isso não significa que eles não usarão estruturas.) .

88
ChaosPandion

Você acertou muito no seu último ponto:

"E eles tendem a ser estranhamente humildes também."

Eu acho que é uma combinação de humildade - não apenas externa, mas também dentro de suas mentes. Eles aceitam estar errados, cometer um erro e se revezam muito rapidamente de frustração. Muitos programadores tentam alguma coisa, falham e, em seguida, desenvolvem-se emocionalmente muito rapidamente, um estado que é anátema para escrever um bom código. Você precisa aceitar que não é perfeito e que vai estragar tudo (muitas vezes!), E que a melhor coisa a fazer é aprender a se recuperar rapidamente quando estragar. É um humilde confiança, como "Eu sei que vou estragar tudo, mas também sei que, se continuar tentando, chegarei lá eventualmente."

Há um ditado na PNL: "Não há falha, apenas feedback". Para ser um programador de estrelas do rock, acho que você precisa abraçar isso. Não há nada que você não possa codificar. Você pode ser lento no começo, mas se você continuar tentando e se recusar a parar quando você falhar ou estragar alguma coisa, você cumprirá. E nesse processo, você aprenderá todos os truques mentais que precisa para se tornar um dos melhores.

O conselho é, obviamente, apenas tão bom quanto sua fonte, então ... tudo é apenas minha opinião.

28
Pax Noctis

Eles se preocupam profundamente com seu código.

25
JaredPar

Pessoalmente, os melhores programadores que conheço/conheciam entenderam o básico e NÃO eram os especialistas em qualquer idioma. Eles simplesmente tinham experiência suficiente em quase tudo. O canônico "Valete de Todos os Negócios".

É mais do que ciência fundamental, existe um valor significativo na experiência em operações reais. Exemplos, aqueles que entendem a filosofia do Unix e, portanto, podem resolver problemas desconhecidos com várias ferramentas fornecidas (IOW, eles sabiam para onde procurar), superam o valor do especialista Java que codificou uma solução encadeada e paralela.

Os programadores de destaque também respeitam aqueles que vieram antes deles. Eles não odeiam modelos de dados relacionais ou se encolhem quando veem o SQL como uma API formal, nem se opõem ao FORTRAN em matemática. Eles sabem que OO não é o fim de tudo) e, acima de tudo, entendem que a programação é uma ART, não uma ciência.

15
Jé Queue

Quando comecei, estava trabalhando com esse cara que achei absolutamente brilhante em tudo o que ele fez em termos de programação. Ele provavelmente ainda é, mas mudou-se para ser o diretor de uma empresa no sudeste da Ásia agora.

De qualquer forma, ele manteve as coisas simples, e as coisas simples funcionam. Nunca querendo escrever mais linhas de código do que o necessário, tudo o que ele fez funcionou. Eu estava brincando durante um ano só para chegar perto do nível dele. A outra coisa, porém, é o tempo. Ele estava fazendo as coisas há muito mais tempo do que eu fazia na época, e ele teve a chance de fazer essas perguntas exatas várias vezes, até que ele soube (aparentemente) todas as respostas.

Ele também não tinha medo de fazer perguntas. Eu acho que é a maior coisa.

11
user2358

Matriz de competências do programador

Muitos tópicos para ajudar a identificar qual é o seu nível em tópicos de programação.

10
Maniero

Aprendi a resposta a essa pergunta em um livro sobre o poker do Texas Hold'em, mas isso se aplica a todos os esforços frustrantes. Os melhores codificadores nunca ficam inclinados. Continuar no Tilt é o momento em que algo não funciona como o esperado e você responde de uma maneira que cria erros exponenciais no aplicativo em geral. No torneio de poker, você faz apostas ruins e é eliminado.

Na programação, a inclinação faz com que você arranque os cabelos e escreva patches ridículos de código que só funcionam em determinadas instâncias do seu aplicativo. O Tilt faz com que os programadores ignorem as necessidades do projeto como um todo, buscando gratificação instantânea para resolver o problema imediato agora. Muitas vezes, o problema é resolvido hoje, mas o aplicativo sofre amanhã.

Os melhores codificadores adotam o conceito de inclinação e o gerenciam de uma maneira que lhes permita analisar sempre os problemas de uma perspectiva externa. Se isso falhar, beba um pouco de cafeína.

7
JMC

Programadores excepcionais:

  • Preocupe-se com o código
  • Preocupe-se com os usuários que usam seu código
  • Preocupe-se com as pessoas que manterão seu código
  • Preocupe-se com a produtividade
  • Preocupe-se com o processo, não apenas com o produto

Duas coisas sobre o fator "10x":

  1. Ele deve ser aplicado de ponta a ponta. Não é bom escrever código 10 vezes mais rápido se demorar 10 vezes mais para testar, retrabalhar e manter.
  2. Eu acredito que o fator "10x" é um reflexo de quão pobre é um número alto de programadores, e não o quão bom é um pequeno número de programadores.
6
darreljnz

a maioria deles parece reservada e nada de especial. alguns deles são super-inteligentes. eles preferem verificar/depurar as coisas duas vezes de todos os pontos de vista possíveis; o software deles é o mais limpo do mundo: p IMO alguns programadores podem ser mais lentos, mas a qualidade é melhor, mesmo as pessoas comuns podem entender como o software funciona!

eu tenho um amigo que escreveu seu primeiro programa ASM aos 10 anos, agora ele tem 24 anos, não terminou a universidade, mas isso não o impediu de criar sua própria empresa, ganhar milhões :), mas pelo que eu vejo ele é hábil em tudo :)

programadores excepcionais provavelmente diriam que esse código pode ser codificado de outra maneira - melhor do que dizer que é totalmente errado e menor reputação de outros programadores :)

"O que há com essas pessoas? Existe algo no processo de pensamento deles que é fundamentalmente diferente do programador acima da média? Ou eles são simplesmente pessoas muito talentosas que trabalham duro?"

eu acho que eles nascem assim, está dentro do DNA deles: p Eu não sei sobre o processo de pensamento deles, mas o melhor programador que eu já conheci teve epilepsia

3
shegy

Poucas coisas diferenciam um excepcional de um típico.

Excepcional:

  1. Altamente apaixonado por seu trabalho e se esforça para entregar uma obra-prima.

  2. Desempenho e qualidade são a imagem geral em sua mente, mesmo antes do início da codificação.

  3. Eles pensam em melhoria contínua após cada lançamento.

  4. Eles mantêm vigilância rigorosa sobre as alternativas e são os primeiros a adotar.

  5. Seu tema na vida profissional é: "Escreva menos, transmita mais".

  6. Eles continuam pensando em perspectivas lógicas, mesmo quando não estão codificando.

Típico

  1. Às vezes, um pouco apaixonada, mas se esforça para entregar porque, afinal, é um trabalho. Se não for uma obra-prima, tudo bem. Pelo menos entregue no prazo.

  2. Pensará no desempenho mais tarde, de qualquer maneira, os PCs são rápidos o suficiente nos dias de hoje.

  3. Melhorar apenas quando não houver opção para salvar um trabalho.

  4. Não há tempo para explorar outras tecnologias. Atenha-se ao que seu trabalho exige agora. Aprenderá outras coisas quando surgir a necessidade.

  5. Seu tema é: "Faça o que é pedido e chegue a casa a tempo".

3
RPK

Programadores excepcionais aplicam Princípios espartanos .

Imagem que chama a atenção:

enter image description here

Este artigo: http://willcode4beer.com/design.jsp?set=codeReduction

E esta citação:

Qualquer tolo pode tornar as coisas maiores, mais complexas e mais violentas. É preciso um toque de gênio - e muita coragem - para se mover na direção oposta. - Albert Einstein

2
Ates Goral

1º - Eles sabem o que é cortado quando enfrentam o prazo final.

0
Gedean Dias

Autopromoção, e eu quero dizer isso da melhor maneira possível. Ter um trabalho como programação, especialmente em equipe, significa que não é imediatamente óbvio onde sua contribuição pessoal se encaixa no quadro geral ou quem foi responsável por qual parte. As pessoas de quem ouvimos falar e aprendemos como "grandes programadores" são da OMI aquelas que dominaram a arte de dar a conhecer suas contribuições sem parecer egoístas ou egocêntricas. Em muitos casos, isso ocorre através da criação das ferramentas, bibliotecas e software nos quais confiamos para ganhar nosso pão diário.

0
Gaurav

Artigo muito bom: O elétron livre (de randsinrepose.com)

Peço desculpas por não resumir o artigo aqui, mas os pontos não são facilmente separados da prosa.

0
Nicole

Ter a qualidade da motivação e da autodeterminação, além de ter a disposição de entrar em um abismo do desconhecido e de se sentir à vontade para ficar absolutamente confuso como parte do processo, é enorme. Não se trata tanto de inteligência inicial como você pensaria, porque o cérebro se torna muito melhor nas coisas que está sempre fazendo e pensando. Eu vim do nada na faculdade e depois fiquei muito bem apenas pela persistência absoluta, nunca desistindo, sendo aquele cara que mantinha um problema quando todos os outros se cansavam de tentar descobrir. Após esse tipo de persistência, os problemas se tornaram cada vez mais fáceis e passaram de ser o noob na faculdade e colocar a maioria deles envergonhados neste momento. Puro talento não é suficiente e às vezes pode levar a descansar nos louros.

Além disso, para Robert Harvey, você continua revisando minhas postagens quando menciono qualquer coisa relacionada ao meu CMS que escrevi do zero. Você vê vários outros listando links que eles podem ou não ter escrito. Você está empurrando pessoas que são motivadas por si mesmas, o que é irônico porque você postou isso. Você é "o homem" neste pequeno universo e não está lendo as coisas por mérito deles, apenas cochilando e apagando ao seu capricho. Você também gosta muito de Guerra nas Estrelas e provavelmente acena com a mão nas portas de abertura automática do supermercado, acreditando que você tem a força.

0
Joonha

Eles programam puramente por intuição. Não há necessidade de pensar apenas fluxos.

0
John Shaft

mas parece que levarei os próximos dez anos para aprendê-lo, e então meu conhecimento ficará obsoleto.

Será. Você já estabeleceu que esses caras são 10 vezes mais rápidos, e é por isso que eles aprendem em 1 ano e isso leva 10. qualquer coisa), eles adoram codificação e, por algum motivo, têm (ou encontram) uma abundância de tempo livre para praticar a codificação ou trabalhar em projetos pessoais.

Se você está fazendo essa pergunta aqui, provavelmente não tem o que é preciso (não se preocupe, estou respondendo aqui, então provavelmente também não). Não se preocupe, você ainda pode ficar louco, se você gosta de codificação.

0
Kevin

Há muitos posts bem-intencionados aqui sobre Humildade, Engenharia, Paixão, Paciente, Resolução de problemas. OMI são todos necessários. No entanto, eles descrevem os 30% principais dos programadores.

Acho que você está perguntando sobre os programadores verdadeiramente excepcionais, o 1% superior.

Uma das coisas que invejo sobre o talento ocasional muito raro com o qual trabalho é a capacidade de manter uma quantidade muito grande de detalhes sobre um sistema complexo em sua cabeça ao mesmo tempo e poder recuperá-lo rapidamente. Acho que posso fazer isso ocasionalmente, talvez uma vez por mês, quando estou realmente na zona. Esse sentimento é maravilhoso. O desenvolvedor em que estou pensando parece poder estar nessa zona na maioria das vezes .

É essa característica, IMO, além das habilidades de humildade, curiosidade, engenharia, paixão, paciência e solução de problemas que as tornam verdadeiramente excepcionais.

0
Kyle Hodgson

Codificadores excepcionais influenciam um projeto além do escopo de seu próprio código e detectam problemas antes que eles ocorram devido à sua experiência. Eles melhoram todos os membros da equipe e salvam seus projetos de mau design e gerenciamento.

Eles realmente criaram algo que é excepcional.

0
JeffO