#WMDEDGT Oktober 2018

#WMDEDGT ist eine Idee von Frau Brüllen zur Förderung der Kultur des Tagebuchbloggens.

Ich habe für meine Verhältnisse gut geschlafen, bin nur einmal in der Nacht aufgewacht.

Um 7:40 klingelt mein Wecker, ich bin aber schon 5 Minuten früher wach, und erinnere mich, dass ich heute zum ersten mal bei #WMDEDGT mitmachen will. Während ich noch drüber grüble, dass das als Akronym nicht wirklich leicht von der Zunge rollt, geht der Alarm, und ich ins Bad. Medizin nehmen, anziehen, Treppe runter zum Frühstück.

Mein Frühstück ist wie die meisten Tage eine Tasse Kaffee und eine Schüssel gekochter Haferbrei, mit Rosinen und Apfelmus aus eigenem Garten, von dem ich dieses Jahr literweise gekocht habe, so dass mir fast die Gläschen ausgegangen sind. Seit heute ist aber wieder eins frei. Während ich esse, lasse ich die erste Kanne Tee für den Tag ziehen*.

Auch schon während des Frühstücks kommt Besuch: Linus, der kleine Kater aus der Nachbarschaft, spaziert durch die Katzenklappe ins Wohnzimmer und bedient sich beim Futterspender von meinem Kater Rufus. Das habe ich mir selbst zuzuschreiben, weil ich mir erst nicht viel dabei gedacht habe, als er vor ein paar Monaten das erste Mal kam, und mit Rufus gepielt hat. Er ist ein ganz niedlicher, lässt sich von jedermann streicheln und auf den Arm nehmen, und jagt sogar rote Lichtpunkte. Noch ein richtiges Kätzchen ist der. Aber er frisst halt bei mir, und das soll er lieber daheim tun, sonst ist er irgendwann nur noch hier. Die Besitzer hatten sich schon gewundert, bis wir auf Facebook in der Inselgruppe zueinander Kontakt gefunden haben**. Also greife ich jetzt zur Sprühflasche und verscheuche ihn, und er kommt nur noch in der Nacht zum fressen, was ich am gestiegenen Verbrauch sehen kann. Er sitzt dann auf der Veranda und wartet drauf, dass sein Freund zum spielen kommt, oder dass ich verschwinde.

dav
Nachbarkater Linus sitzt auf der Veranda vor der Katzenklappe.

Um viertel nach Acht bin ich fertig mit Frühstücken, und mit der ersten Tasse Tee im Homeoffice angekommen. Freitags arbeite ich von daheim, weil unser Büro in Drammen liegt, und die 3 Stunden Fahrerei mit den Öffentlichen reine Zeitvergeudung sind. Mein Internet ist hier besser, meine Kollegen sind in Oslo und Amsterdam, und der Kollege aus Drammen ist die meiste Zeit krank, aber diese Woche auch noch im Herbsturlaub.

Als erstes muss ich mal meinen eigenen PC abschalten, denn der ist über Nacht aus dem Standby aufgewacht. Das macht er gelegentlich, und ich habe noch nicht raus, ob es da ein Muster gibt, oder woran es liegen kann (außer natürlich an Windows). Dann aktiviere ich das Macbook für die Arbeit, denn ich halte privat und beruflich streng getrennt, wie sich das gehört, auch wenn das bedeutet, dass auf meinem Schreibtisch vor lauter Tastaturen, Mäusen und Laptops kein freier Platz ist. Entsprechend oft laufe ich jeden Tag ins Erdgeschoss, um mir neuen Tee oder etwas zu knabbern aus der Küche zu holen.

Mein Büro: ein Stuhl, ein Tisch, drei Monitore, Computer
Nicht abgebildet: Der Firmenrechner, der den letzten noch verfügbaren Platz belegt.

