Darüber habe ich nachgedacht, seit ich diese Antwort im umstrittenen Thread mit Programmiermeinungen gelesen habe :
Ihre Aufgabe ist es, sich von der Arbeit zu befreien.
Wenn Sie Software für Ihren Arbeitgeber schreiben, muss jede Software, die Sie erstellen, so geschrieben werden, dass sie von jedem Entwickler mit minimalem Aufwand erfasst und verstanden werden kann. Es ist gut gestaltet, klar und konsistent geschrieben, sauber formatiert, dokumentiert, wo es benötigt wird, wird täglich wie erwartet erstellt, in das Repository eingecheckt und entsprechend versioniert.
Wenn Sie von einem Bus angefahren , entlassen, entlassen oder aus dem Job entlassen werden, sollte Ihr Arbeitgeber in der Lage sein, Sie in kürzester Zeit zu ersetzen, und der nächste könnte in Ihre Rolle eintreten, Ihren Code abrufen und aufstehen Laufen innerhalb einer Woche Tops. Wenn er oder sie das nicht kann, haben Sie kläglich versagt.
Interessanterweise habe ich festgestellt, dass dieses Ziel mich für meine Arbeitgeber wertvoller gemacht hat. Je mehr ich mich bemühe, verfügbar zu sein, desto wertvoller werde ich für sie.
Und es wurde ein bisschen in anderen Fragen diskutiert, wie zum Beispiel in dieser , aber ich wollte es noch einmal ansprechen, um aus einem genaueren Blickwinkel zu diskutieren: " Es ist ein Codegeruch !! " - was nicht wirklich behandelt wurde noch in die Tiefe.
Ich bin seit zehn Jahren ein professioneller Entwickler. Ich hatte einen Job, bei dem der Code gut genug geschrieben war, um von jedem anständigen neuen Entwickler relativ schnell aufgegriffen zu werden, aber in den meisten Fällen in der Industrie scheint es, dass ein sehr hohes Maß an Eigenverantwortung (sowohl Einzelverantwortung als auch Teamverantwortung) das ist Norm. Den meisten Codebasen fehlen anscheinend die Dokumentation, der Prozess und die "Offenheit", die es einem neuen Entwickler ermöglichen würden, sie in die Hand zu nehmen und schnell mit ihnen zu arbeiten. Es scheint immer viele ungeschriebene kleine Tricks und Hacks zu geben, über die nur jemand Bescheid wissen würde, der die Codebasis sehr gut kennt ("besitzt").
Das offensichtliche Problem dabei ist natürlich: Was ist, wenn die Person aussteigt oder "von einem Bus angefahren wird"? Oder auf Teamebene: Was passiert, wenn das gesamte Team eine Lebensmittelvergiftung bekommt, wenn sie beim Team-Lunch ausgehen und alle sterben? Wären Sie in der Lage, das Team relativ schmerzlos durch einen neuen Satz zufälliger Entwickler zu ersetzen? - In einigen meiner früheren Jobs kann ich mir das überhaupt nicht vorstellen. Die Systeme waren so voll von Tricks und Hacks, dass man " nur wissen muss ", dass jedes neue Team, das man einstellt, viel länger braucht als der profitable Geschäftszyklus (z. B. neue stabile Releases), um die Dinge wieder in Gang zu bringen. Kurz gesagt, ich wäre nicht überrascht, wenn das Produkt aufgegeben werden müsste.
Offensichtlich wäre es sehr selten, ein ganzes Team auf einmal zu verlieren. Aber ich denke, dass dies alles subtiler und finsterer ist - und genau an diesem Punkt habe ich darüber nachgedacht, diesen Thread zu beginnen, da ich noch nie zuvor gesehen habe, wie er in diesen Begriffen diskutiert wurde. Grundsätzlich: Ich denke, ein hoher Bedarf an Code-Besitz ist sehr oft ein Indikator für die technische Verschuldung . Wenn es an Prozessen, Kommunikation, gutem Design, vielen kleinen Tricks und Hacks im System mangelt, die man "nur wissen muss" usw., bedeutet dies normalerweise, dass das System immer tiefer in die technische Verschuldung gerät.
Die Sache ist jedoch, dass Code-Besitz oft als eine Art "Loyalität" gegenüber einem Projekt und einem Unternehmen dargestellt wird, als eine positive Form der "Übernahme von Verantwortung" für Ihre Arbeit. Es ist daher unpopulär, dies endgültig zu verurteilen. Gleichzeitig führt die technische Verschuldungsseite der Gleichung häufig dazu, dass die Codebasis zunehmend weniger offen und schwieriger zu bearbeiten ist. Und vor allem, wenn die Leute weiterziehen und neue Entwickler ihren Platz einnehmen müssen, steigen die technischen Schulden (dh die Wartungskosten).
In gewisser Hinsicht denke ich, dass es für unseren Beruf eine gute Sache wäre, wenn ein hohes Maß an Code-Besitzbedürfnissen offen als Job-Geruch gesehen würde (in der Vorstellung der beliebten Programmierer). Anstatt als "Verantwortung und Stolz auf die Arbeit übernehmen" zu gelten, sollte es eher als "sich festigen und künstliche Arbeitsplatzsicherheit durch technische Schulden schaffen" verstanden werden.
Und ich denke, der Test (Gedankenexperiment) sollte im Grunde genommen lauten: Was wäre, wenn die Person (oder in der Tat das gesamte Team) morgen von der Erde verschwinden würde? Wäre dies eine gigantische - möglicherweise tödliche - Verletzung des Projekts, oder könnten wir neue Leute einbeziehen, sie dazu bringen, die Doccos und Hilfedateien zu lesen und ein paar Tage mit dem Code herumzuspielen - und dann wieder dabei sein Geschäft in ein paar Wochen (und zurück zur vollen Produktivität in einem Monat oder so)?