14 Punkte von GN⁺ 2025-12-12 | 7 Kommentare | Auf WhatsApp teilen
  • In der modernen Softwareentwicklungskultur werden Projekt- und Bibliotheksnamen zunehmend mit beliebigen Wörtern gefüllt, die nichts mit ihrer Funktion zu tun haben
  • Früher beschrieben Namen wie grep, awk, sed, FORTRAN, COBOL ihre Funktion oder ihren Zweck direkt, heute wimmelt es dagegen von bedeutungslosen Bezeichnungen
  • Dieser Trend hat sich mit der Ausbreitung von GitHub- und Startup-Kultur beschleunigt, sodass die Verbindung zwischen Name und Funktion vollständig abgerissen ist
  • Die Verständniskosten und die kognitive Belastung steigen, und Entwickler wiederholen unnötige Recherchen, um die Rolle einzelner Tools zu verstehen
  • Der Text fordert die Wiederherstellung klarer, funktionsorientierter Benennungsregeln und betont, dass bei technischen Werkzeugen Klarheit und Professionalität vor Branding stehen sollten

Wandel der Benennungspraxis in der Software

  • Richard Stallman sprach 2022 auf der EmacsConf über die Bedeutung von „leicht zu merkenden Namen“ und betonte, dass Paketnamen erkennen lassen sollten, was sie tun
    • Das Emacs-Ökosystem hat traditionell funktionsbasierte Namen wie dired (Verzeichnis-Editor) und eshell (Emacs-Shell) beibehalten
  • Moderne Entwickler neigen jedoch dazu, ihren Tools Namen wie zufällige Substantive, mythologische Wesen oder fiktive Figuren zu geben
    • In anderen technischen Disziplinen würde ein solches Verhalten als Mangel an Professionalität gelten

Das Problem bedeutungsloser Namen

  • Beispielhaft lassen Namen wie „Viper“, „Cobra“, „Melody“, „Casbin“ oder „Asynq“ keinerlei Rückschluss auf ihre Funktion zu
    • Der Autor erwähnt, dass er sogar suchen musste, um die Infrastruktur-Erklärung eines Freundes zu verstehen
  • In anderen Ingenieurdisziplinen beschreiben Namen Struktur oder Funktion
    • Beispiele: Golden Gate Bridge, Hoover Dam, I-beam, butterfly valve – Form oder Rolle ist direkt erkennbar
  • In der Chemie sorgt die IUPAC-Nomenklatur dafür, dass eine Bezeichnung genau ein Objekt meint
    • Beispiel: 2,2,4-trimethylpentane bezeichnet genau ein Molekül; niemand würde es willkürlich „Steve“ nennen

Frühere Benennungsregeln und der heutige Bruch

  • In den 1980er-Jahren dominierten funktionsbasierte Abkürzungen wie grep, awk, sed, cat, diff
    • Auch Programmiersprachen wie FORTRAN, COBOL, BASIC, SQL, Lisp spiegelten ihren Zweck im Namen wider
  • Seit den 2010er-Jahren begann die Ausbreitung bedeutungsloser Namen
    • Manche Namen wie MongoDB hatten noch einen funktionalen oder etymologischen Bezug, doch mit GitHub- und Startup-Kultur nahm die Zahl inhaltsleerer Bezeichnungen stark zu
    • Als Ursache wird die Tendenz genannt, markenorientierte Erfolgsgeschichten wie Google nachzuahmen

Kognitive Kosten und sinkende Entwicklungseffizienz

  • Namen wie libsodium machen es schwer, auf die Funktion zu schließen, und zwingen Entwickler immer wieder zu Kontextwechseln
    • Schon die Frage „Warum sodium?“ kostet unnötig Zeit
  • Je mehr Projektabhängigkeiten es gibt, desto stärker summiert sich diese kognitive Steuer (cognitive tax)
    • Das führt zu sinkender Produktivität bei Entwicklern
  • Der Autor kritisiert, dass beim Verarbeiten von Sätzen wie „Viper, Cobra, Melody …“ geistige Ressourcen für die Entschlüsselung bedeutungsloser Tokens verschwendet werden