Ich bin Software-Entwickler, und heute ist ein normaler Arbeitstag, das heißt, ich habe eine Liste mit Dingen, die entweder kaputt sind oder neu gebaut werden sollen. Was ich genau mache, ist nicht so leicht erklärt, meine Familie weiss auch nur, dass das “was mit Computern” ist, aber ich versuche es mal: Unsere Firma macht Webhosting, und zwar in der Regel für Leute mit Online-Shops, die auf einem in PHP geschriebene CMS*** wie WordPress basiert sind. Wir sind etwas teurer als die Konkurrenz, dafür sind unsere Server weniger dicht mit Kunden bepackt, und erheblich schneller. Unsere Profis kümmern sich darum, dass der Server 24 Stunden am Tag erreichbar ist, die Software immer auf dem letzten Stand, und im Fall, dass mal etwas schief geht, der Kunde davon hört. Ich bin einer von zwei Vollzeit-Entwicklern, der andere ist der Kollege im Urlaub, der aber auch aus historischen Gründen noch Systemadministration macht, weil er die Firma mit gegründet hat, und weiß, wie alles funktioniert. Mein Chef E. sitzt in Amsterdam, und sucht von dort aus nach potentiellen Kunden, verkauft denen unseren Service, und hilft ihnen beim Einzug. Auch das ist historisch so entstanden, genau wie die Webseite, die den Kunden dabei hilft, sich einen Webserver einzurichten, da ihre Site aufzuspielen, SSL-Zertifikate zu kaufen, oder eigene Domänen anzulegen. Die Software dafür, das “Control Panel”, basiert auf einem CMS namens Drupal, von dem ich bis vor zwei Jahre auch noch nie gehört hatte. Aber es ist in PHP geschrieben, und PHP kann ich super gut.

Mein Job diese Woche sollte sein, dass unsere Administratoren die Server, die in unseren Rechenzentren stehen, einem Kunden zuordnen können, der dann exklusiv darauf Zugang hat, und dessen Software sich den nicht mit anderen teilen muss. Dazu gab es schon eine existierende Lösung, die ist aber von meinem Vorgänger geschrieben worden (oder vom Chef) und ist Mist. Da man das nicht in einem Tag aus dem Ärmel schüttelt (wir werden noch sehen, warum), ist da eine langsame Migration von der existierenden Lösung zu meiner neuen geplant, an der ich seit Montag arbeite.

Gestern habe ich quasi mitten im Gedanken aufhören müssen, und wenn das passiert, mache ich mir zum Feierabend Notizen dazu, was noch alles fehlt. Die lese ich also als erstes, sowie alle meine Mail und den Firmenchat, um zu sehen ob es neue Fehlermeldungen von unserem Support gibt, die vielleicht dringender sind als das, woran ich gerade arbeite. Ist aber nicht, meine Mail heute hat nur ein paar irrelevante Jobangebote, die ich lösche, und eine Nachricht von meinem besten Schulfreund aus Deutschland, die ich mir für heute Abend aufhebe.

Los geht’s! Ehe ich zu etwas komme, lege ich ein neues Ticket an in unserem System, für ein mögliches Feature, das mir gestern noch eingefallen war, weil es das gestern nur in die Notizen geschafft hatte. Ein Testlauf****, den ich über Nacht gemacht habe, hat zwei Fehler in meiner bisherigen Arbeit gefunden, damit fange ich an.

