10x Programmierer: Mythos oder Realität?

10x-Programmierer sind heutzutage ein heißes Thema in der Softwarebranche, daher dachte ich, es wäre eine gute Idee, meinen Standpunkt in dieser Hinsicht mitzuteilen.

Gegenwärtig kenne ich die genaue Definition eines 10x-Programmierers nicht, aber ich nehme an, dass sie sich auf hyperproduktive Programmierer bezieht (was vielleicht nicht genau auf die 10-fache Produktivität hinausläuft, aber auf ein signifikantes Niveau in der Nähe von oder mehr als 10).

Basierend auf einigen Erfolgen, die ich bei der Entwicklung ultragroßer Software für Startups und Unternehmen hatte, und auf meiner Erfahrung in der Zusammenarbeit mit einigen erstklassigen Entwicklern, kann ich einige Einblicke in dieses Thema geben.

Der 10-fache Programmierer von damals

Software, die vor 20-30 Jahren entwickelt wurde, war im Vergleich zu moderner Software viel einfacher, was Funktionalität, Sicherheit, Leistung und Skalierbarkeit angeht. Andererseits standen damals nur eine Handvoll Bibliotheken oder Frameworks zur Verfügung, um Funktionalitäten zu implementieren.

Daher war Software, die vor 20-30 Jahren geschrieben wurde, mit einem erheblichen Programmieraufwand verbunden.

Die Definition eines 10x-Programmierers ist in diesem Zusammenhang vergleichsweise einfach. Der Unterschied zwischen dem Aufwand, den 10x-Programmierer und normale Programmierer betreiben, um dieselben Funktionen zu implementieren.

10x dev

Der 10x-Ingenieur von heute

Bevor wir auf weitere Details eingehen, wollen wir eines klarstellen: Softwareentwicklung ist ein komplexer Prozess, und die Programmierung ist nur einer der Bereiche, die zu moderner Software beitragen.

Aufgrund der zunehmenden Nutzung von Software, vor allem über das Internet, sowohl durch Verbraucher als auch durch Unternehmen, ist Software sehr komplex, und es könnte eine verrückte Entscheidung sein, etwas von Grund auf neu zu entwickeln. Ehrlich gesagt, wenn es sich nicht gerade um eine völlig neue Plattform oder ein neues Betriebssystem handelt, ist die Kernprogrammierung, die für die Entwicklung moderner Software erforderlich ist, im Vergleich zu älteren Bemühungen weniger intensiv.

Während Programmierkenntnisse und -aufwand immer noch sehr wichtig sind, liegt der Aufwand, der für die Entwicklung großartiger Software (fehlerfrei, sicher und verkaufsfähig) erforderlich ist, im Bereich der Technik.

Im heutigen Kontext mag ein 10-facher Programmierer nicht viel Wert in der Industrie bringen, aber ein 10-facher Ingenieur hat einen sehr großen Einfluss auf den Entwicklungsprozess.

Ich möchte hier meine 3 Cents hinzufügen.

1. Sie machen den besten Gebrauch von Werkzeugen

Softwareentwicklung ist ein komplexer Prozess, der viele verschiedene Arten von Anstrengungen beinhaltet. Neben der Codierung geht es um das Dokumentieren von Prozessen, das Formatieren von Daten, das Auslesen von Protokolldaten, das Versenden von Berichten, das automatische Testen, das manuelle Testen, das komplexe Debugging, die manuelle Untersuchung von Problemen und so weiter und so fort.

Ein enormer Aufwand kann durch den Einsatz der richtigen Werkzeuge und Plattformen (die dem Budget und anderen Einschränkungen des Kunden entsprechen) äußerst effizient gestaltet werden.

Editoren

Zum Schreiben von Software gehören ein oder mehrere Editoren, von denen einige auch als IDE (Integrated Development Environment) bezeichnet werden. Moderne IDEs, wie z.B. Visual Studio oder Eclipse, bieten eine große Anzahl von Funktionen, um Entwickler produktiv zu machen, aber ein großer Teil dieser Funktionen ist den meisten Entwicklern nicht bekannt.

