Warum verwenden wir nicht beschreibende interne Codenamen? [geschlossen]

16

Ich denke, die Verwendung von Codenamen ist weit verbreitet. Unsere Firma nutzt sie auch.

Mein Hauptanliegen ist jedoch, dass diese Namen normalerweise nirgendwo dokumentiert sind. Und die Bedeutung wird durch die Mundpropaganda verbreitet. Und die Namen haben nichts mit der Funktion des Werkzeugs oder der Entität zu tun, die es benennt.

Ich sehe das Muster, dass die internen Testmaschinen nach Sternbildern benannt sind, öffentliche Server nach griechischen Göttern. Und Projekte sind nach Orten oder dem Namen eines zufällig ausgewählten Filmstars oder Charakters benannt. Es sind jedoch keine Informationen direkt aus dem Namen verfügbar, ob die Computer Windows oder Linux sind; 32- oder 64-Bit-Server. Oder worum geht es im Projekt?

Ich habe nur ein schlechtes Bauchgefühl, wenn ich die Commit-Nachricht des VCS sehe, dass jemand gerade das "Gandalf" -Projekt oder das "Callanish" -Projekt oder irgendein anderes Projekt verzweigt hat. Aus dem gleichen Grund benennen Sie Ihre Funktionen und Variablen im Allgemeinen nicht so.

Ich schlug vor, zumindest für die neuen Einheiten aussagekräftigere Namen zu verwenden, stieß jedoch auf starken Widerstand. Anscheinend lieben alle in der Organisation außer mir solche Namen.

Warum verwenden wir nicht beschreibende Codenamen?

Verstehen Sie mich nicht falsch. Ich habe keine Probleme, Programmversionen und Meilensteine ​​zu benennen oder aus Marketinggründen einen schönen Produktnamen zu haben. Aber an allen anderen Orten möchte ich besser aussagekräftige Namen sehen.

BEARBEITEN:

Um Ihnen etwas Kontext zu geben: Gandalf ist ein Projekt, das den Code 64 Bit portiert. Callanish ist, welche Ports es auf Android ... Ich würde lieber die erstere Niederlassung 64bitporting und die letztere androidporting nennen. Vielleicht ein Suffix, das die Zielversion kennzeichnet, die wir ausliefern möchten. So würde jeder beim Namen wissen, was es ist.

Bei den fraglichen Servern handelt es sich um Images von virtuellen Maschinen, auf denen wir das Produkt testen. Ich weiß jedoch nicht, auf welcher physischen Maschine es tatsächlich ausgeführt wird. Es ist also völlig in Ordnung, sie windowsxp_32, windows7_64, debian_32 oder solaris_64 zu nennen.

Calmarius
quelle
6
Was für Sie aussagekräftig ist, ist für andere möglicherweise nicht aussagekräftig genug. Ein Name ist ein Name ist ein Name. Keine Verwirrung oder Meinungsverschiedenheit.
Robbie Dee
1
So viele Antworten, und dennoch, wenn Sie die Frage stellen "Soll ich meine Server absichtlich benennen oder von griechischen Göttern?" Und ja, Fileserver4 ist leichter zu merken als Aphrodita, wenn es darum geht, die Server mit FTP zu merken.
Vorac
2
Diese Frage scheint nicht zum Thema zu gehören, da sie nichts mit der Softwareentwicklung zu tun hat.
Mike Partridge
4
Was ist in einem Namen? Das, was wir bei jedem anderen Wort eine Rose nennen, würde so süß riechen.
Caleb
3
Ich hoffe, der Gandalf-Zweig ist nicht der Codename für ein Unit-Testing-Framework. Alles, was durchlaufen wird, WIRD NICHT PASSIEREN!
corsiKa

Antworten:

25

Wir bezeichnen Menschen nicht anhand ihrer Eigenschaften, da es den ganzen Tag dauert, sie so detailliert aufzulisten, dass sie eindeutig sind und sich die Eigenschaften ändern können. Was ist, wenn sie einen Haarschnitt bekommen? Stattdessen geben wir ihnen Namen. Menschen können sich auch besser an Wörter erinnern als an Ströme von zufälligen Symbolen.

Haftungsausschluss: Dies wird einige Meinungen und Anekdoten aufgrund der Frage enthalten.

An einem Ort, an dem ich vor ein paar Jahren gearbeitet habe, wurden alle unsere Server nach Monden und Körperteilen benannt. "Rhea", "Miranda", "Lunge", "Niere" usw.