20 Minuten später kommt die erste Ablenkung: Wir benutzen zur Entwicklung eine VM*****, in der die Datenbanken für das Control Panel installiert sind. Wenn sich die Struktur der Datenbank ändert, weil z.B. neue Tabellen für ein Feature gebraucht werden, muss die Entwickler-Maschine die selben Änderungen mitmachen, die auch unser Produktionssystem bekommt. So eine Änderung hat es vor einigen Wochen gegeben, und der andere Entwickler hat sie zwar in der Produktion eingespielt, aber ich nicht in unsere VM. Denn neben der Programmiererei ist es auch meine Aufgabe, diese VM bereit zu stellen für mich, den Chef, wenn er auch gerade mal Lust hat etwas zu “helfen”, denn er hat den Code ja ursprünglich gemacht, und für unseren Frontend-Entwickler T, der in Oslo sitzt und gelegentlich mal Veränderungen an der Optik der Seiten macht. So wie heute, zum Beispiel. Da er seit Monaten keine aktuelle Version der VM mehr bei sich installiert hat, macht er das heute, und es klappt nicht. Ich weiß, dass es nicht klappen kann, weil ja die Datenbank nicht aktualisiert wurde, vertröste ihn auf später, setze mir meinen “Management of Development Infrastructure” Hut auf, und repariere in Handarbeit die Datenbank. Die fertige VM ist eine Datei von etwas über 16 GB, die ich ihm und dem Chef schicken muss, ich kopiere die also auf einen unserer Server in Oslo, und sage ihnen, wo sie zu finden ist. Das dauert bei mir eine halbe Minute, weil ich zu Hause tolles Internet habe, bei meinem Chef zehnmal länger, weil er in einem “richtigen” Büro sitzt.

Beim Chef klappt alles sofort, weil der schon die letzten Änderungen von mir alle brav mitgemacht hat. Bei T geht nichts, weil sein Stand veraltet ist, und auf seinem neuen Macbook alles neu eingestellt werden muss. Wir machen also Ferndiagnose im Chat******. Das ist total ätzend, weil ich so Meldungen kriege wie “es geht nicht”, dann zurück frage, was denn genau die Symptome sind, und fünf Minuten warten muss, bis ich eine Antwort kriege, die ich mit “dann probier mal das hier” beantworte, und so dauert das also echt lange, aber am Ende haben wir es repariert gekriegt.

Zwischendurch versuche ich, meine eigene Arbeit voran zu bringen, aber Multitasking kann ich einfach nicht, wenn einer der Tasks meine volle Konzentration braucht, und in diesem Fall sind das beide. Auf einem halben Hirn kann ich weder Ferndiagnose machen noch programmieren. Ich glaube, das Problem ist, dass die Reparatur für T eine Sache ist, die er neben allem anderen macht, was er sonst so arbeitet – Kundensupport, Telefonate, Marketing, usw., und entsprechend wenig von seiner Zeit fällt für mich ab, weshalb ich so viel Wartezeit habe. Wenn wir in einem Büro zusammen sitzen würden, wäre wahrscheinlich auch ihm klar, wie unhöflich das ist.

Zwischendurch wird es irgendwann zwölf Uhr, da mache ich Mittagspause. Heute gab es bei mir Spaghetti, denn da ist noch so ein Stückchen Roquefort im Kühlschrank, der riecht schon seit einer Weile sehr stark und muss mal weg, kommt also in die Soße. Ist sehr lecker gewesen, und es ist sogar immer noch etwas übrig vom Käse. Zum Nachtisch gehe ich irgendwann in einer Wartepause in den Garten und pflücke mir eine Tüte voller Äpfel vom Baum.

Um halb zwei (!) sind wir fertig, und Thomas kann an seinem Problem arbeiten. Ich könnte jetzt auch endlich mit der (geplanten) Arbeit anfangen, aber erst einmal brauche ich neuen Tee, die erste Kanne habe ich nämlich während der Warterei leer gekriegt.

Als ich wieder im Flow bin, meldet sich T, dass er den Fehler repariert hätte, und muss wissen, wie er ihn in unsere Sourceverwaltung eincheckt. Wir benutzen ein Quellcode-Management namens git, das ist nicht einfach, gehört aber sozusagen zur Grundausstattung jedes Entwicklers. Ich kann das besser als die meisten, und statt es zu lernen, kann man mich ja fragen. Immerhin macht er dann nichts verkehrt, wenn er meinen Anweisungen folgt. Es kommt also zu einer neuen Fernbedienung durch den Chat, wo ich ihm sage, was er tun muss, damit seine Änderung erst einmal auf unserem Testsystem landet, wo der Chef und ich uns ansehen, dass es funktioniert.

