Gibt es so etwas wie einen Superprogrammierer? [geschlossen]

14

Sind Sie auf einen Superprogrammierer gestoßen? Was kennzeichnet ihn als solchen im Vergleich zu "normalen" erfahrenen / großartigen Programmierern?

Ebenfalls. Wie gehen Sie mit einer Person in Ihrem Team um, die glaubt, ein Superprogrammierer zu sein? Beides, ob er es tatsächlich ist oder nicht?

Edit : Interessante Beiträge rundum, danke. Ein paar Dinge können aufgegriffen werden:

Es entstanden einige Definitionen. Ohne Rücksicht auf zu lokalisierte Definitionen (die die Autoren oder ihre Bekannten als Superprogrammierer identifizierten) mochte ich einige Definitionen:

  1. Die Definition von Thorbjørn : Eine Person, die lange Zeit das Äquivalent eines guten Teams konsequent tut.

  2. Free Electron, verknüpft mit Henrys Antwort . Eine sehr produktive Person mit außergewöhnlichen Fähigkeiten. Die Erklärung ist eine gute Lektüre.

    Ein Free Electron kann alles, was mit Code zu tun hat. Sie können eine vollständige Anwendung von Grund auf neu schreiben, an einem Wochenende eine Sprache lernen und, was am wichtigsten ist, in einen riesigen Stapel Spaghetti-Code eintauchen, ihn verstehen und ihn tatsächlich zum Laufen bringen. Sie können ein ganzes Unternehmen um ein freies Elektron aufbauen. Sie sind so gut.

    Im Gegensatz zur letzten Definition geht es bei James um den Mythos des genialen Programmierers ( Video ). Dieselbe Idee wird in rwongs Kommentar als egoloses Programmieren ausgedrückt. Sie vertreten gegensätzliche Meinungen darüber, ob für einen so einzigartigen Programmierer oder für ein Team optimiert werden soll.

Diese Definitionen sind definitiv unterschiedlich, daher würde ich es begrüßen, wenn Sie einen Input haben, welcher besser ist. Oder fügen Sie Ihre eigene hinzu, wenn Sie natürlich möchten, obwohl es helfen würde, zu sagen, warum es sich von diesen unterscheidet.

Muhammad Alkarouri
quelle
3
Ja, und er heißt John Carmack .
Gary Willoughby
1
Ich habe eine Liste mit 4 freien Elektronen auf einem kleinen Stück Papier, das in einem Zug auf meinem Schreibtisch steckt.
Henry
Wenn "Super-Programmierer" = "Genie-Programmierer", klicken Sie auf google.com/events/io/2009/sessions/MythGeniusProgrammer.html
James
Siehe Jeffs Antwort zur egolosen Programmierung .
Rwong
Ich möchte nur einen Gedanken aus dem Buch The Mythical Man-Month hinzufügen, en.wikipedia.org/wiki/The_Mythical_Man-Month. Es wurde eine Forschungsarbeit zitiert, die angibt, dass ein großartiger Programmierer um ein Vielfaches besser ist als ein guter. Ich erinnere mich nicht an alle Details, aber es ist offensichtlich, dass jemand viel Wert hat, der in einem Team um Größenordnungen mehr produzieren kann als andere.
Travis

Antworten:

17

Ich würde den Begriff "Superprogrammierer" nur für diejenigen in Betracht ziehen, die Arbeiten ausführen können, für die normalerweise ein Team guter Programmierer erforderlich ist, und die dies über einen langen Zeitraum konsequent tun .

Dies gilt sowohl für das Schreiben von qualitativ hochwertigem Code (Dokumentation, Tests usw.) als auch für das Lösen sehr schwieriger Probleme, für deren Lösung viel Wissen und Talent erforderlich sind.

Aber es erfordert eine hohe Leistung auf allen Konten für eine lange Zeit. Für diejenigen, die Tonnen von Code schreiben, die niemand verstehen und pflegen kann, gilt der Begriff nicht.

Wie gehe ich damit um? Wenn Sie wirklich eine solche Person haben, dann tun Sie alles, um das Gerüst zur Verfügung zu stellen, das die Person benötigt, um zu übertreffen. Dies bedeutet, irrelevante Dinge aus dem Weg zu räumen und die Ressourcen bereitzustellen, die die Person benötigt. Bitte beachten Sie, dass ich festgestellt habe, dass sehr leistungsstarke Künstler eher bescheiden sind.