Hoch oben entschieden, wie Sie, dass dies alles ein bisschen albern war und wir sie in "beschreibende" Namen wie "arc-sql-w-4" oder "lon-web-lin-2" ändern sollten. Dies stieß auf viel Widerstand. Aber es ging durch. Wir haben alles umbenannt.

Was ist also schief gelaufen?

Zuvor wussten wir von Anfang an, welche Computer die primären Datenbanken und welche die Sklaven waren, weil wir uns an "herzgesteuerten" Kopf "erinnern konnten oder dass" Tarvos "ein Anwendungsserver für X war. Jetzt mussten wir uns an einen undurchsichtigen Stapel von Symbolen erinnern, der die gesuchte Maschine teilweise, aber nicht vollständig beschrieb. Wir mussten über eine Nachschlagetabelle in unseren Köpfen wissen, dass "lon-web-lin-1" ein Anwendungsserver für Produkt A und "lon-web-lin-2" für Produkt B ist.

Es ähnelt den Gründen, warum Sie Passwörter wie FartDownTrousersForALivingDoYou verwenden sollten. statt 43gH5 # € 1. Die Leute sind gut darin, sich an Worte zu erinnern, nicht an willkürlichen Müll. Wörter sind Symbole, die sich auf Dinge beziehen.

Ein weiteres (wahrscheinlich praktischeres) Problem ist, dass Sie Ihre DNS- und Servernamen mit ihren Funktionen verknüpfen. Das heißt, Sie können die Funktion nicht ändern, ohne den Namen zu ändern. Für uns gehörten dazu auch der physische Standort und das Betriebssystem. Welches ist ein massiver Schmerz im Arsch.

Auch und das ist der letzte Punkt. Namen machen viel mehr Spaß.

Was ist mit Projektnamen?

Nun, anstelle von "Project Gandalf", was schlagen Sie vor? "Projizieren Sie den Prototyp der Funktion X und prüfen Sie, ob wir daraus ein Produkt entwickeln können"? Was passiert, wenn sich der Projektumfang ändert und wir das Projekt dann umbenennen? Auch hier sind Namen Kurzzeichen, die sich auf Dinge beziehen.

tom
quelle
4
Anscheinend haben Sie beschreibende Metaphern für nicht beschreibende Hieroglyphen geändert. Sie sollten ein Namensmuster erzwungen haben, das klar macht, welches Produkt auf welchem ​​Server ausgeführt wird. Darum geht es bei "descriptive";)
back2dos
9
@ back2dos - Benennen Sie alle betroffenen Server um, wenn eine neue Anwendung auf dem Server bereitgestellt wird oder eine vorhandene Anwendung auf einen anderen Server verschoben wird? Was ist, wenn Produkt A umbenannt wird (da wir keine Codenamen verwenden)? Werden Sie diesen Namen überall dort ändern, wo er auf einem Client gespeichert ist? Oder lassen Sie irreführende DNS-Aliase bestehen, um den Umfang der Änderung zu minimieren?
Justin Cave
5
@ back2dos - Das Umbenennen von Servern (und das Aktualisieren aller Clients) bei jeder Bereitstellung einer neuen App wird ziemlich schnell schmerzhaft. Was passiert, wenn Sie eine 10. App auf einem bestimmten Server bereitstellen? Was passiert, wenn Sie über Hunderte von Client-Computern verfügen, die auf einen bestimmten Servernamen verweisen? db3.todoappist informativer, wenn der Server nur behandelt todoapp. Wenn Marketing die App "Organizer Pro" nennt und Sie 8 andere Apps auf dem Server haben, wird die Verwaltung der Namen ziemlich kompliziert.
Justin Cave
4
Was passiert auch, wenn Maschinen mehr als eine Funktion haben? Namen werden entweder unüberschaubar groß oder können nicht richtig beschrieben werden.
Tom
2
Es ist schwierig, back2dos nicht zuzustimmen. "Nicht beschreibende Hieroglyphen" ist genau das, woran ich beim Lesen Ihrer Beispiele gedacht habe. Von besonderer Bedeutung ist auch die Unterscheidung zwischen Rolle und Identität, die back2dos macht. In meinem Unternehmen werden Server nach ihren Rollen benannt, und ein Name wie "http-blog-db-failover" scheint viel eindeutiger zu sein als "Hermine", und der Name ändert sich nicht, wenn ich von MongoDB zu wechsle CouchDB oder wenn Marketing beschließt, den Handelsnamen der Website zu ändern, auf der Blogs gehostet werden.
Arseni Mourzenko
10

