Windows Confidential: Die Suche nach Fingerabdrücken

Die letzte Person, die ein Codesegment bearbeitet hat, ist letzten Endes für dessen korrekte Ausführung verantwortlich.

Raymond Chen

Es ist eine ungeschriebenes Gesetz in Software-Entwicklung: Die letzte Person, die eine Codezeile ändern wird ipso facto verantwortlich für irgendwelche Probleme auf diese Codezeile zurückgeführt. Selbst wenn alles, was Sie tat fügen Sie ein Leerzeichen nach einem Komma oder korrigieren die Schreibweise einer lokalen Variablen, sind Ihre Fingerabdrücke auf dem Code. Wenn etwas schief geht, wird der Code-Polizei kommen klopfen an Ihre Tür.

Die meisten Quellcodeverwaltung Systeme haben ein Werkzeug, das automatisch die letzte Person identifiziert, die eine Änderung an einer Datei vornehmen. Es kann auch eine Dateiliste generieren, wo jeder Codezeile mit dem Namen der Person versehen ist, die den Code geändert.

In einigen Projekten möglicherweise eine Funktion oder Komponente, die ist so problematische Menschen Änderungen möglichst vermeiden. Sie befürchten, dass ihre Fingerabdrücke auf ihnen vor Ort für die ganze Reihe von Probleme letztlich zurückgeführt, um diesen Code zu setzen haben wird.

Bis dann

Einer meiner früheren Kollegen nahm diese Tradition der Schuld instinktiv Mängel auf die letzte Person, tippen Sie auf eine Datei und verwendet es als Grundlage für einen Abschied Streich. Als seine letzte Akt vor dem Verlassen des Teams an einem anderen Projekt innerhalb von Microsoft beging er eine Änderung, die über Hunderte von Dateien erstreckt. Es berührt jede Datei jeder kritischen Komponente.

Der zugeordneten diese massive Änderung Commit Kommentar hatte den Titel "Convert to breite Unicode." In den Kommentaren reichlich Detail entschuldigte er sich, dass er "einen großen Teil des Projekts, aber nicht alle davon umwandeln." konnte Der Kommentar erläutert, welcher Code ändern im gesamten Projekt, die Arbeit beenden musste. Er stellte ferner fest, einige "Fallstricke", die gefunden werden konnte.

Je mehr Sie den Kommentar lesen, je mehr Sie sich gefragt, welche Art von Wahnsinn er erlebte. Der Kommentar erläutert Änderungen an einigen grundlegenden Konstanten wie MAX_PATH, spezielle Compiler Erweiterungen für Stapel-Puffer zu erstellen, die dynamisch (Verlagerung aller anderen lokalen Variablen um Platz zu schaffen) und andere verrückte Codeänderungen erweitert.

Der Witz war offenbart, wenn Sie die Dateien tatsächlich studierte er geändert. Jede einzelne Datei im Wechsel war eine null Commit. Er habe keine einzige Codezeile ändern. Die Dateien wurden in die Änderung nur für anzeigen festgelegt.

Dieser Streich hatte dauerhafte Effekte seit geraumer Zeit, vor allem aufgrund der Zeitpunkt. Kurz nach meiner ehemaligen Kollegin diesen Witz verübt, das Projektmanagement-Team beschlossen, eine Datenbank zu erstellen, die die Entwickler der primäre Ansprechpartner für jede Datei im Repository wurde verfolgt. Um diese Datenbank zunächst zu füllen, folgten sie die Regel "letzte Person, die eine Änderung in der Datei senden". Da mein Kollege kürzlich Änderungen an jede Datei in der kritischen Komponenten vorgelegt hatte, landete fast jede Datei in dieser kritischen Komponenten mit seinem Namen verbunden.

Für mindestens ein Jahr später würde jede Person oder automatisiertes Tool Beratung der Datenbank meines Kollegen per E-mail Wenn sie ein Problem in einer der Dateien gefunden, wenn er geändert. Er müsste die E-mail zurück zu seinem alten Teamkollegen zu bitten, einen Blick an ihm nehmen und Aktualisieren des Datenbankeintrags zum Verweisen auf die richtigen Besitzer weiterleiten. Dies war die kosmischen Payback für seinen Abschied-Streich in erster Linie zuzufügen.

Raymond Chen

Raymond Chen ist Web-Site, The Old New Thing und gleichnamigen Buch (Addison-Wesley, 2007) befassen sich mit der Geschichte von Windows, Win32 Programmierung und metaphorische Parkplätze.

Verwandter Inhalt