Ein großer Drehmaschinenbediener verdient das Mehrfache eines durchschnittlichen Drehmaschinenbedieners, aber ein großer Schreiber von Software-Code ist das 10.000-fache des Preises eines durchschnittlichen Software-Schreibers wert. - Bill Gates
Angenommen, es gibt einen "großartigen" Software-Ingenieur und einen "durchschnittlichen" Software-Ingenieur im selben Team. Wie kann ein Ingenieur 10.000-mal produktiver sein? Ich kann mir das nicht so recht vorstellen, da sie beide ihren Anteil an Funktionen, Fehlern und Nachforschungen übernehmen und durchweg mit Qualität liefern. Würde meine Beschreibung möglicherweise rechtfertigen, dass sie über dem Durchschnitt liegen? "toll"?
productivity
Der Aufprall
quelle
quelle
Antworten:
Der Sinn des Zitats ist nicht, dass einer 10K-mal produktiver ist, sondern dass einer 10K-mal so viel wert ist wie der andere. Software hat den einzigartigen Zustand, in dem ein fehlerhaftes Design oder eine fehlerhafte Implementierung jahrelang inaktiv bleiben kann (ein Teil, das falsch bearbeitet wurde, funktioniert normalerweise nur "nicht" und schafft es nicht ins Feld), und zwar bis zu einem bestimmten Zeitpunkt im Lebenszyklus des Produkts Tag räkelt es sich in einer unüberwindlichen Situation.
Jeder sollte mit den exponentiellen Kosten für die Behebung eines Fehlers vertraut sein, wenn er vom Entwurf über die Implementierung, das Testen, die Produktion bis zur Wartung reicht.
Wenn Sie die mögliche Haftung sowie die Reputation des Unternehmens berücksichtigen, können Sie leicht den Schluss ziehen, dass der Entwickler, der genug wusste, um das Problem zu vermeiden, das 10.000-fache derjenigen wert ist, die eine schlechte Lösung ignorant oder naiv implementiert haben.
Edit (Frühjahr 2014): "Heartbleed"
quelle
Der durchschnittliche olympische Schwimmer kann in einiger Entfernung ungefähr 4 km / h schwimmen.
Die durchschnittliche Person (die schwimmen kann) kann in einiger Entfernung ungefähr 1,5 Meilen pro Stunde schwimmen.
Dies bedeutet, dass ein durchschnittlicher olympischer Schwimmer in ca. 8 Stunden den Ärmelkanal schwimmen kann.
Es liegt also nahe, dass der olympische Schwimmer 60% schneller als der Durchschnitt ist und dass der durchschnittliche Schwimmer ungefähr 13 Stunden braucht, um das Rennen zu beenden ...
Nur wenn ich als Durchschnittsschwimmer versuche , den Ärmelkanal zu durchschwimmen, werde ich nur eine Woche später an der Küste angeschwemmt.
Viele Aspekte der Programmierung ähneln dem Schwimmen im Ärmelkanal. Es ist sinken oder schwimmen. Ich weiß nicht einmal, ob 10.000X besser ist, um die Unterscheidung zwischen fertiger Software, die funktioniert, und unvollständiger Software, die nicht funktioniert, wirklich noch genauer zu beschreiben.
quelle
Das ist eine Menge "Givens" für einen "durchschnittlichen" Softwareentwickler. In Wirklichkeit löst der großartige Softwareentwickler Probleme in Stunden, die der durchschnittliche Entwickler niemals richtig lösen wird. Der großartige Softwareentwickler löst gewöhnliche Probleme in einem Drittel der Zeit mit einem Fünftel so viel Code und einem Zehntel so vielen Fehlern. Der Code des großen Software-Ingenieurs wird in O (n) ausgeführt, während der Code des durchschnittlichen Software-Ingenieurs in O (n ^ 3) ausgeführt wird. Der großartige Softwareentwickler kann seine Lösung anpassen, während Sie warten, während der durchschnittliche Softwareentwickler sich über späte Änderungen an der Spezifikation beschwert und angibt, dass es Wochen dauern wird, bis neue Anforderungen erfüllt sind. Das sind alles echte Unterschiede, die ich gesehen habe, als ein großartiger Ingenieur die Arbeit eines durchschnittlichen Ingenieurs wiederholt.
quelle
Ich werde versuchen, dies in Bezug auf die Unterschiede anzugehen:
Ein großartiger Ingenieur kann Folgendes besser als ein Durchschnittsingenieur:
Zusammengenommen würden diese speichern die Unternehmen viel Geld in die Entwicklungszeit und machen das Unternehmen viel Geld in zusätzliche Möglichkeiten.
quelle
Ein großartiger Programmierer "nimmt nicht oft nur seinen Anteil an Funktionen, Fehlern und Nachforschungen an", um einen Lohn zu verdienen. Manchmal verlassen sie ihre Firma und gründen ein eigenes Unternehmen oder treten einem Startup bei oder gründen ein neues Skunkworks-Projekt oder treten in den alten Tagen einem landesweit bekannten Forschungs- und Entwicklungslabor bei und entwickeln ein Produkt, von dem niemand glaubt, dass es überhaupt benötigt wird , oder man dachte, es könnte mit Software zu tun haben, bevor dieser großartige Programmierer Einsicht, Geschick und Schweiß hatte.
Ein Großteil dieses Programmierers, der "wert" ist, handelt von einer angemessenen Belohnung für das Risiko. Der Programmierer könnte sogar gefeuert worden sein, weil er über solche verrückten Softwareprodukte nachgedacht hat, anstatt doppelt oder mehr bezahlt zu werden.
Was passiert mit einem gelegentlichen Softwarestart? Gehen Sie an die Börse für eine Million / Milliarde oder lassen Sie sich von Google, Facebook und anderen akquirieren. Ähnliches passiert nur selten Drehmaschinenführern (obwohl mindestens ein erfolgreicher Tech-Firmengründer aus dem Silicon Valley eine Drehmaschine in seiner Werkstatt hatte).
quelle
Es gibt einige Lösungen, die nur die besten Programmierer lösen können. Tausende von mittelmäßigen zu werfen, wird nicht funktionieren. Es ist auch schwieriger, ihre Bemühungen zu koordinieren, selbst wenn sie die Teile ihres Wissens gemeinsam kombinieren könnten.
Das Beantworten von Fragen zu SO ist nicht anders. Es gibt viele Probleme, bei denen eine Gruppe von durchschnittlichen Entwicklern die Antwort finden kann. Diese Websites leisten wahrscheinlich eine viel bessere Koordinierungsarbeit als die meisten Entwicklungsteams, was traurig ist.
quelle
Ich denke, es gibt einige empirische Beweise, die das Zitat von Gates stützen. Ich erinnere mich, dass ich gelesen habe (obwohl ich mich nicht an die Quelle erinnere), dass bei Eingabe-Pools der Unterschied in der Ausgabe (für einen Eingabe-Pool leicht messbar) zwischen denen im 5. Perzentil und denen im 95% -Perzentil etwa 3 zu 1 betrug. Aber Nachdem die Textverarbeitungssoftware verfügbar wurde, stieg das Verhältnis auf etwa 10 oder 20 zu 1, da diejenigen, die die erweiterten Funktionen der Software nutzen konnten, einen noch größeren relativen Vorteil erzielten.
Vermutlich für die Softwareentwicklung wäre das Verhältnis sogar noch höher, da es noch mehr Freiheit gibt, alle Arten von Werkzeugen, Techniken usw. zu nutzen. Es ist schwieriger, die Unterschiede zu messen, aber die meisten Versuche kommen mit mindestens 10 zu 1 und Das ist vermutlich eine Unterschätzung des Unterschieds, weil nur gemessen wird, was leicht zu messen ist.
Beim Tippen oder Bedienen einer Drehmaschine stoßen die Menschen in den oberen 1% wahrscheinlich fast an die physiologischen Grenzen des Möglichen. Bei der Programmierung ist dies eindeutig nicht der Fall (das Verhältnis zwischen dem Zeitaufwand für das Schreiben von Code und dem Zeitaufwand für das Eingeben von Code ist enorm), sodass viel mehr Variationsspielraum bestehen sollte.
quelle