The Paradox of Freedom
Autor
Marcus HeldHi,
The Paradox of Freedom: The more options we have, the more anxious we become that we chose the wrong thing.
~ Mark Manson
Mark Manson ist kein Softwareentwickler. Er ist Autor. Sein Bestseller: “THE SUBTLE ART OF NOT GIVING A F*CK”
Er gibt Selbsthilfe für Menschen, die Selbsthilfe Bücher hassen. In dem Paradoxon bezieht er sich auf Lebensentscheidungen. Beispielsweise fällt es vielen Menschen schwer eine Liebesbeziehung über Tinder einzugehen. Die Optionen sind so groß, dass man sich bei jedem Date denkt, man könnte noch was besseres haben.
Dieses Paradoxon findet sich auch in der Softwareentwicklung wieder
Das fiel mir neulich auf als ich versuchte die Authentifizierung in einer Applikation zu verstehen. Dabei war ich nur an der Maschinenauthentifizierung identifiziert.
Wie wird sichergestellt, dass Service 1 mit Service 2 sprechen darf?
Als ich in das Repository schaute sah ich Code. Sehr. Viel. Code.
Das Problem ist *eigentlich* simpel. Ich hatte nur eine einfache BasicAuth
mit hard-verdrahteten Secrets erwartet. Aber was ich vorfand war eine Implementierung mit sehr vielen Optionen. Es sollte die gleiche Implementierung für jegliche Authentifizierung genutzt werden. Egal ob Maschine, Kunde, API-Nutzer oder Entwickler. Alle Bedürfnisse sollten mit der gleichen Implementierung abgedeckt werden.
Solche Lösungen haben ihren Preis. Es ist schwer zu verstehen. Klappen eigentlich alle Kombinationen an Features? Ich weiß es gar nicht. Es gibt vielleicht Tests. Wahrscheinlich jedoch nicht.
Zu viele Optionen in unserer Implementierung schränken die Freiheit ein.
Mein Ziel - nach dem Verstehen - war es die Credentials zu rotieren. Doch ich konnte es nicht. Es war viel zu komplex.
Ein anderes Beispiel: Die Auswahl in der CD Pipeline
Noch heute schaute ich in einem Projekt auf die CD Pipeline. Auch hier, eigentlich eine einfache Aufgabe. Es soll eine bestimmte Version auf ein bestimmtes System deployed werden.
Intuitiv erwarte ich also zwei Auswahlmöglichkeiten. Was soll wohin deployed werden. Die Pipeline bietet jedoch acht Optionen. Will ich wirklich deployen? Soll noch die folgende Subpipeline angeworfen werden? Soll nur ein Dry-Run ausgeführt werden? Möchte ich ein extra manuelles approval vor dem Deployment?
Es sind viele Fragen. Und jedes Mal, wenn ich sie laufen lassen will, dann kostet es mich mentale Kapazität. Ich komme nicht drumherum alles zu lesen und darüber nachzudenken.
Es sind zu viele Möglichkeiten. Ich habe nicht mehr Freiheit. Ich habe weniger.
Und was wenn dann ein Fehler aufgrund meiner Auswahl passiert?
Ich würde mich schrecklich fühlen. Schließlich hätte ich anders entscheiden können. Wenn aber alle Optionen für mich bereits getroffen sind und dann ein Fehler passiert, dann bin ich konstruktiver. Es war dann schließlich ein Bug des Systems. Nicht des Nutzers.
Vielleicht denkst du auch gerade an ein System, dass zu viele Optionen bietet. Wie wäre es sie wieder zu kürzen? Du wirst dich frei fühlen.
Dies ist die letzte Ausgabe des Newsletter für 2023. Nächstes Jahr geht es hier weiter und ich freue mich schon darauf :-). , komm gut ins neue Jahr und vielen Dank für deine Treue!
Rule the Backend,
~ Marcus