Rethink your software engineering role

The term ‘legacy code’ is often used to frame our thoughts. If one talks about that we already are thinking about pain-points, old dusty code that is hard to understand. I think that‘s a wrong way of thinking: you are in the current spot to fix/renew that code because it proofed itself to be working and is worth upgrading for one or another reason.

I want you to reframe that mental model from a dusty window-less cellar to a playground swing in which a hedge and a tree a blocking you to use the swing. You can see it through tiny holes but can‘t quite touch it.

You are not a software developer any longer

If you are in a place to refactor that code consider yourself not as a software developer, you are a software archeologist.

  1. An archeologist needs to find a good place to start digging. The knowledge where or how to start is your experience. No archeologist just started in the desert somewhere, they had clues.
  2. After some digging they may find something and need to carefully get hold of the thing to uncover it. Which can be hard work. Imaging finding some dinosaur bones inside stone. It has its challenges to free and uncover it.
  3. Before you remove the thing from it‘s original place it needs to be documented in a map with images.
  4. The extraction maybe the easiest part compared to find a meaning, discover its usage or make sense of it. Has it been left on purpose or was it there by accident. Always considering the place it has been found. Daily use items, like a coffee mug, or a special ritual celebratory mug.

I think this all compares well with the work of a software developer tasked with maintaining or refactoring an old code base. We must match our expactations to match the suroundings and just go with it. It is not worth yelling at the old codebase, it will not change nor will it tell you its secret.

It is up to us to discover the meaning and present it to our colleagues to share knowledge and maybe even find the usage for that code.

Grab your hat, bull whip and start the day as a famous archeologist.

Software sollte dem User dienen

Meinung zu TikTok-Feature und ungleiche Machtverteilung bei Software

Heise.de (Link) hat über einen neuen automatischen “Filter” bei Tiktok berichtet Quelle. Dieser Filter verändert automatisch das Gesicht des Users (Kinnpartie) und die Haut (Weichzeichner) ohne, dass diese Option dekativiert werden kann.

Tiktok hat diesen “Fehler” nach Anfrage behoben.

Ich finde das ein sehr tolles Beispiel dafür wieviel Macht die Programmierer der Software bei Closed-Source-Progammen gegenüber den Usern haben. Wird ein solches “Feature” aktiviert können die User nur darauf hoffen, dass die Entwickler so nett sind und eine Option zum Deaktivieren anbieten oder das Feature wieder entfernen.

Bei Open-Source-Software kann ich als User ein Programm selbst anpassen (anpassen lassen) und dieses dann weiter verwenden.

Einmal Apple und zurück

Ich hab mir vor Jahren einen iPod Nano 4th Generation gekauft und war immer sehr zufrieden damit. Ich konnte normale 3,5mm Kopfhörher verwenden, auch solche die nicht von Apple waren, und mit meinem damaligen Windows- und Linux-Rechner Musik aufspielen.
Nachdem dieser iPod in die Jahre gekommen ist kaufte ich mir einen neuen iPod, mein erstes Apple-Gerät, dass komplett auf Touch basiert. Selbst bei diesem iPod hatte ich noch die Möglichkeit mit Linux Musik aufzuspielen und selbst in alten Autos mit Kasseten-Radio konnte ich den iPod noch verwenden.

Apple stellte zwar mit iTunes eine einfach Möglichkeit zur Verfügung Musik zu verwalten, aber es war nicht ausschließlich über iTunes möglich.

Es folgten weitere Apple Produkte, iPhone 7, MacBook Pro, iPhone 11 und Apple Watch.

Die einfache Integration auf Linux-Basis macht es sehr attraktiv und einfach zu nutzen, der “Vendor lock-in” die Abhängigkeit von einem Anbieter empfand ich damals nicht so schlimm.

Es gab regelmäßige Updates, bei Android haben mich die fehlenden Updates nach kurzer Zeit (1 – 2 Jahre) immer gestört. Somit war nach kurzer Zeit das Handy ohne Sicherheitsupdates und auch neue Android-Versionen gab es somit eher selten. Auch ein zu dieser Zeit “Flagship Modell” stellte keine Garantie da Updates oder neue Android-Versionen zu bekommen.

Subjektiv war es für mich zu dieser Zeit auch noch nicht so schlimm. Wie bei Drogendealern: der erste Schuss ist gratis und von da an gings bergab.

Schlimmer mit jedem Update

Meine Reise ins Apple-Land begann 2015 mit meinem MacBook Pro. Brav wie ich bin hab ich auch immer schön die Updates installiert und mehr und mehr auf die mitgelieferte Software gesetzt: Pages, Numbers, Mail und Fotos. Es hat wunderbar funktioniert und war schön mit dem iPhones integriert.

Nach und nach kamen Systemupdates und damit auch neue Feature. Eines der Gründe für Apple waren regelmäßige Sicherheitsupdates, auch auf dem iPhone, die ich gerne eingespielt habe.

Beim iPhone war es dann nach und nach nichtmehr möglich von anderen Systemen (wie Ubuntu) direkt auf die Fotos zuzugreifen oder Dateien wie mp3 auzutauschen.
MacOS sendet jedes Programm, dass geöffnet wird an Apple zur “Überprüfung” ob das Programm zugelassen ist. Mit welchem Recht darf Apple denn wissen welches Programm ich wann und wie oft am Tag nutze?

Zum Glück gibt es freie Alternativen und ich kann auf meinem MacBook recht einfach Ubuntu installieren. Dank der neuen “Sicherheits”-Chips ist dies nichtmehr ohne weiteres möglich auf neueren MacBooks.

Die Hardware funktioniert noch super und nach den Jahren ohne Probleme, die Software ist das Problem, aber es hat sich ja zum Glück einfach austauschen lassen.
Beim iPhone wird es hier schon schwieriger.

Weitere Updates folgen.