it-swarm.dev

Was unterscheidet die außergewöhnlichen Programmierer von den wirklich guten?

Sie wissen, wer sie sind. Sie sind die Rockstars der Programmierung:

  • Sie codieren 10x schneller.

  • Ihr Code funktioniert einfach.

  • Sie kennen nicht nur ihre Hauptsprache in- und auswendig, sondern auch, wie sie unter der Haube funktioniert.

  • Sie kennen die Antwort auf die meisten Fragen, bevor Sie sie stellen.

  • Einige von ihnen haben die Programmierprinzipien erfunden, die wir alle verwenden.

  • Und sie neigen auch dazu, ungewöhnlich bescheiden zu sein.

Was ist es mit diesen Leuten? Gibt es etwas an ihrem Denkprozess, das sich grundlegend vom überdurchschnittlichen Programmierer unterscheidet? Oder sind sie einfach sehr talentierte Leute, die hart arbeiten?

Anders ausgedrückt: Wie kann ich so sein wie sie? Ich weiß, was ich denke, ich muss lernen, um so gut zu sein, aber es scheint, als würde ich die nächsten zehn Jahre brauchen, um es zu lernen, und dann wird mein Wissen veraltet sein.

59
Robert Harvey
  • Humble : Ein außergewöhnlicher Programmierer wird niemals behaupten, sein Code sei der beste, tatsächlich werden sie immer nach einem besseren Weg suchen (Jede Chance, die sie bekommen.) .

  • Patient : Ein außergewöhnlicher Programmierer hat grenzenlose Geduld (Dies bedeutet nicht, dass er Tage mit einem Problem verschwenden wird. Siehe: Fehlerbehebung) .

  • Problembehandlung : Ein außergewöhnlicher Programmierer kann ein Problem in Minuten lösen, die für einen durchschnittlichen Programmierer Tage dauern können.

  • Neugierig : Ein außergewöhnlicher Programmierer kann nicht widerstehen, herauszufinden, warum etwas passiert.

  • Ingenieur : Ein außergewöhnlicher Programmierer wird Systeme konstruieren, anstatt eine Mischung aus Frameworks zusammenzubauen (Dies bedeutet nicht, dass sie keine Frameworks verwenden.) .

88
ChaosPandion

Sie haben in Ihrem letzten Punkt viel davon getroffen:

"Und sie neigen auch dazu, ungewöhnlich bescheiden zu sein."

Ich denke, es ist eine Kombination aus Demut - nicht nur äußerlich, sondern auch innerlich. Sie akzeptieren es, falsch zu liegen, einen Fehler zu machen, und haben eine sehr schnelle Wende vor Frustration. Viele Programmierer werden etwas ausprobieren, scheitern und dann ziemlich schnell sehr emotional bearbeitet werden, ein Zustand, der für das Schreiben von gutem Code ein Gräuel ist. Sie müssen akzeptieren, dass Sie nicht perfekt sind und dass Sie (oft!) Fehler machen werden und dass das Beste, was Sie tun können, darin besteht, zu lernen, wie Sie sich schnell erholen können, wenn Sie Fehler machen. Es ist eine bescheidene Zuversicht, wie "Ich weiß, dass ich es vermasseln werde, aber ich weiß auch, wenn ich es weiter versuche, werde ich es irgendwann schaffen."

In NLP gibt es ein Sprichwort: "Es gibt keinen Fehler, nur Feedback." Um ein Rockstar-Programmierer zu sein, muss man das wohl akzeptieren. Es gibt nichts, was Sie nicht codieren können. Sie mögen zunächst langsam sein, aber wenn Sie einfach weiter versuchen und sich weigern, aufzuhören, wenn Sie versagen oder etwas vermasseln, werden Sie liefern. Und in diesem Prozess lernst du alle mentalen Tricks, die du brauchst, um einer der besten zu werden.

Ratschläge sind natürlich nur so gut wie ihre Quelle, also ... alles nur meine Meinung.

28
Pax Noctis

Sie kümmern sich tief um ihren Code.

25
JaredPar

Persönlich haben die besten Programmierer, die ich kenne/kannte, die Grundlagen verstanden und waren NICHT der Experte in einer bestimmten Sprache. Sie hatten einfach genug Erfahrung mit so ziemlich allem. Der kanonische "Alleskönner".

