Ist es schwierig, als Programmierer zu arbeiten?
Ehrlich gesagt, wäre natürlich das Erste, was ich tun würde, mit geschwellter Brust eine Rede über die Tatsache zu halten, dass es sogar bei übermenschlichem Gehirn und 10 Jahren Mathematikstudium natürlichen Talents und 24-Stunden-Schuftens bedarf… Doch irgendwo in der dritten Minute dieser faszinierenden Ansprache würden die Vernunft und die Skepsis ihre Arbeit machen und verlangen, eine Weile zu schweigen und nachzudenken. Ist es wirklich schwierig?
Coder vs. Programmierer
Irgendwie wurde es in der IT-Welt gebräuchlich, die Coder von den Programmierern zu unterscheiden. Die Ersteren basteln, sozusagen, einfach etwas nach den Vorlagen und Aufträgen von oben, während die Letzteren KREATIV tätig sind. Ich habe diese Aufteilung nie gemocht. Jeder kann mal eine dumme und langweilige Aufgabe bekommen. Einen einfachen Code zu schreiben, bedeutet nicht, dass man dumm oder faul ist, es kann aber zum Beispiel bedeuten, dass man entweder jung ist und einfach noch studiert, oder den Beruf wechseln möchte. Darüber hinaus bedeutet der Vermerk Programmierer in Ihrem Personalausweis, auch wenn Sie kreieren und keine Codes schreiben müssen, nichts Weiteres. Es kommt vor, dass die Programmierer etwas schreiben, worüber sich jeder wundert und sich fragt, ob sie überhaupt ihr Gehirn bei der Arbeit benutzt haben, oder umgekehrt, dass ein gewöhnlicher Mitarbeiter ein Dingsbums so automatisiert, dass das Ergebnis einen bleibenden positiven Eindruck hinterlässt. Fazit: Die offizielle Bezeichnung der Stelle bestimmt nicht die Komplexität der Tätigkeit.
Enge vs. allgemeine Spezialisierung
Es gibt Programmierer enger und allgemeiner Spezialisierungen. Die „Engen“ kennen den exakten Parameter X in der Methode Y der Klasse Z für den Code, damit er bei der Aufgabe W effektiv funktioniert. Die „Allgemeinen“ können nicht nur über Parameter X, Methode Y und Klasse Z keine Ahnung haben, sondern auch über die Aufgabe W. Die Ersteren haben viel Zeit und Mühe investiert, um in diesem Bereich weiter zu kommen; sie haben in der Ausbildung ordentlich geschwitzt, müssen jetzt aber weniger im “Krieg” bluten. Die Letzteren haben ebenfalls fleißig und hart studiert, aber sie haben mehr Zeit den allgemeinen Grundsätzen, universellen Sprachen und generellen Aufgaben gewidmet. In der Ausbildung war es einfacher für sie, doch jeden neuen Tag werden sie mit neuen Herausforderungen konfrontiert. Einige der Herausforderungen lassen sich zu den entsprechenden Kollegen weiterleiten, aber die meisten wird man alleine lösen müssen. Was ist besser: In den jungen Jahren für die “Zukunft” zu arbeiten und danach auf der Gesamtheit seines Wissens auszuruhen oder sich jeden Tag einer neuen Herausforderung zu stellen und die Schwierigkeiten mit der Zeit “wegzuwischen”? Ich weiß es nicht. Auf der einen Seite ist es einfacher zu studieren, solange man noch jung ist, aber die enge Spezialisierung kann ihre Relevanz verlieren. Auf der anderen Seite ist es ein bisschen erniedrigend, eine Menge intellektueller Mühe jeden Tag für etwas aufzuwenden, was ein Experte in einer Minute erledigen kann. Jeder entscheidet das für sich!
Denken oder Nichtdenken?
Leider ähnelt die Arbeit eines Programmierers manchmal der des Fallschirmspringers: Niemand hat sich jemals über das Ergebnis beschwert. Entweder ist alles gut gelaufen und man ist ein guter Kerl, oder alles ist in die Hose gegangen, weil die Fristen angeblich schlecht berechnet worden waren, und das Budget und das Personal nicht ausreichend waren, die Anweisungen dumm gewesen sind, der Kunde falsch reagiert hat, und aus 150 anderen Gründen. Ein guter Programmierer kann immer erklären, warum die gestellte Aufgabe nicht erledigt werden kann. Der Beruf des Programmierers zeigt oft das Dilemma auf: Denken oder Nichtdenken? Ein Fehler wurde mit einer Art Tesastreifen behoben. Ist das in Ordnung oder sollte ich nachdenken, um es besser zu machen? Das System scheint bei 10 Anfragen pro Sekunde stabil zu sein. Sollte ich darüber nachdenken, was bei 100 Anfragen passiert, oder nicht? Ist ein Refactoring sinnvoll, oder nicht? Das Rad neu erfinden oder die allgemein akzeptierte Lösung verwenden? Puffer bei der Architektur einplanen oder so lassen, wie sie jetzt ist?
In jeder Phase gibt es die Möglichkeit, verführt und verlassen zu werden. Ein geistig schwacher Programmierer wird es werden. Viele Leute wollen für das Denken gar keinen zusätzlichen Aufwand betreiben, seltsamerweise denken sie aber ständig daran, wie sich das Denken vermeiden lässt. Es gibt die Wahl, entweder das eigene Leben zu erschweren oder eben nicht. Jeder entscheidet das für sich!
Einschränkungen des Geistes
Es gibt den Witz, dass die Natur das Gehirn unter den Menschen verteilt hat, weil sie über ihr widerspenstiges Haar, eine hässliche Ohrenform oder eine langen Nase geklagt haben, sich aber niemand über die eigene Engstirnigkeit beschwert hat. Also, es ist alles Unsinn. Ich persönlich beschwere mich wohl über meine Engstirnigkeit. Ich kann mir lediglich eine begrenzte Menge an Informationen merken, also muss ich ständig Notizen machen. Ich bin zur Verzweiflung eifersüchtig auf die Computer, die für ein paar hundert Dollar mit einem neuen Prozessor ausgestattet werden können, der ihre Geschwindigkeit verdoppelt. Um einen Algorithmus zu verstehen, brauche ich Abermillionen Mal mehr Zeit als ein Computer, der ihn ausführen muss. Manchmal treffe ich auf unmöglich zu schaffende Aufgaben und gebe auf. Manchmal unterschätze ich die Fristen. Und manchmal trödle ich einfach! Deshalb habe ich ziemlich häufig Schwierigkeiten aufgrund meiner Engstirnigkeit. Ich beneide diejenigen, die etwas größere Nasen und einen fitten Geist haben.
Soll ein guter Programmierer überhaupt irgendwelche Schwierigkeiten haben?
Vor vielen Jahren war ein guter Programmierer ein Mensch, der in der Lage war, effiziente Algorithmen zu schreiben, zusätzliches Taktsignal zu gewinnen und Dutzend Bites Speicherplatz einzusparen. Heutzutage ist es anders. Alle grundlegenden Algorithmen sind in allen möglichen Sprachen ausgezeichnet umgesetzt, Tonnen verschiedener nützlicher Informationen sind in guten und zuverlässigen Bibliotheken gesammelt. Derzeit ist die Schlüsselkompetenz eines guten Programmierers die Fähigkeit, ein Programm aus vorgefertigten Bausteinen zu bilden, um seine Komplexität zu minimieren (und damit die Zuverlässigkeit und die Geschwindigkeit zu erhöhen sowie die Supportkosten zu senken). Die Minimierung der Komplexität ist heute von entscheidender Bedeutung. Wenn man so darüber nachdenkt, dient alles, was in der Programmierung in den letzten Jahrzehnten geschaffen wurde, genau diesem Zweck. Wozu ist die OOP? Um es einfacher und verständlicher zu machen. Wofür brauchen wir die UML? Zur Minimierung von Chaos. Die Schnittstellen? Kontrollierte Sprachen? MVC? MVVM? Alles für denselben Zweck. Es stellt sich heraus, dass ein Programmierer, geschickt mit modernen Werkzeugen hantierend, nur einfache, kompakte und verständliche Codes schreiben sollte, nicht wahr? Es stellt sich heraus, dass ein guter Programmierer keine Schwierigkeiten haben sollte, denn wenn er welche hat, bedeutet das, dass er die Werkzeuge nicht beherrscht, die seine Arbeit einfach und klar machen würden, nicht wahr? Korrekt? Nein, das ist es nicht. Die Verwendung von allem oben Genannten machte es möglich, Systeme zu bauen, die vorher nicht hätten entwickelt werden können. Windows 8 und iOS6 sind 2012 erschienen, nicht weil es vor 20 Jahren unmöglich war, so was zu entwerfen, oder es keine richtige Hardware gab. Der Punkt ist, dass all die bisherigen Programmiermethoden, Managementmethodiken und Ansätze zum Code-Schreiben kein System von so hoher Komplexität wie das aktuelle OS produzieren könnten. Die Menschen sind damals an ihre Grenzen gestoßen, um schließlich viel einfachere Systeme zu machen. Die heutigen Programmierer stoßen auch an ihre Grenzen. Auf jeden Fall wird man in 20 Jahren sowohl über Windows 8 als auch über iOS6 lachen und auf ihre Primitivität und ihre Mängel hinweisen. Glauben wir daran, dass man dann auch verstehen wird, dass die heutigen Programmierer ihr Bestes tun.
Ist es schwierig für Sie?
- Ich schalte meinen Kopf bei der Arbeit überhaupt nicht an.
- Meistens ist es einfach.
- Meistens ist es schwierig.
- Es ist so schwierig, dass es mich verrückt macht.
- Ich verstehe nicht, was ich tue.