web-dev-qa-db-fra.com

Qu'est-ce qui différencie les programmeurs exceptionnels des vraiment bons?

Tu sais qui ils sont. Ce sont les rock stars de la programmation:

  • Ils codent 10 fois plus vite.

  • Leur code fonctionne juste.

  • Ils connaissent non seulement leur langue principale à l'intérieur comme à l'extérieur, mais ils savent aussi comment cela fonctionne sous le capot.

  • Ils connaissent la réponse à la plupart des questions avant de la poser.

  • Certains d'entre eux ont inventé les principes de programmation que nous utilisons tous.

  • Et ils ont également tendance à être humbles de manière inhabituelle.

Qu'en est-il de ces gens? Y a-t-il quelque chose dans leur processus de pensée qui est fondamentalement différent du programmeur supérieur à la moyenne? Ou sont-ils simplement des gens très talentueux qui travaillent dur?

Autrement dit: comment puis-je leur ressembler? Je sais ce que je pense que je dois apprendre pour être aussi bon, mais il semble que cela me prendra les dix prochaines années pour l'apprendre, puis mes connaissances seront obsolètes.

59
Robert Harvey
  • Humble: Un programmeur exceptionnel ne prétendra jamais que son code est le meilleur, en fait, il cherchera toujours une meilleure façon (Chaque chance qu'il obtient.) .

  • Patient: Un programmeur exceptionnel aura une patience sans limite (Cela ne signifie pas qu'il perdra des jours sur un problème. Voir: Dépannage) .

  • Dépanneur: Un programmeur exceptionnel pourra résoudre un problème en quelques minutes, ce qui peut prendre des jours pour votre programmeur moyen.

  • Curieux: Un programmeur exceptionnel ne pourra pas résister à essayer de comprendre pourquoi quelque chose se produit.

  • Ingénieur: Un programmeur exceptionnel créera des systèmes plutôt que d'entraver un méli-mélo de frameworks (Cela ne signifie pas qu'ils n'utiliseront pas de frameworks.) .

88
ChaosPandion

Vous en avez touché beaucoup dans votre toute dernière puce:

"Et ils ont également tendance à être humbles de façon inhabituelle."

Je pense que c'est une combinaison d'humilité - non seulement à l'extérieur mais aussi à l'intérieur de leur esprit. Ils acceptent de se tromper, de se tromper et se détournent très rapidement de la frustration. Beaucoup de programmeurs essaieront quelque chose, échoueront, puis se mettront très émotionnellement au travail assez rapidement, un état qui est anathème pour écrire du bon code. Vous devez accepter que vous n'êtes pas parfait, et que vous allez foirer (souvent!), Et que la meilleure chose que vous puissiez faire est d'apprendre à récupérer rapidement lorsque vous foutez. C'est un humble confiance, comme "Je sais que je vais gâcher, mais je sais aussi que si je continue d'essayer, j'y arriverai finalement."

Il y a un dicton dans la PNL, "Il n'y a pas d'échec, seulement des commentaires." Pour être un programmeur de rock star, je pense que vous devez accepter cela. Il n'y a rien que vous ne puissiez pas coder. Au début, vous pourriez être lent, mais si vous continuez d'essayer et refusez de vous arrêter lorsque vous échouez ou que vous bousillez quelque chose, vous délivrerez. Et dans ce processus, vous apprendrez toutes les astuces mentales dont vous avez besoin pour devenir l'un des meilleurs.

Les conseils ne sont, bien sûr, aussi bons que leur source, donc ... tout simplement mon avis.

28
Pax Noctis

Ils se soucient profondément de leur code.

25
JaredPar

Personnellement, les meilleurs programmeurs que je connais/connaissais comprenaient les bases et n'étaient PAS l'expert dans une langue donnée. Ils avaient simplement une expérience suffisante sur à peu près tout. Le canonique "Jack of All Trades".

C'est plus qu'une science fondamentale, il y a une valeur significative dans l'expérience des opérations réelles. Des exemples, ceux qui comprennent la philosophie Unix et pourraient ainsi résoudre des problèmes inconnus avec divers outils donnés (IOW ils savaient où chercher) surpassent de loin l'expert Java Java qui a codé une solution filetée et parallèle).

Les programmeurs exceptionnels respectent également ceux qui les ont précédés. Ils ne détestent pas les modèles de données relationnelles ni ne grincent des dents lorsqu'ils voient SQL comme une API formelle, ni ne rechignent à FORTRAN en mathématiques. Ils savent que OO n'est pas la fin de tout, et surtout comprennent que la programmation est un ART, pas une science.

15
Jé Queue

Quand j'ai commencé, je travaillais avec ce gars que je trouvais absolument génial dans tout ce qu'il faisait en termes de programmation. Il l'est peut-être encore, mais il est maintenant devenu directeur d'une entreprise en Asie du Sud-Est.

Quoi qu'il en soit, il a gardé les choses simples et les choses simples fonctionnent. Ne voulant jamais écrire plus de lignes de code que nécessaire, tout ce qu'il a fait a fonctionné. Je jouais du rattrapage depuis un an juste pour me rapprocher de son niveau. L'autre chose cependant, c'est le temps. Il faisait les choses depuis bien plus longtemps que moi à l'époque, et il avait eu la chance de poser ces questions exactes encore et encore, jusqu'à ce qu'il sache (apparemment) toutes les réponses.

Il n'avait pas peur de poser des questions non plus. Je pense que c'est la chose la plus importante.

11
user2358

Matrice des compétences des programmeurs

De nombreux sujets pour aider à identifier quel est votre niveau sur les sujets de programmation.

10
Maniero

J'ai appris la réponse à cette question dans un livre sur le poker Texas Hold'em, mais cela s'applique à toutes les tentatives frustrantes. Les meilleurs codeurs ne sont jamais inclinés. Passer à l'inclinaison est le moment où quelque chose ne fonctionne pas comme prévu, et vous répondez d'une manière qui crée des erreurs exponentielles dans l'application globale. Au poker de tournoi, cela vous fait placer de mauvais paris et vous faire éliminer.

En programmation, l'inclinaison vous oblige à vous arracher les cheveux et à écrire des correctifs ridicules de code qui ne fonctionnent que dans certains cas de votre application. Tilt oblige les programmeurs à ignorer les besoins du projet dans son ensemble, cherchant une gratification instantanée pour résoudre le problème immédiat maintenant. Souvent, le problème est résolu aujourd'hui, mais l'application en souffre demain.

Les meilleurs codeurs prennent le concept d'inclinaison et le gèrent d'une manière qui leur permet de regarder les problèmes d'une perspective extérieure, toujours. Si cela échoue, buvez de la caféine.

7
JMC

Programmeurs exceptionnels:

  • Faites attention à leur code
  • Faites attention aux utilisateurs qui utilisent leur code
  • Faites attention aux personnes qui maintiendront leur code
  • Attention à la productivité
  • Souciez-vous du processus, pas seulement du produit

Deux choses sur le facteur "10x":

  1. Il doit être appliqué de bout en bout. Il n'est pas bon d'écrire du code 10 fois plus vite s'il faut 10 fois plus de temps pour tester, retravailler et maintenir.
  2. Je crois que le facteur "10x" reflète la pauvreté d'un nombre élevé de programmeurs plutôt que la qualité d'un petit nombre de programmeurs.
6
darreljnz

la plupart d'entre eux semblent réservés et rien de spécial .. certains d'entre eux ont l'air super-intelligents .. ils préfèrent vérifier/déboguer les choses deux fois de tous les points de vue possibles, leur logiciel est le plus vide du monde: p IMO certains programmeurs peuvent être plus lents, mais la qualité est meilleure, même les gens ordinaires peuvent comprendre comment fonctionne leur logiciel!

j'ai un ami qui a écrit son premier programme ASM à l'âge de 10 ans, maintenant il a 24 ans, n'a pas terminé l'université, mais cela ne l'a pas empêché de créer sa propre entreprise, de gagner des millions :) mais d'après ce que je vois, il est adroit en tout :)