Es ist mehr als Grundlagenforschung, es gibt einen bedeutenden Wert in der Erfahrung in tatsächlichen Operationen. Beispiele: Diejenigen, die die Unix-Philosophie verstehen und somit unbekannte Probleme mit verschiedenen Tools lösen können (IOW, sie wussten, wo sie suchen müssen), sind dem Experten von Java, der eine Threaded- und Parallel-Lösung codiert hat) weit überlegen.

Die hervorragenden Programmierer respektieren auch diejenigen, die vor ihnen kamen. Sie hassen relationale Datenmodelle nicht und schrecken nicht zurück, wenn sie SQL als formale API betrachten, und sie scheuen FORTRAN in der Mathematik nicht. Sie wissen, dass OO nicht das End-All ist, und verstehen vor allem, dass Programmieren eine KUNST ist, keine Wissenschaft.

15
Jé Queue

Als ich anfing, arbeitete ich mit diesem Typen zusammen, den ich für absolut brillant hielt, was er in Bezug auf die Programmierung tat. Möglicherweise ist er es noch, aber er ist jetzt Direktor eines Unternehmens in Südostasien.

Wie auch immer, er hielt die Dinge einfach und das einfache Zeug funktioniert. Er wollte nie mehr Codezeilen als nötig schreiben, alles, was er tat, funktionierte einfach. Ich habe ein Jahr lang Aufholjagd gespielt, um mich seinem Niveau zu nähern. Die andere Sache ist jedoch die Zeit. Er hatte viel länger gearbeitet als ich damals, und er hatte die Gelegenheit gehabt, genau diese Fragen immer wieder zu stellen, bis er (scheinbar) alle Antworten wusste.

Er hatte auch keine Angst, Fragen zu stellen. Ich denke das ist das Größte.

11
user2358

Programmiererkompetenzmatrix

Viele Themen, um herauszufinden, wie gut Sie Programmierthemen beherrschen.

10
Maniero

Ich habe die Antwort auf diese Frage in einem Buch über Texas Hold'em Poker gelernt, aber es gilt für alle frustrierenden Bemühungen. Die besten Codierer neigen sich nie. Going on Tilt ist die Zeit, in der etwas nicht wie erwartet funktioniert und Sie auf eine Weise reagieren, die exponentielle Fehler in der gesamten Anwendung verursacht. Beim Turnierpoker führt dies dazu, dass Sie schlechte Wetten platzieren und ausgeschlagen werden.

Beim Programmieren führt das Neigen dazu, dass Sie sich die Haare ausreißen und lächerliche Code-Patches schreiben, die nur in bestimmten Fällen Ihrer Anwendung funktionieren. Tilt veranlasst Programmierer, die Anforderungen des gesamten Projekts zu ignorieren und nach sofortiger Befriedigung zu suchen, um das unmittelbare Problem jetzt zu lösen. Oft wird das Problem heute gelöst, aber die Anwendung leidet morgen.

Die besten Programmierer nehmen das Neigungskonzept und verwalten es so, dass sie Probleme immer von außen betrachten können. Wenn das fehlschlägt, trinken Sie etwas Koffein.

7
JMC

Außergewöhnliche Programmierer:

  • Kümmere dich um ihren Code
  • Kümmern Sie sich um die Benutzer, die ihren Code verwenden
  • Kümmere dich um die Leute, die ihren Code pflegen
  • Sorge um Produktivität
  • Kümmere dich um den Prozess, nicht nur um das Produkt

Zwei Dinge über den "10x" -Faktor:

  1. Es muss Ende-zu-Ende angewendet werden. Es ist nicht gut, Code 10x schneller zu schreiben, wenn das Testen, Nacharbeiten und Warten 10x länger dauert.
  2. Ich glaube, der "10x" -Faktor spiegelt eher wider, wie arm eine hohe Anzahl von Programmierern ist, als wie gut eine kleine Anzahl von Programmierern ist.
6
darreljnz

die meisten von ihnen sehen zurückhaltend und nichts Besonderes aus. Einige von ihnen sehen superschlau aus. Sie ziehen es vor, Dinge aus allen möglichen Blickwinkeln zweimal zu überprüfen/zu debuggen. Ihre Software ist die fehlerfreie in der Welt: p IMO können einige Programmierer langsamer sein, Aber die Qualität ist besser, selbst normale Leute können verstehen, wie ihre Software funktioniert!

