Ich hatte ein Interview mit einem großartigen Programmierer gelesen (es ist nicht auf Englisch) und darin sagte er, dass "ein großartiger Programmierer zehnmal so gut sein kann wie ein mittelmäßiger" und begründete, warum gute Programmierer sehr gut bezahlt werden und warum Programmierunternehmen bieten ihren Mitarbeitern viele Möglichkeiten. Die Idee war, dass es aus dem oben genannten Grund eine sehr große Nachfrage nach guten Programmierern gibt, und deshalb zahlen Unternehmen sehr viel, um sie zu bringen.
Stimmen Sie dieser Aussage zu? Kennen Sie objektive Fakten, die dies unterstützen könnten?
Edit: Die Frage hat nichts mit Erfahrung zu tun; Wenn Sie von einem großartigen Programmierer mit 1 Jahr Erfahrung sprechen, sollte er / sie 10-mal produktiver sein als ein mittelmäßiger Programmierer mit 1 Jahr Erfahrung. Ich bin damit einverstanden, dass sich die Dinge ab bestimmten Erfahrungsjahren allmählich auflösen, aber das ist nicht der Zweck der Frage.
quelle
Antworten:
Eine ziemlich gründliche Übersicht und Analyse der Forschung zu Produktivitätsunterschieden finden Sie in zwei Artikeln von Steve McConnell :
Produktivitätsunterschiede zwischen Softwareentwicklern und Teams: Der Ursprung von "10x"
Ursprünge von 10X - Wie valide ist das zugrunde liegende Research?
Der erste Artikel ( Produktivitätsunterschiede ... ) lautet:
Dieser Artikel hat auch eine interessante Randnotiz:
Der zweite Artikel ( ... Wie gültig ist das zugrunde liegende Research? ) Wurde hauptsächlich geschrieben, um die kritische Überprüfung des ersten Artikels durch Laurent Bossavit zu behandeln :
Im zweiten Artikel, in Abschnitt A Deeper Dive Into the Research Supporting "10x", überprüft McConnell die im ersten Artikel verwendeten Referenzen noch einmal und zieht folgende Schlussfolgerungen:
Der Vollständigkeit halber wird im Folgenden auch eine Liste der Referenzen aufgeführt, die in den Produktivitätsvarianten verwendet werden:
quelle
Ein wirklich schrecklicher Programmierer kann eine Produktivität unter Null haben (die Fehler, die er einführt, brauchen länger, um sie zu beheben, als es nötig wäre, um nur all seine Arbeit für ihn zu erledigen).
Und ein wirklich großartiger Programmierer kann Dinge tun, die arme und durchschnittliche Programmierer einfach nie erreichen würden, unabhängig davon, wie viel Zeit Sie ihnen gegeben haben.
Aus diesen Gründen ist es schwierig, von "10x so produktiv" oder "100x so produktiv" zu sprechen.
Das Wichtigste ist jedoch, dass die meisten Arbeitgeber von Programmierern keine Notwendigkeit haben, die schwierigen Aufgaben zu erledigen, die durchschnittliche Programmierer nicht bewältigen konnten. Der meiste Code, der geschrieben wird, sind Websites, Branchen-Apps, Intranet-Apps usw., ein Großteil davon ist wirklich nicht so schwierig. Der produktive Programmierer in dieser Umgebung ist derjenige, der die Bedürfnisse der Benutzer am besten versteht und umsetzt, und nicht derjenige, der den cleversten Code schreiben kann.
In der Tat wären die meisten Arbeitgeber von Programmierern mit einem guten Programmierer besser dran als mit einem großartigen, denn der großartige wird sich einfach langweilen und gehen. Ich muss eine gute Übereinstimmung zwischen Programmierern und Jobs finden.
quelle
Fakten und Irrtümer der Software-Engineering- Staaten (Fakt 2, verfügbar in Amazon Preview):
(siehe Quellenliste für Recherchen)
Wenn Sie die Produktivität eines Nicht-Programmierers (oder eines sehr schlechten Programmierers) mit der eines guten (in Bezug auf Erfahrung und Wissen) vergleichen, kann der Unterschied natürlich unendlich groß sein (
n/0 == infinity
für alle positivenn
), aber er ist weder gerecht noch gerecht noch sinnvoller Vergleich.Ihr Gehalt kann von mehreren Faktoren abhängen (in zufälliger Reihenfolge):
zusammen mit Ihrem persönlichen ...
quelle
Meine Antwort lautet "Ja, aber seien Sie vorsichtig, wie Sie diese Metrik verwenden".
Ein Programmierer, der, wie wir sagen, optimal funktioniert, schafft Funktionalität und verursacht weniger Fehler, die behoben werden müssen, als seine leistungsschwächeren Kollegen. Es fällt mir nicht schwer zu glauben, dass diese Leute die 10-fache Produktivität anderer leisten können, besonders wenn man bedenkt, dass eine einzige gute oder schlechte Entscheidung in einer Stunde ohne Weiteres 10 Stunden Wirkung haben kann und Programmierer viele solcher Entscheidungen treffen die meisten Tage.
Aber...
Sie müssen vorsichtig sein, wenn Sie dies messen. Ich vertraue den meisten Produktivitätsmessungen wirklich nicht, da ich endlose Fälle erlebt habe, in denen fast jede bekannte Metrik etwas nicht berücksichtigt, was ich für die Teamproduktivität für wichtig halte. Deshalb hasse ich solche harten Zahlen für "Produktivität". Hier sind einige Beispiele:
Viele Messsysteme haben versucht, diese Faktoren zu berücksichtigen, aber ich muss erst noch feststellen, dass es einen gibt, der all diese Probleme berücksichtigt. Daher bin ich nie übermäßig beeindruckt von Faktoren wie "Ein guter Entwickler ist 10-mal produktiver als ein mittelmäßig ", weil ich mich fragen muss, ob die Metrik wirklich die ganze Arbeit ausmacht, die für ein erfolgreiches laufendes Produkt oder ein erfolgreiches, florierendes Team erforderlich ist.
Also meine große Einschränkung ist - was wirst du mit dieser Metrik machen? Ich werde so etwas nutzen, um mir bewusst zu machen, dass die richtigen Tools und Talente einen großen Unterschied in der Arbeitsweise bewirken können. Wenn Sie jedoch versuchen, ein Team zu optimieren, bei dem jeder Einzelne das 10-fache der "typischen" Leistung erbringt, sind Sie auf der sicheren Seite ein Fall von Frustration. Besser ist es, einen Weg zu finden, um Ihr Team dazu zu bringen, das 2-3-fache dessen zu tun, was es zuvor getan hat, indem es besser zusammenarbeitet.
quelle
Laurent Bossavit beschreibt in seinem Buch The Leprechauns of Software Engineering die Erforschung des 10-fachen Produktivitätsanspruchs. Er stellte fest, dass dahinter keine stichhaltigen Zahlen stecken - die Behauptung hat sich durch ein Telefonspiel mit immer konkreteren Behauptungen zu einer "festen Tatsache" entwickelt . Der Blogbeitrag, der das Kapitel zum 10x-Claim enthält und die relevanten Zitate und Falschzitate enthält, ist Fakt und Folklore in der Softwareentwicklung .
Was er fand, war ungefähr so: Jemand führte 1968 eine Studie durch, in der Leute verglichen wurden, die ein bestimmtes Debugging-Problem lösten, und stellte fest, dass einige von ihnen es 10x schneller taten als andere. Daraus können wir den Schluss ziehen, dass einige Leute das Problem zehnmal besser lösen können , oder dass einige Leute Glück haben oder eine Vielzahl verschiedener Dinge. Einige Leute zitierten dies als (dies sind alles Paraphrasen) "eine Studie (Sackman et al., 1968) ergab, dass einige Programmierer 10x schneller arbeiten als andere". Dann wurde es "Studien haben gezeigt, dass gute Programmierer 10x besser als der Durchschnitt sind", dann schließlich "ist es allgemein bekannt, dass die Produktivität von Programmierern zwischen Individuen 10x variiert". Dann sammelt jemand all diese Zitate und zitiert dabei eine Originalquelle falsch zu sagen "viele Forscher glauben ...".
Natürlich wäre es kein Telefonspiel, wenn sich nur die Richtigkeit der Behauptung ändern würde: Der Multiplikator geht auch auf 11 und darüber hinaus .
quelle
" Der produktive Programmierer in dieser Umgebung ist derjenige, der die Bedürfnisse der Benutzer am besten versteht und umsetzt, und nicht derjenige, der den cleversten Code schreiben kann. " (Von Carson63000 Antwort)
Dieser Schlüsselpunkt gepaart mit BethlakshmiDie Punkte von machen einen riesigen Punkt. Ein großartiger Entwickler kann in seinem einen Teil der Realität großartig sein, sich aber auflösen, sobald sich die Welt verändert. Es ist weitaus wichtiger als alles andere, mit den Anforderungen des Unternehmens Schritt zu halten. Letztendlich interessiert sich das Geschäft nicht für Technologie, es sei denn, Ihr Unternehmen ist Technologie. Sie brauchen Lösungen. Mit Designmustern großartig umzugehen, bedeutet also nicht, Endbenutzern, die nur einen Datendump benötigen, um ihn auf einer Webseite anzuzeigen, in die Hocke zu gehen. Ich habe mittelmäßige Entwickler gesehen, die sich einen Job sichern, indem sie sich um das Unternehmen kümmern, das sie unterstützt, während großartige Entwickler sich gelangweilt fühlen und auf der Suche nach einer nie endenden Herausforderung davonlaufen. Abhängig von Ihrer Organisation und Ihren Projekten ist es möglich, diese herausfordernden Entwickler zu unterstützen, aber wahrscheinlich gibt es einen Zeitpunkt, an dem Sie einfach nichts tun. Ich brauche nicht so viel Rechenleistung. Diese Entwickler sitzen nicht gern wie ein Prozessor im Leerlauf. Sie werden an anderer Stelle heruntergefahren und neu gestartet.
Zum Schluss sage ich, es ist in Ordnung zu wissen, wer Ihre "Hauptdarsteller" sind, aber ein "Entwicklungsteam" ist immer noch ein Team. Um Bethlakshmi noch einmal zu wiederholen: " Was werden Sie mit dieser Metrik tun?"Wenn Sie ein Team benötigen, das sich wie ein Team verhält, würde ich mich nicht auf solche Kennzahlen konzentrieren. Ich würde erkennen, dass auch der kleinste Spieler immer noch ein wichtiger Teil des Teams ist. Selbst bei 60% weniger Produktivität Ihres Schlüssels." Spieler, dass ein Spieler Ihrem Team etwas gibt, das es braucht. Finden Sie heraus, was es ist und versuchen Sie es zu multiplizieren. Brennen Sie Ihren Schlüsselspieler nicht aus, indem Sie davon ausgehen, dass er das Team führen sollte. Wenn Sie die anderen Spieler mit dieser Größe kontaminieren, erfordert dies ein wenig Kreativität und nicht nur Zahlen. Am Ende werden Sie vielleicht feststellen, dass ein guter Programmierer nicht nur dieser Programmierer ist, sondern auch seine Kollegen und seine Möglichkeiten am Arbeitsplatz oder es könntest sogar du sein.
quelle