Dinge nach ihren Eigenschaften zu benennen ist eine grundsätzlich schlechte Idee. Der Grund dafür ist, dass Eigenschaften per Definition veränderbare Phänomene sind, während die Identität eines Objekts selbst dann gleich bleibt, wenn Eigenschaften geändert werden.

Jemand entscheidet, dass der Dateiserver auf Linux migriert werden soll? Wenn der Name "Apollo" ist, ist das kein Problem. Wenn sich der Name auf "Fenster" bezieht, wird er entweder irreführend oder muss überall mit großem Aufwand oder Risiko geändert werden. Sie führen ein neues Ausgabeformat ein? Nennen Sie es aus Liebe zu Gott nicht "newFormat"! Es wird irgendwann noch einmal ersetzt, und das noch neuere Format benötigt einen noch aussagekräftigeren Namen, um es zu unterscheiden. Nennen Sie es entweder "3", damit Sie es später auf "4" erhöhen können, oder "Gold", damit Sie auf "Platin" upgraden können.

(Ein weiterer Grund ist, dass Namen, die aus unzähligen Informationen bestehen, einfach hässlich sind. Niemand möchte an einem Computer mit dem Namen "PC-Marketing-Windows7-143" arbeiten - sie übernehmen "Apollo" oder sogar "Bacchus" jeder Tag. Aber der wichtigste Punkt ist die Identität / Eigenschaft Trennung.)

Kilian Foth
quelle
4
Beschreibende Namen beschreiben keine Eigenschaften, sondern Zwecke . Wenn Sie eine Funktion aufrufen, die die Ausgabe anzeigt Hermes, ist sie besser erkennbar als functionWithTenLinesOfCode. Persönlich würde ich es aber nennen print.
back2dos
@ back2dos Die Beispiele des OP scheinen das Äquivalent vonprint_left_aligned_to_CRT_monitor()
Izkata
@ Izkata: Sie müssen zugeben, das ist viel besser als Cathy(). Anmerkung: Ich persönlich habe Produktionscode mit Funktions- und Variablennamen gesehen, in denen die Texte von Guns & Roses zitiert sind, und habe die Schuld, Produktionscode mit Variablen- und Funktionsnamen zu schreiben, die auf Buffy verweisen.
Slebetman
10

Meiner Erfahrung nach gibt es drei Gründe:

  1. Wenn Sie viele ähnliche Dinge benennen müssen, kann es schwierig sein, eindeutige beschreibende Namen für alle zu finden. Die Leute brauchen eine kurze, eindeutige Art, sich darauf zu beziehen, und wir können besser Namen als Zahlen verwenden (es sei denn, die Zahl ist sehr kurz). Wenn Sie ihm einen Namen geben, nimmt er normalerweise eine Persönlichkeit in Ihrem Kopf an. Sie werden sich also daran erinnern, dass Server Gandalf derjenige ist, dessen flockiger Stromanschluss besser ist als SERWIN15AB23. Es ist auch weniger wahrscheinlich, dass Sie zwei davon mit einem Tippfehler verwechseln.

  2. Der Benennungsprozess kann Spaß machen. Einige Unternehmen tun es mit einer Abstimmung. Andere mögen es, sich eindeutige Namen auszudenken. Fragen Sie einfach einen Elternteil.

  3. Bei externen Projekten entscheidet in der Regel das Marketing, wie der Name lautet, und normalerweise tun sie dies direkt vor der Auslieferung. Wann hat Microsoft beschlossen, das neueste Betriebssystem "Windows 10" zu nennen? Ich bezweifle, dass es immer so genannt wurde. Das Projekt befindet sich möglicherweise schon lange in der Entwicklung, und in einigen Fällen möchten Sie es verschleiern, damit Personen außerhalb des Unternehmens nicht wissen, wovon Sie sprechen.

Scott Whitlock
quelle
5
Es lohnt sich auch hinzuzufügen, dass Namen auf die jeweilige Aufgabe zugeschnitten werden können. Gandalf ist möglicherweise der Build-Server, auf dem "die Magie passiert", Cerberus die Firewall, Hephaestus der Entwickler-Server usw. Es ist sehr schwierig, Zahlen mit Funktionen zu verknüpfen
Liath
1
Übrigens: Der interne Name für "Windows 10" lautet eigentlich "Windows NT 6.4". Aber das Marketing würde niemals zugeben, dass 6.0 alias "Vista" die letzte Version war, in der der Betriebssystemkern ein grundlegendes Redesign erhielt.
Philipp
@Philipp tippe einfach "ver" in die Kommandozeile eines Windows 7-Rechners - 6.1 (Vista SP1 war immer der Witz), nicht sicher, was Windows 8 aus der Vogelperspektive ist.
Liath
Windows 8.1 Pro (Ich bin sicher, dieser PC hat kein Update 1): 6.3.9600 msdn.microsoft.com/en-us/library/windows/desktop/…
WernerCD
@Philipp AFAIK, dies geschieht aus Gründen der Abwärtskompatibilität. Es spiegelt nicht wider, wie sehr sich der Kernel geändert hat.
Svick
6