ich habe einen Freund, der sein erstes ASM-Programm im Alter von 10 Jahren geschrieben hat, jetzt ist er 24, hat die Universität nicht abgeschlossen, aber das hat ihn nicht davon abgehalten, eine eigene Firma zu gründen, Millionen zu verdienen :) aber von dem, was ich sehe, dass er ist in allem geschickt :)

außergewöhnliche Programmierer würden höchstwahrscheinlich sagen, dass dieser Code auf eine andere, bessere Weise codiert werden kann, als zu sagen, dass er völlig falsch ist und einen geringeren Ruf anderer Programmierer hat :)

"Was ist mit diesen Leuten? Gibt es etwas an ihrem Denkprozess, das sich grundlegend von dem überdurchschnittlichen Programmierer unterscheidet? Oder sind sie einfach sehr talentierte Leute, die hart arbeiten?"

ich denke, sie werden auf diese Weise geboren, es liegt in ihrer DNA: p Ich weiß nichts über ihren Denkprozess, aber der beste Programmierer, den ich jemals kannte, hatte Epilepsie

3
shegy

Nur wenige Dinge unterscheiden ein Außergewöhnliches von einem Typischen.

Außergewöhnlich :

  1. Sehr leidenschaftlich über seine Arbeit und bemühen sich, ein Meisterwerk zu liefern.

  2. Leistung und Qualität sind das große Ganze, noch bevor mit dem Codieren begonnen wird.

  3. Sie denken an eine kontinuierliche Verbesserung nach jeder Veröffentlichung.

  4. Sie achten streng auf die Alternativen und sind Early Adopters.

  5. Ihr Thema im Berufsleben lautet: "Weniger schreiben, mehr vermitteln".

  6. Sie denken immer wieder über logische Perspektiven nach, auch wenn sie nicht codieren.

typisch

  1. Manchmal etwas leidenschaftlich, aber bemüht zu liefern, weil es schließlich ein Job ist. Wenn es kein Meisterwerk ist, ist es OK. Zumindest pünktlich geliefert.

  2. Ich werde später an die Leistung denken, trotzdem sind PCs heutzutage schnell genug.

  3. Nur verbessern, wenn keine Option zum Speichern eines Jobs mehr vorhanden ist.

  4. Keine Zeit, sich mit anderen Technologien zu beschäftigen. Halten Sie sich jetzt an die Anforderungen Ihres Jobs. Wird andere Dinge lernen, wenn die Notwendigkeit entsteht.

  5. Ihr Thema lautet: "Tu was verlangt wird und erreiche rechtzeitig nach Hause".

3
RPK

Es gelten außergewöhnliche Programmierer Spartan Principles .

Aufmerksamkeitsstarkes Bild:

enter image description here

Dieser Artikel: http://willcode4beer.com/design.jsp?set=codeReduction

Und dieses Zitat:

Jeder Dummkopf kann die Dinge größer, komplexer und gewalttätiger machen. Es braucht einen Hauch von Genialität - und viel Mut -, um sich in die entgegengesetzte Richtung zu bewegen. - Albert Einstein

2
Ates Goral

1. Sie wissen, was abgeschnitten ist, wenn sie vor der Deadline stehen.

0
Gedean Dias

Eigenwerbung, und das meine ich bestmöglich. Ein Job wie das Programmieren, insbesondere in einem Team, bedeutet, dass nicht sofort ersichtlich ist, wo Ihr persönlicher Beitrag zum Gesamtbild passt oder wer für welches Teil verantwortlich war. Die Menschen, von denen wir als "großartige Programmierer" hören und die wir kennenlernen, sind IMO diejenigen, die die Kunst beherrschen, ihre Beiträge bekannt zu machen, ohne egoistisch oder egozentrisch zu klingen. In vielen Fällen werden dazu die Tools, Bibliotheken und Software erstellt, auf die sich der Rest von uns verlässt, um unser tägliches Brot zu verdienen.

0
Gaurav

Sehr guter verwandter Artikel: The Free Electron (von randsinrepose.com)

Ich entschuldige mich dafür, dass ich den Artikel hier nicht zusammengefasst habe, aber die Punkte sind nicht leicht von der Prosa zu trennen.

0
Nicole

