Code-Monkey-Theorie

Letzten Abend ging mir mal wieder eine Idee durch den Kopf, die ich einfach nicht wieder los bekommen habe und die ich natürlich wieder haarklein ausarbeiten musste. Grundsätzlich gehe ich dabei von 2 Annahmen aus:


  • Technologie aus dem IT-Sektor steigt permanent in Abstraktionsebenen

  • Programmierer/Netzwerktechniker/Whatever lernen permanent dazu, bzw. werden in dem was sie tun besser, solange sie sich ernsthaft darum kümmern was sie in ihrem Beruf so tun und selbst besser werden wollen


Im Folgenden werde ich für Personen die sich nicht mehr weiterentwickeln den Begriff "Code-Monkey" verwenden, es handelt sich dabei um Personen mit stagnierenden Fähigkeiten, die kein wirkliches Interesse mehr für ihren Beruf aufbringen. Dabei werde ich mal einfach ignorieren dass diese Erscheinung durchaus nicht an Code gebunden ist (sprich: ich rede nicht nur von Programmierern) sondern wohl in der ganzen Branche (oder wahrscheinlich auch weit darüber hinaus) vorkommen wird.

Diese Grundlagen werde ich nun erstmal genauer ausführen und dann meine Schlüsse erläutern.

zu den Grundannahmen


Steigende Abstraktionsebene


Jegliche Software scheint sich immer weiter von den relativ statischen Grundlagen der Computertechnik zu entfernen, um flexiblere Funktionen anzubieten. Dies bedeutet einerseits dass die Verwirklichung von immer größeren Projekten immer einfacher wird, da flexiblere Werkzeuge zur Verfügung stehen, andernseits bedeutet es aber auch dass sich Technik in Zwiebelschichten übereinander legt und immer stärker verhüllt was auf den untersten Schichten wirklich passiert.

Ein leider viel zu selten beachteter Nebeneffekt ist leider dass diese Struktur auch immer dazu neigt langsamer zu sein als andere Lösungen, die der physikalischen Grundlage auf der die Technologie basieren, näher sind. (Ein Thema das ich an dieser Stelle wohl erstmal außen vor lassen, ein Rant darüber dass man auch vor 20 Jahren schon Texte schreiben konnte ohne 20sec. auf den Startvorgang des Editors zu warten kommt dann wohl mal wieder gesondert)

permanentes Lernen


Diese Grundlage stellt gleich den wackeligsten Punkt meiner Theorie dar. Natürlich habe ich nicht wirklich die Möglichkeit diese Behauptung mit wahnsinnig vielen Beobachtungen belegen zu können. Wirklich dauerhaft beobachten kann ich dies wohl nur bei mir selbst, dort besitze ich auch die beste Möglichkeit um möglichst genau vergleichen zu können welches Wissen ich mir wann, wo und auf welche Art angeeignet habe.
Bei anderen Personen kann ich allerhöchstens als Außenstehender versuchen den geschriebenen Code in seiner Qualität zu vergleichen, manchmal mag dies schon aufgrund des eigenen Unwissens um bestimmte Hintergründe unmöglich sein, an anderen Stellen wird es ganz einfach durch die eigenen Vorlieben beeinflusst sein. Je länger man mit jemandem zusammen arbeitet, desto stärker muss sich natürlich die Art der Lösungen, die man erzeugt, aneinander angleichen/anpassen.
Dies sorgt sicher für den Effekt dass man z.B. Quellcode den ein Kollege nach 3-4 Jahren zusammenarbeit produziert als "besser" oder zumindest "angenehmer" empfindet als Code den er geschrieben hat ohne zu wissen wer das jemals lesen wird, welchen Stil dieser verwendet oder gar über welche Wissensbasis er verfügt.

Weiterhin mag es durchaus eine Grenze geben, ab der man sich persönlich nicht weiterentwickeln kann, sei es aufgrund des eigenen, begrenzten Intellektes oder anderer Umstände. Bisher konnte ich noch keinen derartigen Effekt beobachten, bin mir aber auch ziemlich sicher dass jemand der von einem derartigem Effekt betroffen wäre, ihn auch nicht wahrnehmen würde oder sich dann zumindest in einer ernsthaften Motivationskriese befinden müsste.

Schlussfolgerungen