Häufige Gegenargumente und ihre Widerlegung

  • „Leicht zu merkende Namen sind fürs Marketing vorteilhaft“ → Tools für Entwickler sind keine Konsumprodukte, funktionale Klarheit ist wichtiger
  • „Beschreibende Namen sind langweilig“ → Langeweile ist als Preis für Klarheit akzeptabel; chirurgische Instrumente sind auch langweilig, aber präzise
  • „Das ist doch nur zum Spaß“ → Alle Nutzer zahlen den Preis dieses ‚Spaßes‘, was in der gesamten Branche zu Zeitverschwendung führt
  • „Die guten Namen sind schon vergeben“ → Namespaces, Präfixe und Komposita können das Problem lösen; mindestens sollte ein Name mit der Funktion zusammenhängen

Wohin es nun gehen sollte

  • Das Problem wird weniger als böse Absicht denn als Folge eines kulturellen Wandels erklärt
    • Mit der Verschiebung des Programmierens von unternehmenszentrierten zu communityzentrierten Strukturen wurden soziale Normen geschwächt
  • Die Lösung ist eine kulturelle Wiederherstellung von Benennungsregeln
    • Statt Regulierung braucht es Verbesserungen durch wiedergewonnene Professionalität, Ausbildung und sozialen Druck
  • Bibliotheksnamen sollten ihre Funktion widerspiegeln; wenn nötig, sind auch Komposita und längere Ausdrücke akzeptabel
    • Beispiel: „http-request-validator“ ist viel klarer als „zephyr“
  • Maskottchen und Name sollten getrennt werden
    • PostgreSQL verwendet zum Beispiel das Elefanten-Maskottchen Slonik, während der eigentliche Name funktional bleibt
  • Wenn es sich nicht um ein Konsumprodukt mit wichtiger Markenbildung handelt, sollten Klarheit und Professionalität Vorrang haben
    • Bevor man den Namen einer Lieblings-Animefigur vergibt, sollte man sich fragen: „Würde ein Bauingenieur einem Brückensystem so einen Namen geben?“
  • Schlussendlich müsse die Wildwuchs bedeutungsloser Bezeichnungen beendet und zu klarer fachlicher Sprache zurückgekehrt werden
    • Klarheit ist keine Langeweile, sondern Respekt vor der Zeit und den kognitiven Ressourcen der Nutzer

7 Kommentare

 
roxie 2025-12-15

Wenn kein Beispiel dabeigestanden hätte, wäre die Überzeugungskraft wohl um 10 % gestiegen..

 
kandk 2025-12-15

Ich stimme bis zu einem gewissen Grad zu, aber es wirkt so, als wollten sie den Stress vermeiden, Namen vergeben zu müssen.

 
qpolsa95 2025-12-13