Die Qualität der Selbstmotivation und Selbstbestimmung sowie die Bereitschaft, in einen Abgrund des Unbekannten zu gehen und sich als Teil des Prozesses absolut verwirrt zu fühlen, ist enorm. Es geht nicht so sehr um anfängliche Intelligenz, wie Sie denken würden, weil das Gehirn in Dingen, die es immer tut und über die es nachdenkt, viel besser wird. Ich kam aus dem College und wurde dann nur durch bloße Beharrlichkeit sehr wohlhabend. Ich gab nie auf und war der Typ, der ein Problem hatte, als alle anderen es satt hatten, es herauszufinden. Nach dieser Art von Beharrlichkeit wurden die Probleme immer einfacher und kamen vom Noob im College dazu, die meisten von ihnen an diesem Punkt zu beschämen. Bloßes Talent reicht nicht aus und kann manchmal dazu führen, dass Sie sich auf Ihren Lorbeeren ausruhen.

Außerdem, Robert Harvey, machen Sie immer wieder meine Beiträge, wenn ich etwas erwähne, das mit meinem CMS zu tun hat, das ich von Grund auf neu geschrieben habe. Sie sehen mehrere andere, die Links auflisten, die sie möglicherweise geschrieben haben oder nicht. Sie drücken Leute nach unten, die selbst motiviert sind, was ironisch ist, dass Sie dies gepostet haben. Sie sind "der Mann" in diesem kleinen Universum und lesen die Dinge nicht nach ihrem Verdienst, sondern nur nach Belieben. Sie lieben Star Wars auch viel zu sehr und winken wahrscheinlich mit der Hand an den automatisch öffnenden Türen des Lebensmittelgeschäfts, weil Sie glauben, dass Sie die Macht haben.

0
Joonha

Sie programmieren nur auf Intuition. Keine Notwendigkeit, es nur zu denken fließt.

0
John Shaft

aber es scheint, als würde ich die nächsten zehn Jahre brauchen, um es zu lernen, und dann wird mein Wissen veraltet sein.

Es wird. Du hast bereits festgestellt, dass diese Jungs 10x schneller sind, weshalb sie es in 1 Jahr lernen und es 10 dauert. Für den ernsthaften Teil der Antwort denke ich, dass sie bereits super schlau sind (könnten sehr erfolgreich sein alles), sie lieben das Codieren und sie haben (oder finden) aus irgendeinem Grund eine Fülle von Freizeit, um das Codieren zu üben oder an persönlichen Projekten zu arbeiten.

Wenn Sie diese Frage hier stellen, haben Sie wahrscheinlich nicht das Zeug dazu (keine Sorge, ich antworte hier, also wahrscheinlich auch nicht). Ärgern Sie sich nicht, obwohl Sie immer noch verrückt werden können, wenn Sie gerne programmieren.

0
Kevin

Es gibt hier viele gut gemeinte Beiträge über Demut, Technik, Leidenschaft, Patient, Fehlerbehebung. IMO diese sind alle erforderlich. Sie beschreiben jedoch die besten 30% der Programmierer.

Ich denke, Sie fragen nach den wirklich außergewöhnlichen Programmierern, den besten 1%.

Eines der Dinge, um die ich mich um das gelegentlich sehr seltene Talent beneide, mit dem ich arbeite, ist ihre Fähigkeit, einen sehr großen Betrag zu halten von Details über ein komplexes System in ihrem Kopf auf einmal, und in der Lage zu sein, es schnell abzurufen. Ich denke, dass ich das gelegentlich tun kann, vielleicht einmal im Monat, wenn ich wirklich in der Zone bin. Dieses Gefühl ist wunderbar. Der Entwickler, an den ich denke, scheint in der Lage zu sein, die meiste Zeit in dieser Zone zu sein .

Es ist dieses eine Merkmal, IMO, zusätzlich zu den Fähigkeiten Demut, Neugier, Technik, Leidenschaft, Geduld und Fehlerbehebung, die sie wirklich außergewöhnlich machen.

0
Kyle Hodgson

Außergewöhnliche Programmierer haben Einfluss auf ein Projekt, das über den Rahmen ihres eigenen Codes hinausgeht, und erkennen Probleme, bevor sie aufgrund ihrer Erfahrung auftreten. Sie verbessern alle Mitglieder des Teams und bewahren ihre Projekte vor schlechtem Design und Management.

Sie haben tatsächlich etwas Außergewöhnliches geschaffen.

0
JeffO