des programmeurs exceptionnels diraient très probablement que ce code peut être codé d'une autre manière - plutôt que de dire que c'est totalement faux une réputation d'autres programmeurs inférieure :)

"Qu'y a-t-il chez ces gens? Y a-t-il quelque chose dans leur processus de pensée qui est fondamentalement différent du programmeur supérieur à la moyenne? Ou sont-ils simplement des gens très talentueux qui travaillent dur?"

je pense qu'ils sont nés de cette façon, c'est à l'intérieur de leur ADN: p je ne connais pas leur processus de pensée, mais le meilleur programmeur que j'ai jamais connu avait l'épilepsie

3
shegy

Peu de choses différencient un exceptionnel d'un typique.

Exceptionnel:

  1. Très passionné par son travail et s'efforce de livrer un chef-d'œuvre.

  2. Les performances et la qualité sont la grande image dans leur esprit avant même le début du codage.

  3. Ils pensent à une amélioration continue après chaque sortie.

  4. Ils surveillent de près les alternatives et sont des adopteurs précoces.

  5. Leur thème dans la vie professionnelle est: "Écrire moins transmettre plus".

  6. Ils continuent de penser aux perspectives logiques même lorsqu'ils ne codent pas.

typique

  1. Parfois un peu passionné mais s'efforcent de livrer car c'est un travail après tout. Si ce n'est pas un chef-d'œuvre, c'est OK. Au moins livré à temps.

  2. Pensez aux performances plus tard, de toute façon les PC sont assez rapides de nos jours.

  3. Améliorez uniquement lorsqu'il n'y a plus d'option pour enregistrer un travail.

  4. Pas le temps de creuser dans d'autres technologies. Restez fidèle à ce que votre travail exige maintenant. Apprendra d'autres choses lorsque le besoin s'en fera sentir.

  5. Leur thème est: "Faites ce qui vous est demandé et rentrez chez vous à temps".

3
RPK

Des programmeurs exceptionnels s'appliquent Spartan Principles .

Image qui attire l'attention:

enter image description here

Cet article: http://willcode4beer.com/design.jsp?set=codeReduction