Beschreibende Benennungen sind schwierig. Es ist viel einfacher, wenn Sie bereits ein Thema haben, das automatisch eine Liste mit Wörtern enthält, die Sie verwenden können.

Wenn Sie mehr des gleichen Objekts haben Namensgebung sie foo1.6, foo1.2etc. bekommt schnell verwirrend / anfällig für Fehler. Wenn Sie zum Beispiel Ihren Test ausführen müssen, werden VirgoSie den Fehler schnell bemerken, wenn Sie gerade aktiv sind Cancer.

Es sorgt auch für ein unterhaltsames Meeting, wenn die Namenskonventionen eingeführt werden und die Entscheidung getroffen wird, die Konferenzraumnamen nach Musikgenres zu ordnen und die Cafeteria zu benennen Salsa.

Ratschenfreak
quelle
Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.Sehr richtig. Aber nur weil es einfacher ist, heißt das nicht, dass es auf lange Sicht gut ist. Was Sie damit sagen, ist nicht anders als ein nicht korrektes API-Design, da es viel einfacher ist, nur die Funktionalität zu testen.
back2dos
3

Dies kann mit einer Kultur mit hohem oder niedrigem Kontext zusammenhängen . Jedes Unternehmen, jede Organisation oder jedes Team hat eine eigene Kultur. High- oder Low-Context-Kultur bedeutet, wie viele Informationen eine Kultur gerne explizit in Beziehung setzt und wie viel Personen aus dem Kontext erwartet werden.

Die Benennung aller Dienste mit Namen aus kulturellen Referenzen bietet zwar Flexibilität, ist jedoch nicht eindeutig genug. Es muss Mundpropaganda oder "Stammeswissen" geben, das die Namen ergänzt - dh den Kontext des Dienstes. Ich habe Situationen erlebt, in denen es zum Beispiel den "Fizzbuzz" -Server oder den "Marcopolo" -Dienst gibt, bei dem niemand weiß, was sie tun, aber sie bekommen Verkehr, also müssen sie etwas tun.

Ich bin eine Person mit geringem Kontext, daher tendiere ich dazu, einfache, explizite Namen zu wählen, die liefern Kontext für den Zweck eines Servers oder Dienstes angeben. Ich schreibe auch "selbstdokumentierenden Code", wobei ich darauf achte, meinen Code so zu benennen, dass er besser lesbar ist.

Aber ich arbeite derzeit in einem kontextbezogenen Geschäft, in dem alle Dienste nach Transfomers benannt sind. Seufzer. Zumindest verwenden sie die Namen konsequent.

Es scheint also eher ein kultureller Wert zu sein, aber technische Praktiken werden sich an die kulturellen Vorlieben anpassen.

High-Context kann auch lustiger sein, und das hat einen gewissen Wert.

rauben
quelle
2

Die wichtige Frage ist: Was ist beschreibend? Die anderen Antworten haben großartige Arbeit geleistet, um zu veranschaulichen, was nicht beschreibend ist.

Lassen Sie uns feststellen, dass Beschreibungskraft durch die Bezeichnung der Dinge nach ihrer Rolle , ihrem Zweck entsteht. Durch was sie tun . Zum Beispiel ist ziemlich klar, was ein "Cutter" macht. Jetzt könnte es eine Axt, ein Laser oder ein Messer sein. Es ist nicht so wichtig. Und ein Laser kann auch ein "Zeiger" sein, eine Axt kann auch ein "Dekorateur" sein, und ein Messer kann auch ein "Punktierer" sein.

Wie andere betont haben, ist die Beziehung zwischen den Eigenschaften von etwas und der Aufgabe, die es erfüllt, relativ locker. Daher ist das Betriebssystem, das Teil des Servernamens ist, nicht beschreibend , sondern lenkt vom eigentlichen Zweck ab.

Es geht Sie nichts an, es sei denn, Sie arbeiten daran, wie die Komponente DoesXX erreicht. Wenn es Ihre Aufgabe ist, werden Sie trotzdem sofort damit konfrontiert.