Es ist leider viel wahrscheinlicher, dass Sie eine Person haben, die sich für einen Super-Programmierer hält und nicht. Ich habe die Erfahrung gemacht, mit diesen umzugehen, um ihre Leistung messbar zu machen. "FindBugs findet möglicherweise keine Probleme", "Für jeden Code müssen Tests vorhanden sein, die den Anwendungsfällen entsprechen", "Peer Review".

Wenn der Code wirklich schwer zu verstehen ist, sollten Sie wöchentliche Treffen , bei denen die nicht-so-super - Programmierer erklärt den Code irgendeinen Code er seit der letzten Sitzung geschrieben , dass jemand anfordern können anonym erklärt haben, und jeder kann ablehnen anonym in den Kauf genommen haben Code-Basis dafür, dass es nicht mehr zu warten ist. Dann haben Sie zumindest die Einstellung geteilt und zukünftigen Betreuern erlaubt, ein Veto gegen einen Codeteil einzulegen. Dies wird dem Programmierer auch stark anzeigen, welche Art von Code ihn dazu veranlassen wird, zusätzliche Arbeit zu leisten.

(BEARBEITEN: Der Grund für das anonyme Bit ist zu vermeiden, dass der nicht so super Programmierer sich an denen rächt, die sich ihm widersetzen).


quelle
2
Hervorragende Punkte, bis auf die anonyme Eingabe. Wenn das Team wirklich vereinheitlicht werden soll und der "Superprogrammierer" versteht, ob er tatsächlich der Definition entspricht, muss er die Stärken und Schwächen des anderen kennenlernen, um gemeinsam für den Erfolg des Teams und der Software zu arbeiten und Vertrauen aufbauen. Es geht darum, sich der Kritik anderer (wie hier bis zu einem gewissen Grad) zu öffnen, um ihre Mängel als Superprogrammierer zu finden und zu korrigieren.
Huperniketes
@Huper, die Anonymität ist es zu vermeiden, dass dies am Anfang persönlich wird. Wenn Sie glauben, übermenschlich zu sein, nehmen Sie Kritik vielleicht nicht gut auf (oder diese Frage wäre gar nicht erst gestellt worden).
2
@Thor, es ist schon persönlich, wenn du es mit dem zu tun hast, was jemand über sich selbst glaubt. Anonymität erschwert die Vertrauensbildung erheblich. Die Teammitglieder müssen darauf vertrauen, dass sie ehrlich sind, dass Kritik willkommen ist und dass wichtige Meinungen offengelegt werden.
Huperniketes
Wäre es für einen Super-Programmierer einfacher oder schwieriger, einem Junior-Programmierer Code zu erklären? Wenn die Lücke groß ist, kann die Erklärung schwierig sein. Wäre es nicht so?
Muhammad Alkarouri
1
@ Muhammad, da meine Definition lautet, dass ein Super-Programmierer sauberen, wartbaren Code mit guter Dokumentation schreibt, den auch ein Junior-Programmierer verstehen kann (mit Ausnahme sehr komplexer Algorithmen, die in Java aufgrund der zur Laufzeit verfügbaren Funktionen weniger häufig benötigt werden). ich betrachte sie also nicht). Ich würde denken, dass es genauso einfach ist, aber vielleicht länger dauert, es einem Junior-Programmierer zu erklären.
5

Ein Superprogrammierer ist eine Person, die Code schneller als ein Compiler generiert, leistungsfähiger als eine rekursive Funktion ist und in einer einzigen Schranke über FIFO-Stapel springen kann.

Sie gehen mit einer Person in Ihrem Team um, die glaubt, ein Superprogrammierer zu sein, indem Sie sie seiner einzigen Schwäche aussetzen - dem Sonnenlicht.