Populäre IDEs haben auch kommerzielle und kostenlose Plugins (wie Resharper), die noch mehr Entwicklerproduktivität ermöglichen.

Neben IDEs sind auch andere Editoren wie NotePad++, MarkdownPad usw. in einem entsprechenden Kontext sehr nützlich.

Dienstprogramme und Online-Dienste

Dienstprogramme und Online-Dienste wie das Lesen oder Durchsuchen großer Log-Dateien, http-Debugger wie Fiddler, Build- und Deployment-Tools usw.

Eigene Tools

10x-Ingenieure stellen auch eigene Tools her, um sich wiederholende Aktionen auszuführen, für die die entsprechende Software möglicherweise nicht extern verfügbar ist.

In vielen Fällen scheinen die Geschäftsinhaber eines Softwareentwicklungsunternehmens nicht daran interessiert zu sein, viel in Tools für Entwickler zu investieren, aber die Verwendung der richtigen Tools ermöglicht eine überraschend hohe Produktivität.

Für Softwareentwickler, die zu den teuersten Mitarbeitern gehören, lohnt es sich, Geld für das richtige Tooling auszugeben.

Als Leiter eines .net-Entwicklerteams hat die Entwicklung einer ASP.NET Core & Visual Studio-Startvorlage, die den neuesten .net-Codierungspraktiken folgt, meinem Team geholfen, die Gesamtproduktivität um das Dreifache zu steigern.

2. Sie erfinden das Rad nicht neu

Die Softwareindustrie ist in den letzten drei Jahrzehnten sehr reif geworden. Nahezu jedes Problem, das Entwickler durch Programmierung zu lösen versuchen, wurde bereits gelöst und ist als APIs (entweder als Binärdateien oder Webservices) verfügbar, von denen einige kommerziell und andere kostenlos sind.

Außerdem bieten Open-Source-Frameworks eine große Flexibilität, um das zugrundeliegende API-Verhalten zu verstehen oder nach Bedarf der Benutzer anzupassen.

Bevor sie sich in die Programmierung stürzen, vergewissern sich 10x-Ingenieure, dass dieses Problem noch nicht vollständig (oder teilweise) gelöst wurde oder, falls dies der Fall ist, nicht zur Verfügung steht.

3. Sie schreiben (kontinuierlich) ausgereiften Code

Wenn man großartige Software schreiben will, muss man eine gute Architektur definieren, die nicht nur guten Entwurfsmustern und Prinzipien folgt, sondern auch moderne Infrastrukturen nutzt. Die Erstellung von ausgereiftem Code ermöglicht nicht nur die schnellere Entwicklung neuer Funktionen, sondern reduziert auch die Anzahl der Bugs erheblich.

Aber schöne Technik erfordert kontinuierliche Verbesserungen.

Ich habe in meiner beruflichen Laufbahn in verschiedenen Softwareprojekten eine überraschende Menge an Code von geringer Qualität gesehen, der kontinuierlich technische Schulden verursacht. Ein einfaches Projekt, das vor 5 Jahren begonnen wurde, ist voll von unausgereiftem, hässlichem Code und erfordert mehr als 20 Leute, um den Entwicklungszyklus zu bewältigen (wobei sie 80 % ihrer Zeit damit verbringen, Fehler zu beheben).

Einer der Hauptgründe für diese schreckliche Situation ist meiner Meinung nach „Angst“.

Organisationen, insbesondere Unternehmen, haben meist Angst vor Veränderungen.

Die Softwareentwicklung ist eine Disziplin, die sich in Bezug auf Tools, Frameworks und Technik unglaublich schnell verändert, und sie erfordert ständige Veränderungen, um den richtigen Weg einzuschlagen.

Änderungen sind beängstigend, aber sie sind nicht so gefährlich, wie sie klingen, vor allem in der Softwarebranche (mit den richtigen Tools und Mitarbeitern). Aber wenn sie nicht wie erwartet durchgeführt wird, dauert es nicht lange, bis das Projekt eines Tages ganz aufgegeben wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.