Suche

Sind Sie ein konservativer oder ein liberaler Software-Entwickler?

Hartmut Schlosser

(c) Shutterstock / retrorocket

Mit einer arbeitssoziologischen These versucht Steve Yegge seine mitunter konfliktgeladene Arbeitswelt der Software-Entwicklung besser zu begreifen. Es geht dabei um die Verbindung zwischen Weltanschauungen und Technologien, oder anders ausgedrückt: um die persönlichen Werte eines Entwicklers, die sich auch im Umgang mit Programmiersprachen und Entwicklungstools widerspiegeln.

Weltanschauungen

Yegges Hauptthese lautet: Der Bereich der Software-Entwicklung lässt sich anhand einer politischen Achse klassifizieren, die von konservativ bis liberal reicht. Wie in der Politik sind auch Entwickler-Konservatismus und Entwickler-Liberalismus radikal entgegengesetzte Weltansichten. Diese Wertesysteme treffen in jeder Phase des Software-Entwicklungsprozesses aufeinander: zur Design-Zeit, beim Implementieren, beim Testen, beim Debuggen, etc. – und führen zwangsläufig zu Konflikten.

Wie unterscheiden sich nun konservative und liberale Software-Entwickler?

Konservativ versus liberal

Yegge sagt, Konservativismus bedeutet im Kern Risikomanagement. Hauptanliegen der konservativen Software-Entwickler sind deshalb Dinge wie Sicherheit, Stabilität und Performanz eines Systems.

Liberale sind hingegen von dem Wunsch beseelt, Veränderung zu erreichen. Auf die Software-Entwicklung übertragen geht es dem Liberalen darum, die Geschwindigkeit der Feature-Entwicklung und die Flexibilität eines Systems hoch zu halten.

Konservative würden z.B. folgende Aussagen hoch bewerten:

  • Software sollte stets ohne Bugs ausgeliefert werden
  • Programmierer sollten durch ihre Sprachen und Tools vor Fehlern geschützt werden
  • Programmierer sollten so wenig neue Syntax lernen müssen wie möglich
  • Produktionscode muss von einem Compiler auf Sicherheit überprüft werden
  • Schneller Code ist besser als langsamer
  • Datenbanken müssen einem wohl definierten, öffentlichen Schema folgen
  • etc.

Liberale hingegen würden eher folgenden Aussagen zustimmen:

  • Bugs sind kein großes Problem
  • Programmierer sind nur eine kurze Zeit lang Neulinge
  • Programmierer können sich schnell Neues aneignen, wenn der Job es erfordert
  • Rigide Schemata begrenzen Flexibilität und verlangsamen die Entwicklung
  • Unternehmen sollten Risiken eingehen und fortschrittliche Technologien einsetzen
  • Verfrühte Optimierungen sind die Quelle allen Übels
  • etc.

Liberale werden von Konservativen oft als naive, undisziplinierte und „schlechte“ Softwarearchitekten betrachtet. Liberale denken von Konservativen, sie seien paranoid, perfektionistisch und bürokratisch.

Konservative/liberale Technologien

Die Klassifikation macht auch vor Technologien keinen Halt. Eher konservative Begriffe sind:

  • Bewiesene, stimmige Typen-Systeme
  • Zwingend statische Typen-Annotationen
  • Generics und Templates
  • Begrenzungen der Build Dependencys
  • Erzwungene API Deprecation
  • Checked Exceptions
  • Single-pass Compiler
  • Typen-basierte Funktionsüberladung
  • Jede Art des Programmierens, die das Wort „Calculus“ enthält.
  • Etc.

Tendenziell ins liberale Lager gehören hingegen:

  • Metaprogrammierung
  • Dynamisches Scoping
  • Reflection und dynamische Aufrufe
  • RTTI
  • Lisp Makros
  • DSLs
  • Erweiterbare Syntax
  • Debugger
  • etc.

Und schließlich wird die Skala „Liberal-Konservativ“ auch auf Programmiersprachen angewandt:

  • Assembler: Ultraliberal
  • Perl, Ruby, PHP, Shell-Script: Extrem liberal
  • JavaScript, Visual Basic, Lua: Hardcore liberal
  • Python, Common Lisp, Smalltalk/Squeak: Liberal
  • C, Objective-C, Scheme: gemäßigt liberal
  • C++, Java, C#, D, Go: gemäßigt konservativ
  • Clojure, Erlang, Pascal: konservativ
  • Scala, Ada, OCaml, Eiffel: Hardcore konservativ
  • Haskell, SML: Extrem konservativ

Warum Politik mit Software-Entwicklung vergleichen?

Nun sehen wir einmal von den Einzelheiten dieser Klassifikationen ab, die sicherlich jeder von uns etwas anders definieren würde. Die eigentliche Frage lautet: Was bringt es uns, die politische Metapher des Konservatismus und Liberalismus auf die Software-Entwicklung zu übertragen?

Yegge stellt zunächst klar, dass bei den Ausdrücken „Konservatismus“ und „Liberalismus“ in der Software-Entwicklung keine negativen Assoziationen mitschwingen sollten, wie man sie eventuell aus poltischen Diskusen gewohnt ist. Beide Positionen haben ihre Berechtigung, und es ist wichtig, zu seinen Werten zu stehen und nicht ständig den Kopf zu verdrehen. Und auch die Frage, ob ein politisch Konservativer auch ein Entwickler-Konservativer ist, steht auf einem ganz anderen Blatt.

Die Motivation für den Vergleich zieht Yegge aus vielen unfruchtbaren Diskussionen in seiner 30jährigen Karriere, für die er nun einen Ansatzpunkt zur Lösung gefunden zu haben meint. Seiner Ansicht nach hilft die Einsicht in die verschiedenen Wertesysteme der Kollegen, die Gründe für Meinungsverschiedenheiten zu erkennen und so schneller zu Lösungen vorzustoßen. Statt Zeit zu verschwenden, um dem anderen seine eigene Meinung aufzwingen zu wollen, kann direkt übergegangen werden in die „politische“ Phase der Verhandlungen, die üblicherweise in Kompromissen endet.

Auch bei der Zusammenstellung von Teams sei es anzuraten, nicht beliebig Liberale und Konservative zu mischen. Selten ändert nämlich ein politisch Liberaler seine Grundüberzeugung und nimmt plötzlich konservative Werte an. Die Gefahr besteht in Entwickler-Teams, dass ein Liberaler in einem konservativ geprägten Kollegenumfeld nicht zurecht kommt.

Was halten Sie von einer solchen Klassifikation? Sehen Sie Parallelen in Ihrer Arbeitswelt, oder versucht hier jemand, die Schwarz-Weiß-Schablone der Politik auf die Entwickler-Welt zu legen?

Aufmacherbild: Tug of War von Shutterstock / Urheberrecht: retrorocket

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

1 Kommentar auf "Sind Sie ein konservativer oder ein liberaler Software-Entwickler?"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Reiner
Gast

Scala ultra-konservativ? Clojure konservativ? Was für ein Blödsinn.