Danach beschließen Chef und T, dass sie das gerne in der Produktion haben wollen. Mir stellen sich die Nackenhaare hoch, denn eigentlich haben wir einen festen Zyklus für Releases, und machen die nur alle drei Wochen, denn dafür muss das Control Panel einmal offline genommen werden, alle Benutzer fliegen in der Zeit raus, und wenn etwas schief geht, muss es SOFORT repariert werden, egal ob Feierabend oder Weihnachten ist.

Wir haben aber für ganz schlimme Probleme, die nicht auf das nächste Release warten können, einen Prozess, mit dem man auch zwischendurch mal einen Fehler in der Produktion beheben kann. Es passiert immer mal was. Aber für eine rein kosmetische Verschönerung ist der nicht gedacht, diese Änderung erfüllt nicht die Mindestanforderung für das Risiko und den Aufwand, die das mit sich bringt. Ich bin der einzige, der das kann, und mache das in so einem Fall wie hier nur ungern, habe aber auch gelernt, dass Meckern und auf Prinzipien pochen hier quasi nie hilft. Man kann nur hinterher “I told you so” sagen, und so wirklich befriedigend ist das nicht.

Eine halbe Stunde später habe ich den Bugfix über die notwendigen Hürden gebracht, und unser System ist wieder online. Es ist zwei Uhr Nachmittags, ich habe es irgendwann zwischendurch geschafft, meine Änderungen von gestern so rund zu kriegen, dass ich sie einchecken konnte, und mich um meine kaputten Tests zu kümmern, aber richtigen Fortschritt habe ich noch nicht gemacht. Dafür knurrt mein Magen, aber da war doch noch was von dem Käse?

Gestärkt mit einem Butterbrot fange ich kurz vor drei an, meine eigene Arbeit zu machen. Der Rest von Norwegen macht jetzt gleich Feierabend, aber ich habe mir gerade einen Fehler in den Code gebaut, für den ich Montag den Kontext nicht mehr haben werde, egal wie viele Notizen ich mir mache, deshalb bleibe ich noch etwas dran. Sonst grübelt auch mein Hirn daran noch das ganze Wochenende weiter.

Inzwischen meint auch der Kater, dass jetzt Zeit für seine Fütterung sei. Du bist eine Stunde zu früh da, Kater, aber meinetwegen. Nach Feierabend kriegt er von mir immer sein Weichfutter, das mag er besonders gerne.

Um viertle vor vier stecke ich immer noch fest, Spotify spielt gerade “working in the coal mine”, und das Universum sagt mir, dass ich halt doch aufhören sollte. Weil draussen die Sonne sehr schön scheint, mache ich erst einmal einen Spaziergang quer über die Insel zu unserem Lieblings-Badestrand.

Fotos des Strands auf Husøy.
“Nebba”, die beste Badestelle auf unserer Insel, mit Sprungbrett, Leiter und schwimmender Platform.

Hier war ich schon eine Weile nicht, es hat viel geregnet, und wir hatten meist einstellige Temperaturen. Aber das Wasser fühlt sich nicht so kalt an, wie ich erwartet habe, vielleicht nehme ich nächstes Mal doch noch einmal die Badehose mit? Sogar die Badeinsel ist noch nicht wieder eingeholt worden, die Saison also nicht offiziell zu Ende, obwohl Herbstferien sind.

Auf dem Weg habe ich mein Hörbuch gehört und nach Vögeln Ausschau gehalten, die ich inzwischen auch ohne Buch identifizieren kann: Skjære und Piplerke. Und dann bin ich noch an dem Birnenbaum vorbei gekommen, den niemand erntet. Ein bisschen neidisch bin ich ja, Birnen wären auch mal lecker, und obwohl ich gerade vor Äpfeln nicht mehr weiss, wohin mit dem Kram, würde ich da wohl gerne etwas von ab bekommen. Ich kenne die Leute dort aber natürlich nicht, da bleibt es wohl beim träumen.