Da sich jeder IT-ler permanent in seinem Wissen und seinen Fähigkeiten verbessert, wird er mit dem Verlauf der Komplexitätsebenen auf seinem Tätigkeitsfeld immer besser werden. Verstärkt wird dies durch eben jene Komplexitätsebenen, da man meist eine neue Ebene besser verwenden kann, wenn man die ihr zugrunde liegende Technologie besser verstanden hat.
Ein typisches Beispiel wäre dass es von Vorteil ist wenn man weiß wie eine Datenbank funktioniert, während man ein ORM verwendet. (Sonst kommt z.B. sowas raus)
Gebremst wird dieser Verlauf wohl hauptsächlich durch ein "Aussteigen" der Personen, indem sie entweder die Lust an persönlicher Weiterentwicklungen, bzw. den Wissensdrang nach Hintergründen verlieren, den Tätigkeitsbereich wechseln oder indem sie an persönliche Grenzen stoßen, also z.B. mit einer neuen Komplexitätsebene nicht zurecht kommen.

Je länger und interessierter sich also jemand auf dem Sektor beschäfftigt, umso qualifizierter wird er wohl sein, desto stärker steigt aber auch die Wahrscheinlichkeit dass er "aussteigt". (Übertrieben formuliert: Nur die allerwenigsten Programmierer werden mehr als 100 Jahre Berufserfahrung sammeln.)
Von den ausgestiegenen Arbeitern werden nur die Stagnierenden (oder, sollte das möglich sein, diejenigen die sich verschlechtern) in der Branche bleiben.

eigentliche Theorie

Je mehr Abstraktionsebenen ein IT-Arbeiter in seiner Karriere miterlebt hat und je mehr er sich für sein Fachgebiet interessiert, desto fähiger ist er auf diesem Gebiet. Je fähiger/erfahrener man jedoch wird, desto höher die Wahrscheinlichkeit dass er zu einem reinen "Code-Monkey" wird und nur noch desinteressiert seinen Job macht und in seiner Entwicklung stagniert.
Oder noch kürzer:

Je länger die Berufserfahrung, desto höher die Fähigkeitsstufe, desto höher aber auch die Wahrscheinlichkeit auf einen "Code-Monkey".

Abschließende Bemerkungen

Natürlich habe ich hier noch keinerlei Randerscheinungen beachtet, so kann es z.B. durchaus sein dass jemand nach einiger Zeit als Code-Monkey doch wieder interesse aufbringt oder (und diese Wahrscheinlichkeit ist sogar ziemlich hoch) bereits aus anderen Gründen, als ernstem Interesse am Gebiet, in die Branche wechselt/ausgebildet wird und so seine Laufbahn bereits als Code-Monkey beginnt.

Code-Monkey ist absichtlich ein abwertend gemeinter Begriff, da ich diese Variante weit weniger erstrebenswert ansehe als sich ernsthaft dafür zu interessieren was man tut.
Code Monkeys hingegen als Gesamterscheinung sind durchaus nicht nur negativ zu betrachten, es gibt im täglichen Leben nunmal weit mehr langweilige Tipparbeit und Routinejobs, in denen sich ernsthaft interessierte Zeitgenossen wohl weit weniger wohl fühlen als ein Code Monkey, der sich vlt. sogar mit Routine abgefunden hat. Sie mögen nicht mal annähernd guten Code schreiben, doch sie schreiben verdammt viel davon. Auch wenn jemand besser qualifiziertes also vlt. doppelt so viel Arbeit erledigt, die dann wiederrum nur die Hälfte an Wartungsarbeit verursacht, könnten Code-Monkeys diese Arbeit genauso erledigen, einfach weil es erheblich mehr von denen gibt.

Importierte/Alte Kommentare:

#1362: 30.Nov.2009 02:11 von SirSnookie

Guter Post, aber gerade zu den Abstraktionsebenen muss man auch anmerken, es wird gehyped. Wenn man sich z. B. Java ansieht (ja ich weiss, dadrinne programmiert doch keine blah sülz) - liest man in jedem verdammten Buch: Abstraktion - damit ist der Code wiederverwendbar! Ich hatte zwar noch kein Projekt wo ich GENAU DIESEN Code wiederverwenden wollte aber nunja - wenns in Büchern steht - muss es ja Wahr sein.

Aber sonst, netter Post.

#1363: 06.Feb.2010 10:02 von vaddi

http://code-monkey.de/

Geschrieben von Dr. Azrael Tod
Later article
Miese Zeiten