Et cette citation:

N'importe quel imbécile peut rendre les choses plus grandes, plus complexes et plus violentes. Il faut une touche de génie - et beaucoup de courage - pour aller dans la direction opposée. - Albert Einstein

2
Ates Goral

1er - Ils savent ce qui est coupé face à la ligne morte.

0
Gedean Dias

Auto-promotion, et je veux dire cela de la meilleure façon possible. Avoir un travail comme la programmation, en particulier dans une équipe, signifie qu'il n'est pas immédiatement évident où votre contribution personnelle s'inscrit dans l'ensemble, ni qui était responsable de quel morceau. Les gens dont nous entendons parler et que nous apprenons en tant que "grands programmeurs" sont ceux de l'OMI qui ont maîtrisé l'art de faire connaître leurs contributions sans paraître égoïstes ou égocentriques à ce sujet. Dans de nombreux cas, c'est en créant les outils, les bibliothèques et les logiciels sur lesquels nous comptons tous pour gagner notre pain quotidien.

0
Gaurav

Très bon article connexe: The Free Electron (from randsinrepose.com)

Je m'excuse de ne pas avoir résumé l'article ici, mais les points ne sont pas facilement séparés de la prose.

0
Nicole

Avoir la qualité de l'auto-motivation et de l'autodétermination ainsi que la volonté d'aller dans un abîme de l'inconnu et d'être à l'aise avec la confusion absolue dans le cadre du processus est énorme. Ce n'est pas tant au sujet de l'intelligence initiale que vous le pensez, car le cerveau devient beaucoup mieux dans les choses qu'il fait et pense toujours. Je suis venu de rien à l'université et je suis devenu très aisé juste par une pure persévérance, sans jamais abandonner, étant ce gars qui a gardé un problème quand tous les autres étaient fatigués d'essayer de le comprendre. Après ce type de persévérance, les problèmes sont devenus de plus en plus faciles et sont passés de la noob à l'université à la honte pour la plupart d'entre eux. Le talent pur ne suffit pas et peut parfois conduire à se reposer sur vos lauriers.

Aussi, pour Robert Harvey, vous continuez à refaire mes publications quand je mentionne quoi que ce soit à voir avec mon CMS que j'ai écrit à partir de zéro. Vous voyez plusieurs autres listes de liens qu'ils peuvent ou non avoir écrits. Vous poussez des gens qui sont motivés, ce qui est ironique que vous ayez posté cela. Vous êtes "l'homme" dans ce petit univers et ne lisez pas les choses sur leur mérite, plutôt que de penser et de supprimer à votre guise. Vous aimez aussi beaucoup trop Star Wars et vous agitez probablement la main aux portes à ouverture automatique de l'épicerie pour croire que vous avez la force.

0
Joonha

Ils programment uniquement sur l'intuition. Pas besoin de le penser juste flux.

0
John Shaft

mais il semble que cela me prendra les dix prochaines années pour l'apprendre, puis mes connaissances seront obsolètes.

Ce sera. Vous avez déjà établi que ces gars sont 10 fois plus rapides, c'est pourquoi ils l'apprennent en 1 an et cela vous en prend 10. Pour la partie sérieuse de la réponse, je pense que c'est qu'ils sont déjà super intelligents (pourraient être très efficaces à quoi que ce soit), ils adorent le codage, et pour une raison quelconque, ils ont (ou trouvent) beaucoup de temps libre pour pratiquer le codage ou travailler sur des projets personnels.

Si vous posez cette question ici, vous n'avez probablement pas ce qu'il faut (ne vous inquiétez pas, je réponds ici, donc je ne le suis probablement pas non plus). Ne vous inquiétez pas, mais vous pouvez toujours devenir fou si vous aimez le codage.

0
Kevin

Il y a beaucoup de messages bien intentionnés ici sur l'humilité, l'ingénierie, la passion, le patient, le dépanneur. OMI, ce sont tous nécessaires. Cependant, ils décrivent le top 30% des programmeurs.

Je pense que vous posez des questions sur les programmeurs vraiment exceptionnels, les 1% supérieurs.

L'une des choses que j'envie à propos des talents occasionnels très rares avec lesquels je travaille est leur capacité à garder un très grand montant de détails sur un système complexe dans leur tête à un moment donné, et de pouvoir le rappeler rapidement. Je pense que je peux le faire à l'occasion, peut-être une fois par mois, quand je suis vraiment dans la zone. Ce sentiment est merveilleux. Le développeur auquel je pense semble être dans cette zone la plupart du temps .

C'est ce seul trait, IMO, en plus de la capacité d'humilité, de curiosité, d'ingénierie, de passion, de patience et de dépannage qui les rend vraiment exceptionnels.

0
Kyle Hodgson

Les codeurs exceptionnels ont une influence sur un projet au-delà de la portée de leur propre code et repèrent les problèmes avant qu'ils ne surviennent en raison de leur expérience. Ils améliorent tout le monde dans l'équipe et sauvent leurs projets d'une mauvaise conception et d'une mauvaise gestion.

Ils ont en fait créé quelque chose d'exceptionnel.

0
JeffO