Warum man als Programmierer bescheiden bleiben sollte

Posted by in clean code

Da ich ständig versuche über meine Arbeit zu reflektieren – was übrigens auch von einem Clean Code Entwickler erwartet wird – komme ich immer wieder zu der Frage: Was macht denn einen guten Softwareentwickler aus?

Inzwischen glaube ich ja, dass ich gar nicht so schlecht in dem bin, was ich tue. Aber ich bin weit vom Expertenstatus des Dreyfus Modells entfernt. Für Projekte, die ich selbst mitentwickelt habe, kommt es tatsächlich vor, dass ich Experte bin, da ich bei Bugs intuitiv sagen kann, wo genau das Problem liegt.

Also wie definiert sich jetzt ein guter Softwareentwickler?

Akzeptanz der Gegebenheiten

Wer kennt es nicht? Man sieht sich Code an und denkt „Das muss neu geschrieben werden, am besten in der Sprache xyz-blabla“. Fast jeder hat sich das schon einmal gedacht. Tatsächlich ignoriert man damit die Umstände, die zu dieser Codebasis/Architektur/Sprachauswahl geführt haben. Vielleicht wollte der Kunde genau diese Sprache, weil er nichts anderes kannte und man konnte es ihm nicht ausreden? Die Deadlines waren zu eng gesetzt und es musste irgendwie zum Laufen gebracht werden? (Der Klassiker). Die Architektur musste verbogen werden, da sich die Anforderungen im Laufe des Projekts geändert haben und nicht richtig gegengelenkt wurde. (Mehr Features gleiche Deadline)

Das kann alles passieren und da wir keine Roboter sind, passiert es häufig. All das sollte man sich vor Augen führen und im Zweifelsfall erfragen, warum eine Sachverhalt genau so ist, wie er ist. Meistens gibt es für alles eines guten Grund.

Begeisterung für Neues

Das sollte einfach selbstverständlich sein. Wenn ich es hochrechne, verbringe ich fast genausoviel Zeit im Büro als zu Hause mit meiner Familie. Warum sollte ich diese Zeit damit verschwenden, etwas zu tun, wofür ich mich nicht interessiere. Mit Interesse kommt normalerweise auch die Begeisterung für Neues. Ich lerne gerne neue Sprachen, Frameworks und Konzepte. Softwareentwicklung ist so vielfältig, dass es immer Dinge zu entdecken gibt. Manchmal komme ich mir vor, wie auf einem großen Spielplatz.

Was, wenn diese Begeisterung nicht vorhanden ist? Dann ist man wohl im falschen Beruf gelandet 😉

Handwerkliches Können

So kreativ Programmieren sein kann, so wichtig ist es zu realisieren, dass es ein Handwerk ist. Ohne Geschick mit seinem Werkzeug kann kein Künstler sein Werk fertigstellen. Ob Autodidakt oder nicht, wenn der Code funktioniert, kann er trotzdem handwerklich ein Fall für die Mülltonne sein. Ich denke an dieser Stelle vor allem an konsistente und sinnvolle Benamung von Variablen, Einrückung und die Anwendung von etablierten Konzepten, wie sie zum Beispiel im Clean Code gefordert werden.

Kurz ausgedrückt: Wenn man es so kurz und kompliziert wie möglich schreibt, ist es Prahlerei. Wenn es kurz, prägnant und verständlich ist, ist es Poesie.

Bescheidenheit

Bescheidenheit ist eine Zier… In den letzten beiden Wochen habe ich mehrere Erfahrungen gemacht, die mir das noch einmal verdeutlicht haben. Zum einen wurde ich mit meinem 2 Jahre alten Code konfrontiert, den ich seitdem nicht mehr gesehen hatte. Von der Architekturseite konnte man nichts sagen. Es war verständlich und wartbar. Bei genauerem Hinsehen musste ich jedoch feststellen, dass ich die Problemdomäne nicht hunderprozentig verstanden hatte. Außerdem war der Code unordentlich im Hinblick auf Benamung der Variablen und Methodensignaturen. Ich bin mir sicher, dass ich zum damaligen Zeitpunkt nach bestem Wissen gehandelt habe. Zwei Jahre später sieht das aber anders aus. Der Punkt ist, dass man das immer berücksichtgen muss, wenn man andere Entwickler beurteilt.

Jeder macht es so gut, wie er es zu diesem Zeitpunkt eben kann. So ist es nur sinnvoll, wenn man Lösungen losgelöst vom Autor betrachtet und keine persönliche Einschätzung über dessen Können macht. Auch Überheblichkeit ist fehl am Platz. Keiner hat die perfekte Lösung für jede Aufgabe.

Suchen wir lieber zusammen die Beste Lösung für die Aufgabenstellung.