Humble Developers – Die Einhörner der Softwareentwicklung
Wir müssen sehr vorsichtig sein, wenn wir jüngeren Menschen Ratschläge geben: Manchmal befolgen sie diese! — Edsger W. Dijkstra
Ich würde gerne einem bescheidenen Entwickler die Hand schütteln. Ich habe 20 Jahre lang gesucht und nur Cowboy-Entwickler, wütende Entwickler, Entwickler, die sich nie irren, und Leute gefunden, denen gesagt wurde, dass sie als Entwickler an dem Projekt arbeiten.
Entwickler sind viele Dinge: kreativ, motiviert und fleißig, aber bescheiden sind sie nicht. Um allen das Gegenteil zu beweisen, sind Entwickler absichtlich nicht bescheiden, sondern sagen der Person, die gesagt hat, dass Sie bescheiden sein sollen: NEIN, DAS TUN SIE NICHT .
Ein Benutzer, der weiß, wie die Software funktionieren soll, der Weihnachtsmann und ein bescheidener Entwickler betreten ein Büro und sehen auf dem Boden einen genauen Projektplan. Wer holt es ab?
Der Weihnachtsmann, die anderen beiden existieren nicht (Symbolabsturz) und der genaue Projektplan auch nicht
Kluge Entwicklerworte
Die besten Entwickler sind bescheidene Entwickler, wird uns gesagt. Dies ist einer der vielen ärgerlichen Ratschläge, die wir Entwicklern geben, ohne zu erklären, was ein bescheidener Entwickler tut oder warum es gut ist, ein bescheidener Entwickler zu sein.
Ein erfahrener Entwickler wird gegenüber einem jüngeren Entwickler Prinzipien wie Einzelverantwortung, TDD, YAGNI erwähnen, ohne dass er das Prinzip logisch erklären und schon gar nicht in der Lage ist, es umzusetzen.
Nutzen Sie zum Beispiel die Fähigkeiten, das Wissen und die Erfahrung, die Sie durch die Bearbeitung eines „Hallo Welt“-Beispiels erworben haben. Sie erkennen schnell, dass diese Prinzipien in der realen Welt kaum umsetzbar sind. Wenn man mit der wahren Komplexität der Todesstern-Anforderungen eines echten Projekts konfrontiert wird, sind die „Hello World“-Fähigkeiten lächerlich gering.
Andere kluge Entwicklerwelten sind
- Prinzip der Einzelverantwortung – Das ist unmöglich, denn nach 30 Sekunden wird einem klar, dass ein einfacher Code 50 Methoden erfordern würde.
- KUSS – Halte es einfach, dumm – WIE! Wie kann ich weiterhin komplexe Software erstellen, die 2000 Dinge einfach erledigen muss?
- YAGNI – Du wirst es nicht brauchen – die Illusionsentwickler haben Zeit, zusätzlichen Code zu erstellen, den sie nicht brauchen, während sie kaum Zeit haben, den Code zu erstellen, den sie brauchen.
- Vermeiden Sie technische Schulden – Sie können technische Schulden nur vermeiden, wenn Sie über alle Anforderungen und ein Team erfahrener Entwickler verfügen
- TDD – Tests schreiben, bevor Software ein halbes Leben ist
- Klären Sie immer die Annahmen – was großartig ist, außer dass es sich bei allen Anforderungen um Annahmen handelt, da kein Benutzer den aktuellen Prozess oder den zukünftigen Prozess versteht oder von seiner normalen Arbeit freigestellt wurde.
- Prinzip der geringsten Überraschung – Ich bin regelmäßig erstaunt über den schrecklichen Code, der es in die Codebasis geschafft hat, aber das passiert, wenn man einen Monat Zeit hat, um drei Monate Arbeit zu erledigen und vier Stunden am Tag in Besprechungen zu verbringen
- Gesetz von Demeter – Programmieren Sie niemals allein mit einer Petronas in der Tasche (Harry-Potter-Witz)
- Schnell scheitern – endlich etwas, das ich regelmäßig tun kann
Ich betrachte einen bescheidenen Entwickler wie einen gelassenen Entwickler vom Typ Yoda, der nach 400 Jahren als Softwareentwickler äußerst weise ist.
Der bescheidene Entwickler schwebt in einer Wolke und hört ruhig zu, wie ein Nachwuchsentwickler völlig falsch versteht, was gemacht werden muss, und erklärt allen, warum Hard-Coding die beste Lösung ist.
„Ho ho ho“, lacht der bescheidene Entwickler sanft und zeigt dem Entwickler mit einer aufschlussreichen Frage die Schwäche seiner Idee und weist ihn auf etwas Einfacheres und Wartbareres hin.
Mittlerweile in der realen Welt
Wenn man von wahnsinnig dummen Entwicklern umgeben ist, die dabei sind, idiotische Dinge zu tun, und Stunden damit verbringen, den Code zu schreiben, zu testen und bereitzustellen. Es gibt keine Zeit für Demut, Entwickler kämpfen darum, bis zum Ende des Tages zu überleben, ohne alle anderen Entwickler in ihrem Team zu töten.
Jeder Entwickler denkt, dass er Recht hat und alle anderen Unrecht haben.
Bescheidene Entwickler sind ebenso verbreitet wie Einhörner oder Anforderungen, die sich nicht ändern.
Ein bescheidener Entwickler zu sein ist genauso einfach wie ein bescheidener Elternteil. Es dauert ungefähr 5 Sekunden, bis ein Kind Sie zum Ausbruch bringt, indem es etwas Dummes, Unartiges oder dumm Unartiges tut.
Ich möchte ein bescheidener Entwickler sein, aber das scheint unmöglich, wenn die Softwareentwicklung voller kluger Leute ist, die dumme Dinge tun. Entwickler sind viele Dinge, aber bescheiden sind sie nicht.
Zuzugeben, dass die Idee eines anderen Entwicklers besser ist als ihre eigene, ist für viele Entwickler wie ein Schlag in den Bauch MIT EINEM VORSCHLAGHAMMER.
Gefahren
Die besten Entwickler, mit denen ich zusammengearbeitet habe, waren motiviert. Sie haben eine Lösung im Kopf und wollen diese durch harte Arbeit verwirklichen. Viele Entwickler werden so lange programmieren, bis der Code funktioniert, egal wie lange sie dafür brauchen.
Ist dieser Antrieb Teil dessen, was sie zu guten Entwicklern macht? Würde es ihre Wirksamkeit schwächen, ihnen den Antrieb zu nehmen und ihn durch Demut zu ersetzen?
Dennoch gibt es in der Softwareentwicklung nicht den besten Weg, irgendetwas zu tun, und es gibt keinen einheitlichen Weg, ein guter Entwickler zu sein.
Es gibt keine Best Practices, die immer funktionieren. Es gibt Good Practices, die für bestimmte Situationen geeignet sind (Erfahrung, Personen, Fähigkeiten, Wissen usw.).
Demut annehmen
In den letzten Jahren habe ich Demut auf eine Weise angenommen, die mir als jüngerer Entwickler nicht möglich gewesen wäre (ich bin jetzt Lösungsarchitekt, nicht Entwickler). Als ich ein jüngerer Entwickler war, hatte ich das Gefühl, dass meine Ideen die besten Ideen waren. Je älter ich werde, desto mehr freue ich mich über die Ideen anderer.
Wenn man mit guten Entwicklern (und nicht mit Cowboys) zusammenarbeitet, kommen sie regelmäßig auf großartige Ideen, auf die ich nicht hätte kommen können, weil ich nicht über ihr einzigartiges Wissen, ihre Fähigkeiten und ihre Erfahrung verfüge. Diese Erfahrung änderte meine Meinung darüber, Recht zu haben.
Jetzt nutze ich andere Leute, um zu sehen, wo ich falsch liege und was ich verpasst habe. Es erscheint dumm zu glauben, dass nur ich auf die besten Ideen kommen kann.
Andere Entwickler bieten unterschiedliche Perspektiven und unterschiedliche Ideen, die Ihnen helfen können
Bescheidenheit ist nicht in allen Situationen der beste Ansatz. Dies hängt vom Kontext ab (Fähigkeitsniveau anderer Entwickler, Erfahrung, Wissen, Zeitpläne usw.).
Weiterführende Literatur
- Großartige Entwickler sind bescheidene Entwickler
- Die größten Bedauern, die leitende Entwickler in ihrer Karriere haben
- Entwickler – Lassen Sie sich von der bescheidenen Ameise leiten

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