Alle brauchbaren Namen werden offenbar schon von irgendwem verwendet.

 
GN⁺ 2025-12-12
Hacker-News-Kommentare
  • Die GNU-Version von Yacc heißt Bison. Pine war ein Akronym für „Pine Is Not Elm“, und UNIX stammt von UNICS als Wortspiel zu MULTICS. Niemand weiß so recht, wofür dd steht, nano ist ein Klon von pico, und Postfix ist eine Kombination aus „post“ und „bug fix“. C++ ist die inkrementelle Version von C, C ist der Nachfolger von B, und B ist der Nachfolger von BCPL. In Wahrheit haben Entwickler nicht die „Philosophie des Benennens“ verloren — sie hatten nie eine. Umgekehrt finde ich moderne Projekte wie Clang, LLDB, jq, fzf und loc gute Beispiele für gelungene Namen. mise-en-place ist eine perfekte Metapher für die Funktion von mise

    • dd stammt von der DD-Anweisung in JCL. Ursprünglich kam das aus der Art, wie Dateien auf IBM-Mainframes beschrieben wurden, und der UNIX-Befehl dd wurde geschaffen, um Dateien mit Mainframes auszutauschen. Deshalb hat er untypisch für UNIX eine Syntax im Format key=value
    • dd wurde traditionell scherzhaft als „delete disk“ oder „destroy data“ bezeichnet, weil es häufig zum Überschreiben von Disk-Blöcken verwendet wurde
    • C++ steht für den Post-Inkrement-Operator von C. Also eine perfekte Metapher: gleicher Wert wie C, aber nach dem Lesen erhöht
    • GNU und Emacs sind ebenfalls rekursive Akronyme. Perl, Python, Java, Go, Pascal, Git, Mercurial, CVS usw. haben ebenfalls ganz unterschiedliche Namensgeschichten. Letztlich halte ich die Namensdebatte für ziemlich bedeutungslosen Lärm
    • Back Orifice 2000 machte schon am Namen klar, was es tut, BitchX dagegen nicht
  • UNIX-Befehle wie grep, awk, sed, cat und diff hatten funktionale oder systematische Namen, aber eigentlich lässt sich höchstens diff intuitiv erraten. awk als guten Namen zu bezeichnen, ist übertrieben

    • Dass solche Namen natürlich wirken, ist nur eine Vertrautheitsillusion. Heute gibt es so viele Utilities und Bibliotheken, dass Unterscheidbarkeit bei Namen unverzichtbar ist
    • Libiberty war einer der witzigsten Namen überhaupt. Der Name wurde so gewählt, dass man es mit der Option -liberty linken kann
    • cat ist keine Abkürzung von concatenate, sondern kommt von catenate. Das Präfix „con“ wäre redundant und wurde deshalb weggelassen. Auch sprachwissenschaftlich ein interessantes Beispiel
    • awk, sed und cat sind weniger gute als vielmehr vertraute Namen. grep klingt eher wie eine Lautmalerei und vermittelt das Gefühl, Muster „herauszugreifen“
    • Solche Akronyme oder Kürzel werden wie branchenspezifischer Jargon: Hat man sie einmal gelernt, fühlen sie sich natürlich an. Früher war Tippeffizienz wichtig, daher hatte der Unterschied zwischen cat und concat echte Auswirkungen auf die Produktivität
  • Dem Argument „In der Technik ist so eine Benennung Karriereselbstmord“ widerspreche ich. Wenn man sich die Liste der Codenamen des US-Verteidigungsministeriums ansieht, findet man sogar viele absichtlich undurchsichtige Namen. Der Hoover Dam hieß anfangs Boulder Canyon Project, und auch dieser Name beschreibt die Funktion nicht. Wäre Reitzlib wirklich ein besserer Name als Requests? Am Ende hängt ein Name vom Kontext ab

    • Auch in der Chemie gibt es viele unterhaltsame Namen. Beispiele sind Algorithmen oder Pakete wie SHAKE, RATTLE, CHARMm und Amber. Niedliche Namen sind in der Biologie noch verbreiteter
    • Auch die Meteorologie ist keine Ausnahme. Ein bekanntes Beispiel ist das Polarlicht-Phänomen STEVE
    • Militärische Codenamen werden absichtlich zufällig vergeben, um Bedeutung zu verschleiern. Interne Unternehmensprojekte machen das gelegentlich genauso
    • Auch in der Biologie gibt es Namen wie Sonic hedgehog protein
    • Die Astronomie ist besonders berüchtigt für ihre schrecklichen Akronymnamen. Beispiele gibt es unter diesem Link
  • Namen wie awk sind eigentlich keine guten Namen. Sie bestehen einfach aus den Initialen der Autoren und vermitteln die Funktion überhaupt nicht. Heute gibt es Tab-Vervollständigung, daher muss man Namen nicht mehr zwangsläufig so stark abkürzen

  • Ich kann mich mit diesem Gegenartikel identifizieren. Externe Bezeichner verändern ihre Bedeutung mit der Zeit, daher altern anfangs präzise beschreibende Namen schlecht. Außerdem gibt es viel zu viele Namen wie „X Manager“ oder „X Service“, die schwer auseinanderzuhalten sind

    • Ich mag originelle Namen. Wenn das Benennen schwerfällt, ist das ein Zeichen dafür, dass das Konzept noch nicht klar ist. Der ideale Name wirkt anfangs seltsam, bleibt aber im Gedächtnis, sobald man seine Bedeutung kennt. Dass das A/B-Test-Team von Spotify sich „ABBA“ nannte, ist dafür das beste Beispiel
    • Natürlich hängt es vom Ziel ab. Aber sich auf eine einzige Aufgabe zu konzentrieren und diese im Namen zu tragen, ist ebenfalls ein gutes Prinzip
  • Ich habe als Engine-Kalibrierungsingenieur bei einem Auto-OEM gearbeitet, und alle Variablen und Funktionen bestanden aus Abkürzungen. Der erste Monat war mental so anstrengend, dass mir fast der Kopf platzte. Irgendwann sagte ein Kollege, das sei wie das Erlernen einer neuen Sprache — und genau so war es. Mit anderen Worten: Viele technische Namen verringern die kognitive Last nicht automatisch

    • Im Mobilfunk ist es genauso. Wenn man versucht, sich alle Akronyme zu merken, kommt man nie ans Ende. AP kann je nach Kontext etwa für Application Processor oder Access Point stehen. Trotzdem verwendet man es, weil es immer noch kürzer ist als MSISDN
    • Das Video zur Londoner Taxiprüfung zeigt, dass die Lernbelastung so hoch ist, dass sich sogar die Struktur des Gehirns verändert. Komplexe Benennungssysteme erzeugen also grundsätzlich kognitive Belastung
  • Der Aussage „Funktionale Namen sind besser als Marketingnamen“ stimme ich nur schwer zu. Funktionsbasierte Namen erzeugen am Ende ein endloses Meer aus Akronymen. Dann verwechselt man ABDC mit ADBC

    • Ich habe ebenfalls in so einer Organisation gearbeitet, und am Ende gab es Namen wie CoreMainHttp und MainHttpCore, sogar unterschiedliche APIs mit demselben Namen. Auch verschwundene Organisationsnamen bleiben in Bezeichnungen wie „DataOrgUtils“ erhalten. Letztlich konvergieren auch niedliche Namen durch Wiederholung. Kulturelle Meme wie Phoenix, Keymaster, Simpsons oder Star Wars tauchen immer wieder auf
    • Der Autor übersieht, dass sich Werkzeuge im Wettbewerb behaupten mussten. Einprägsame Namen halfen beim Überleben
  • Dass so ein Beitrag auf HN auftaucht, überrascht mich. Namen wie awk als Beispiel zu nehmen und daraus zu schließen, man habe „das Wesen des Benennens verloren“, ist widersprüchlich. Am Ende wirkt das wie eine persönliche Abneigung gegen niedliche Namen. Übrigens wurde dieser Kommentar in Firefox geschrieben — am Namen allein erkennt man nicht, dass es ein Webbrowser ist

    • Auch Namen wie awk hatten damals durchaus ihre eigene Bedeutung. Moderne Software muss ein breiteres Publikum berücksichtigen, daher braucht es ein Gleichgewicht zwischen Fachlichkeit und Witz. Ich habe nichts gegen niedliche Namen, aber im beruflichen Kontext sollte man vorsichtig sein. (Dieser Kommentar wurde mit msmtp gesendet — einem SMTP-Client, dessen Name seine Funktion tatsächlich beschreibt)
  • Auf das Argument „Beschreibende Namen sind langweilig“ würde ich entgegnen, dass auch Instrumente im Operationssaal oft nach Personennamen benannt sind. Adson, Allis, Babcock, Kocher — keiner dieser Namen beschreibt die Funktion. Am Ende bekommen sie ihre Bedeutung durch Gewöhnung. awk ist kein tolles Beispiel, diff dagegen schon eher

    • Wer schon einmal einen Kirchner-Draht im Körper hatte, wird dem zustimmen
  • Zur Aussage „Unser Feld ist wie ein Zoo aus zufälligen Substantiven“: Ich mag unterhaltsame Namen. Mein Projekt Wimsey ist eine Bibliothek für Datentests, aber das verrät der Name nicht. Trotzdem gefallen mir Namen wie Python, Cron oder Zellij, weil in ihnen Zuneigung und Humor stecken. Technik wird letztlich von Menschen gemacht, und sie sollte Freude bereiten. „brown-dog-2“ ist weniger menschlich als „cookie“

    • Ein Name wie „data-testing-library“ verliert aber in dem Moment seine Bedeutung, in dem es ein zweites Projekt davon gibt
    • Strukturierte Namen wie Project.Parser.Pcapng in .NET sind innerhalb eines Projekts gut, aber in einem eigenständigen Kontext nutzlos
    • Umgekehrt empfinden manche Menschen Professionalität selbst als Quelle der Freude und halten niedliche Namen für ablenkend. Es gibt auch die Sichtweise, dass die Befriedigung aus handwerklicher Meisterschaft die eigentliche Freude ist
 
epdlemflaj 2025-12-13

Selbst awk ist nicht wirklich ein funktionsbasierter Name....

 
khris 2025-12-13

Weiß jemand, wofür emacs steht? Es hat zwar wohl eine Bedeutung, aber bei Akronymen erkennt man das nicht auf den ersten Blick, obwohl es doch ein Name sein soll … und nur nach Funktionen zu benennen geht inzwischen auch kaum noch, dafür gibt es einfach zu viele Projekte.

 
cgl00 2025-12-13

Wenn man sieht, wie auf GitHub geschimpft wird, ist das einfach nur so eine RMS-mäßige grundlose Unterstellung, lol