Norwegischer Garten mit prächtigem Birnenbaum.
Trotz Herbststürmen haben sich die Birnen an diesem Baum prima gehalten, aber jetzt müsste sie langsam mal jemand ernten.

Mein nicht enden wollender Test ist währenddessen fertig geworden, nach 20 Minuten. Das darf so natürlich nicht sein, aber immerhin hat er keine Fehler gefunden. Vielleicht kann ich dann jetzt um 17:30 Uhr doch endlich Feierabend machen.

Jetzt erst mal ein Schläfchen machen, ich bin gerade sehr relaxed, und erschöpft von einem Tag, wo ich fast nichts von dem geschafft habe, was ich geplant hatte, und für Abendessen ist es mir noch zu früh.

Eine Stunde später ist es dann doch Zeit, etwas zu essen, und ich habe noch von dem Broccoli-Linsen Curry übrig, das ich gestern gekocht habe. Das ist sehr lecker, und sollte auch noch für Morgen reichen.

Die ersten anderen #WMDEDGT Posts treffen schon ein, es ist Zeit, dass ich meine Notizen in einen Artikel verwandle, den ich jetzt noch posten und verlinken werde, und dann werde ich noch eine Weile wach bleiben, und entweder fernsehen oder ein Computerspiel spielen, wahrscheinlich mein eigenes. Um 9 mache ich mich fertig für’s Bett, morgen wird ein anstrengender Tag, an dem ich wieder einmal Kindern die schönen Seiten des Programmierens erklären will.

So ist das Leben als Software-Entwickler in einer kleinen Firma. Zum programmieren kommt man an manchen Tagen überhaupt nicht. Die ständigen Unterbrechungen rauben einem den ganzen Tag, und am Ende steht man mit vielleicht 10 Zeilen neu geschriebenem Code da.

 

* In Norwegen gibt es zwei Sorten schwarzen Tee, Earl Grey oder English Breakfast, beides in Beuteln und nicht lecker. Ich trinke aus Deutschland importierte Ostfriesentee-Mischung, die bei jedem Besuch kiloweise mitgebracht wird.

** Die Insel auf der ich wohne hat ca. 320 Haushalte, und die meisten davon sind in einer eigenen Facebook-Gruppe, wo man nach verlorenen Katzen, Fahrrädern oder Stofftieren fragen kann. Oder eben fragen, wem denn dieser Kater gehört, der da ständig zum Abendbrot kommt.

*** Ein CMS ist ein Content Management System. Das ist eine Datenbank voller Dinge wie Blogposts, Seiten, Produkte, Katalog-Kategorien, Preislisten, usw. je nach Zielanwendung, mit Software und Plugins, die daraus eine Webseite machen. WordPress ist eines der bekanntesten CMS, und mit ein paar Plugins kann man daraus z.B. im Netz einen Blumenladen machen, oder Autoteile verkaufen, oder, oder…

**** Wir machen bei uns TDD, das ist Test-Driven Development. Da programmiert man erst einen automatisierten Test für das geplante Feature, und wenn es fertig ist, soll der das melden. Wenn es kaputt ist, sagt der Test, was kaputt ist. Wenn ich sage “wir machen das”, dann meine ich eigentlich “ich mache das, alle anderen finden es doof”, aber daran arbeite ich noch.

***** Eine VM ist eine “Virtuelle Machine”, quasi ein Computer, der in Software emuliert wird, und sich verhält, als wenn man einen zweiten physikalischen Rechner hat. Das praktische daran ist, dass man diesen Rechner nur einmal installieren muss, und dann beliebig oft kopieren, so dass jeder  Mitarbeiter mit dem gleichen System arbeiten kann.

****** Wir benutzen Rocket Chat, das ist so ziemlich das gleiche wie Slack, also ein Messaging-System im Browser.