Wie Rachet-Freak betonte, ist es manchmal schwierig, aussagekräftige Namen zu finden. Aber meistens ist das ein Zeichen dafür, dass Sie nicht verstanden haben, was die Dinge tun, die Sie benennen müssen. Bevor Sie dieses Verständnis haben, sollten Sie sich wahrscheinlich nicht damit befassen, wie es das macht, was Sie nicht wissen;)

back2dos
quelle
+1, aber wie wäre es, ein Beispiel hinzuzufügen? Sie können das Beispiel verwenden, das ich beim Kommentieren der Frage verwendet habe ( http-blog-db-failoverfür einen Computer, auf dem eine Failover-Datenbank einer Website gehostet wird, auf der Blogs gehostet werden). Ein Wechsel von Linux zu Windows oder von MongoDB zu CouchDB hat weder Auswirkungen auf den Namen noch auf Marketingentscheidungen. )
Arseni Mourzenko
2

Ein Grund für Codenamen ist die Verschleierung. Wenn Sie den Namen eines Projekts bedeutungslos machen, können Sie öffentlich darüber sprechen, ohne dass jemand anderes versteht, worüber Sie sprechen.

Wenn Sie Ihren Servern bedeutungslose Namen geben, hat niemand außer den autorisierten Benutzern eine Vorstellung davon, was auf ihnen steht.

Simon B
quelle
2

Der erste Grund ist, dass es kurz und einprägsam sein kann. Wenn Sie darüber nachdenken, wie oft Sie den Namen des Projekts sagen oder schreiben werden, sparen Sie viel Zeit, wenn es einen kurzen Namen gibt, den jeder kennt und versteht.

Der zweite Grund ist, dass es Kameradschaft aufbaut. Wenn das Team den Namen auswählen darf, kann es sich einen aussuchen, den alle mögen. Es ist subtil, aber es steigert die Teammoral, wenn Sie an einem Projekt mit dem Namen Viper oder Gimley oder Boba oder Bugatti anstelle eines Projekts mit dem Namen "Q3 Accounting Updates" arbeiten. Ich hatte einen Freund, der mit ein paar Autoenthusiasten in einem Team arbeitete. Ihr liebstes Projektstartritual war die Auswahl des Autos, das sie als Projekt-Codenamen verwenden würden.

Epotter
quelle
2

Ich habe immer gedacht, dass dies etwas ist, das meistens gemacht wird, weil es die Leute amüsiert. Die Menschen werden von den Medien dazu konditioniert, Wert darauf zu legen, im Dunkeln herumzuschleichen und im Licht des Tages zu agieren. Mit 5 Jahren haben wir "Special Agent Oso"; Mit 15 ist es James Bond. Geheimhaltung verleiht den ansonsten banalen Aktivitäten der Menschen (z. B. Programmieren eines Computers) einen Hauch von Bedeutung.

In ähnlicher Weise hat jemand ein Logo für "Longhorn" erstellt, als dies ein Microsoft-Codename war ( http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg ). Warum sollte jemand ein Logo für einen Codenamen erstellen, der eigentlich nie Teil einer Marketingmaßnahme sein soll? Wieder machen die Leute so etwas, weil es sie amüsiert. Das Herumspielen in Photoshop ist einfacher und macht mehr Spaß als die eigentliche Arbeit.

user1172763
quelle
1

Möglicherweise gibt es ein System, das Sie einfach nicht kennen.
Eine Firma, bei der ich für die verwendeten Namen von Nobelpreisträgern für alle ihre Server gearbeitet habe. Verschiedene Nobelpreise wiesen auf unterschiedliche Serverkategorien hin.
Testserver könnten nach Mathematik-Gewinnern, Datenbank-Servern nach Literatur-Gewinnern, Mail-Servern nach Medizin-Gewinnern usw. usw. benannt werden.
Für jemanden, der mit der Namenskonvention nicht vertraut ist, schienen die Namen völlig zufällig zu sein (zumal die meisten Leute all diese nicht kennen Hunderte von Nobelpreisträgern im Laufe der Jahrzehnte).

Ich habe zu Hause ein ähnliches System verwendet und Computer nach Düsenjägern, Servern nach Bombern und Datenträgern nach Vulkanen benannt.

Das Gleiche könnte mit Software-Teilen geschehen, die Produktionsversionen nach Bäumen benennen, Betaversionen nach Blumen usw. usw.

jwenting
quelle