Programmieren ist furchtbar [2014]
(stilldrinking.org)- Ein Essay, das das Chaos der Softwareentwicklung mit dem Bau einer Brücke vergleicht; ein selbstironisches Geständnis, dass alle Programmierteams aus Verrückten bestehen und auf ihren Ergebnissen Bankensoftware und das Internet laufen
- Perfekter Code existiert nur in Dateien, die allein und isoliert genau eine Sache tun; in der Realität arbeitet man eher so, als würde man unter der Vorgabe, bis Dienstag 600 Stück zu liefern, Picasso auf einen Haufen geschmolzener Schneeflocken stützen
- Webentwickler müssen jede Woche eine neue Technologie lernen und zugleich prüfen, ob Hunderte bestehender Tools nicht kaputtgegangen sind; selbst für Experten ist es in dieser Welt schon Glück, wenn die Ursachenfindung nur 6 Stunden dauert
- Das Internet hängt mit Billionen Dollar an informellen Absprachen und 10 Jahre altem Code mit dem Kommentar "TODO: FIX THIS"; wenn alle Systemadministratoren gleichzeitig Mittag essen gehen, bricht die Zivilisation zusammen
- Programmierer verbringen 10–15 Stunden am Tag mit Aufgaben, für die das Gehirn ursprünglich nicht ausgelegt ist, und werden langsam verrückt; das ist der Preis des Berufs, den sie statt des Hebens von 50-Pfund-Gewichten gewählt haben
Alle Programmierteams bestehen aus Verrückten
- Freunde mit körperlich harter Arbeit beginnen Gespräche immer mit etwas wie: „Du hast es doch leicht, ich habe einen Tunnel unter Mordor gegraben.“
- Wenn wir uns einig sind, dass Stress und seelischer Schmerz schlecht sind:
Willkommen in der Welt des Programmierens - Brückenbau-Metapher: Man steigt in ein Brückenprojekt einer Großstadt ein und findet folgende Lage vor
- Mary ist Projektleiterin, Fred arbeitet nur mit Holz und ist trotzdem für den Gehweg einer 200 Fuß hohen Brücke über reißendem Wasser zuständig
- Dave hat, nachdem ihm ein Pullover gestohlen wurde, 15-stufige Sicherheitskontrollen eingebaut
- Phil ist kein Ingenieur, setzt aber eine Regel gegen Geländer durch; niemand weiß, was Phil eigentlich macht, aber er scheint mit dem Management verbandelt zu sein, also lässt man ihn gewähren
- Sara baut mehrere brandneue („hemorrhaging-edge“) Belagstechnologien gleichzeitig ins Design ein
- Tom und Harry führen seit Jahren einen Krieg Metrik vs. Yard-Pfund-System; es gelten jeweils die Einheiten dessen, der zuerst gearbeitet hat
- Die Brücke war als Hängebrücke geplant, aber niemand weiß, wie man eine Hängebrücke baut, also fügt man in der Mitte Stützpfeiler hinzu; die Tragseile lässt man einfach hängen, weil sie wohl irgendetwas tragen werden
- Dem Neuling sagt man, er solle neue Ideen einbringen, aber in Wirklichkeit ist er Raketeningenieur und weiß über Brücken gar nichts
- Fragt man, ob jemand diese Brücke überqueren würde, sagt niemand ja; und doch wurden nach genau diesem Muster alle Bankprogramme, Websites und Sicherheitsprogramme des Internets gebaut
Aller Code ist schlecht
- Jeder Programmierer hat eine Good-Code-Datei, die er nur dann hervorholt, wenn niemand zu Hause ist, und beim Lesen in Tränen ausbricht
- Funktions- und Variablennamen sind konsistent, knapp und machen offensichtlich nichts Dummes; sie waren nie der Wildnis oder den Anforderungen des Vertriebsteams ausgesetzt
- Sie wurde von genau einer Person geschrieben, nie von anderen angefasst und liest sich wie ein Gedicht von jemandem über 30
- Die Realität: Wenn man am Freitag den Auftrag bekommt, bis Dienstag 600 Schneeflocken zu bauen, nimmt man überall Abkürzungen, Kollegen schmelzen alles wieder weg, alles wird zu einem unförmigen Gemisch, man lehnt Picasso darauf, und nächste Woche schaufelt man noch mehr Schnee heran, damit Picasso nicht umkippt
- Es gibt die Theorie, dass Standards alles lösen würden, aber es gibt mehr Standards, als Computer tatsächlich tun können, und sie werden durch persönliche Vorlieben verbogen; die Realität ist daher eine Codebasis, die dieselbe Aufgabe auf Dutzende verschiedene Arten erledigt
- Die ersten Wochen in einem neuen Job gehen selbst dann dafür drauf, zu verstehen, wie das Programm funktioniert, wenn man alle Sprachen, Frameworks und Standards kennt — denn Standards sind Einhörner
Es gibt immer Dunkelheit
- Die Metapher aus der Kindheit mit dem Wandschrank: Man steigt hinein, die Wand weicht nach hinten und wird zu einem Regal, und wenn man wieder hinaufschaut, existiert dort das absolute Nichts eines Crawlspace, den das Licht nie erreicht; man spürt, dass genau dort das Monster wohnt, das man jede Nacht mit Taschenlampe und Puppen fernhielt
- Genauso ist es beim Lernen des Programmierens: Man lernt nützliche Werkzeuge, schaut sich um und entdeckt neue Werkzeuge, und dieses Werkzeug zeigt einem den bodenlosen Schrecken, der die ganze Zeit direkt neben dem Bett lag
- Die Realität eines durchschnittlichen Webentwicklers
- Selbst wenn man 12 Programmiersprachen sowie unzählige Bibliotheken, Standards und Protokolle kennt, muss man jede Woche noch eine weitere lernen
- Man muss prüfen, ob Hunderte vorhandener Werkzeuge aktualisiert wurden oder kaputtgegangen sind, und ob der Bug, den man an einem betrunkenen Wochenende clever ausgenutzt hat, nicht inzwischen behoben wurde
- Alles scheint aktuell zu sein, und plötzlich ist trotzdem alles kaputt
- Beispiel für eine Fehlerursache: Jemand beschließt, 1/0 als Infinity zu verwenden, dann macht jemand anderes das im Compiler zu einem Fehler, ohne irgendwem Bescheid zu sagen; am Ende braucht selbst ein Experte 6 Stunden, um die Ursache zu finden
- Sogar das Fachwissen im eigenen Gebiet ist nur ein winziger Teil der gesamten Informatik, und es gibt keinen einzigen Menschen, der weiß, wie ein 5 Jahre altes MacBook tatsächlich funktioniert
- Warum man sagt: „Schalten Sie es aus und wieder ein“: weil man absolut keine Ahnung hat, was falsch läuft, also versetzt man den Computer in ein Koma und überlässt ihn dem eingebauten automatischen Ärzteteam
Das Internet ist seine ganz besondere Hölle
- Schon eine Website auf dem Niveau eines Warenkorbs mit drei dynamischen Seiten wird von einem 24-Stunden-Team gewartet, weil ständig alles überall bei allen kaputtgeht
- Genau in diesem Moment arbeitet ein Facebook-Mitarbeiter Tausende Fehlermeldungen ab, ein Team in einem Google-Büro hat seit drei Tagen nicht geschlafen, und irgendwo sitzt ein Datenbankprogrammierer zwischen leeren Mountain-Dew-Flaschen, während seine Frau glaubt, er sei tot
- Wenn alle Systemadministratoren gleichzeitig zum Mittagessen gehen, müssen sie noch vor dem Deli gegen marodierende Mutantenhorden kämpfen
- Billionen Dollar hängen an informellen Absprachen und an Code mit 10 Jahre altem Kommentar "TODO: FIX THIS IT'S A REALLY DANGEROUS HACK"
- Es gibt Gruppen, die aus Spionage, Profit oder Langeweile überall im Internet angreifen, und 4chan kann an einem schlechten Nachmittag das Leben und das Geschäft von jemandem zerstören; aber das beunruhigt kaum noch, weil es sich anfühlt wie eine zusätzliche Atombombe im nuklearen Winter
- Im Internet reicht es, wenn jemand sagt: „Ich glaube, das funktioniert manchmal“, und schon wird es Teil des Internets; mit ein paar Hundert Dollar und einem Computer kann jeder grauenvollen Hack-Code hochladen und alles ein kleines Stück schlechter machen
- Die geheime Regel des Internets: Fünf Minuten nach dem ersten Öffnen des Browsers hat ein russisches Kind deine Personalausweisnummer, nach der Registrierung beginnt die NSA mit der Ortung, und sobald du eine E-Mail schickst, steht deine Adresse auf einer Werbetafel in Nigeria
- Das liegt nicht an Gleichgültigkeit, sondern daran, dass alles kaputt ist und es keinen guten Code gibt, während alle verzweifelt versuchen, den Laden irgendwie am Laufen zu halten
Nicht wir sind verrückt, wir werden verrückt
ERROR: Attempted to parse HTML with regular expression; system returned Cthulhu— wenn du das lustig findest, ist noch alles in Ordnung; wenn sich auf die Frage nach „arrayReverse“ die Antworts/camel/_/natürlich anfühlt, dann sprichst du bereits in Code- Das menschliche Gehirn ist nicht besonders gut für grundlegende Logik ausgelegt, und doch gibt es Berufe, in denen man den ganzen Tag extrem komplexe Logik ausführt
- Wenn man den ganzen Tag riesige Ketten abstrakter Bedingungen und Anforderungen durchsucht, um etwas wie ein fehlendes Komma zu finden, weiß man selbst im Gespräch mit einem Menschen nicht mehr, ob der Satz schon zu Ende ist — weil das Semikolon fehlt
- Beispiele für esoterische Programmiersprachen (esolangs) als Demonstration der zerstörerischen Wirkung auf das Gehirn
- Es gibt Programme, die dieselbe Ausgabe wie „Hello World“ in C++ erzeugen, aber in Brainfuck, Ook! oder als Perl-Code, der Maya-Zahlen als um 90 Grad gedrehte ASCII-Art darstellt
- Das Programm mit Maya-Zahlen hat einen Wettbewerb gewonnen; in so einer Welt findet es niemand seltsam, am Tag eine Schachtel Zigaretten zu rauchen
- Alle Programmierer zwingen ihr Gehirn 10–15 Stunden am Tag, 5–7 Tage die Woche, zu Aufgaben, für die es nie gebaut wurde, und werden alle langsam verrückt
- Fazit: Statt 50-Pfund-Gewichte zu heben, bekam man die Chance, Satan zu dienen, während er sich über einem offenen Schädel die Körperhaare trimmt und isst, und als Gegenleistung läuft ein weiterer Teil des Internets noch ein paar Tage länger
Noch keine Kommentare.