Chetan
quelle
5
@Chetan: Was ist ein FIFO-Stack?
rwong
3
@Chetan: Dies ist eine nicht hilfreiche Antwort. Vielleicht haben Sie nicht mit Programmierern zusammengearbeitet, die so unglaublich sind, dass Sie sich fragen, ob Sie überhaupt würdig sind.
JBRWilkinson
Ein Superprogrammierer sollte in der Cloud leben und eine öffentliche API für seine Mind Query Language bereitstellen .
rwong
@rwong First-In-First-Out-Stapel, auch als Warteschlange bezeichnet.
Alternative
1
@mathepic: Wenn Sie eine Warteschlange als Stack bezeichnen können, bedeutet dies, dass LIFO und FIFO dasselbe sind? (um Lincoln zu paraphrasieren)
rwong
3

Bitten Sie die Person, ein Kapitel über sich selbst im Coders at Work- Stil zu schreiben . Senden Sie es an einen Verlag. Wenn es abgelehnt wird, ist die Person kein Superprogrammierer.

rwong
quelle
Stimmt die Umkehrung Ihrer Aussage? (Wenn es akzeptiert wird, können Sie davon ausgehen, dass er / sie ein Superprogrammierer ist?) Ich denke, dies könnte eine Klärung gebrauchen.
Alternative
Ich verlor jeglichen Respekt vor dem Autor dieses Buches, sobald ich las, dass er einst der "Architekt eines Java-basierten Transaktionsnachrichtensystems" war. Na ja, zumindest hatte er den Sinn, diesen Job zu kündigen.
Dan Moulding
1
@ Dan Moulding: Solange er die Klappe hält und die Programmierer, die er in diesem Buch interviewt, das ganze Reden machen lässt, ist es mir egal, was er behauptet. (Ich habe das Buch gerade gekauft und freue mich darauf, es zu lesen. Hoffe, es ist so gut, wie ich denke). =)
gablin
Die Idee ist gut, aber die Verlage akzeptieren eher berühmte Programmierer als Superprogrammierer. Richtig?
Muhammad Alkarouri
@Alkarouri: Wenn Super die gleiche Bedeutung hat wie in Superstar , dann ist es auch berühmt, Superprogrammierer zu sein.
rwong
2

Es gibt diejenigen, die mehr Output produzieren können als andere.

Es gibt solche, die eine Ausgabe mit einer geringeren Fehlerrate als andere produzieren können.

Diejenigen, die STÄNDIG mehr Leistung mit niedrigeren als den normalen Fehlerraten produzieren können, sind möglicherweise als Super-Programmierer zu bezeichnen.

Bekannt sein oder gedacht werden als solche ist normalerweise nur für einen aufgeklärten Manager mit dem Vorteil der Sicht nach hinten ersichtlich.

Jemand, der Dinge, die sie sind, ein Superprogrammierer, hat wahrscheinlich ein großes Ego und denkt, dass sie gut sind. Das macht sie nicht gut.

Haltung <> Fähigkeit.

schnell_nun
quelle
1

Super-Programmierer: Eine Person mit überdurchschnittlicher Intelligenz und starkem Engagement für die Programmierung. Ich spreche von einer Person, die einen großen Teil ihrer Zeit mit Programmieren verbringt, nicht so einfach aufhört und entschlossen ist, ein bestimmtes Problem zu lösen. Diese Person geht selten schlafen, wenn ein Problem oder ein Fehler vorliegt. Super-Programmierer schreibt effektiven, schnellen und zuverlässigen Code. Super-Programmierer verfügen über umfassende und gründliche Kenntnisse in mindestens einer Programmiersprache (und Technologie), beherrschen einige andere und können schnell alles lernen, was benötigt wird.

Maggie
quelle
0

Sind Sie auf einen Superprogrammierer gestoßen? Was kennzeichnet ihn als solchen?

Aus den Programmen / Projekten, die erstellt wurden , dem Quellcode, der Studie, die durchgeführt wurde.

glaubt, er ist ein super Programmierer

Wie Sie sagen, er glaubt es, ist es sehr schwierig, ihn dazu zu bringen, es nicht zu glauben. Das Schlimmste ist, dass diese Person aufgehört hat, ein besserer Programmierer zu sein, weil sie denkt, dass alles bereit ist, ist super und er stoppt die Entwicklung von ihr. Was ist schlimmer als das in der Programmierung. Wie auch immer, Sie können immer um Beweise bitten ... und ihn fragen, mit wem er / sie sich selbst vergleicht, um die Annahme zu machen, dass er / sie super ist.

Aristos
quelle