Ein Produktmanager bittet Sie, einen Fehler zu beheben.

Du warst schon mal hier.

Ihr Code ist elegant.

Sie haben genau die richtige Menge an Abstraktionen.

Ihre Module sind modular aufgebaut.

Ihr System geht über durchdachte Schnittstellen mit der Außenwelt um und ist nicht direkt von externen Systemen abhängig.

Ihre Tests sind grün. Das Laden Ihres Berichts zur Codeabdeckung dauert eine ganze Minute. 97% heißt es ...

Das leben ist gut.

Und dann passiert es.

Ein Produktmanager meldet Ihnen, dass das Update, das Sie letzte Woche ausgeliefert haben, einen Fehler enthält. Immer wenn ein Benutzer einen Artikel in den Warenkorb legt, dauert die Aktualisierung des Zählers, der die Anzahl der Artikel in seinem Warenkorb anzeigen soll, einige Sekunden. Früher wurde es sofort aktualisiert.

Die PM teilt Ihnen mit, dass Beschwerden von Benutzern eingehen. Er fragt Sie: Können Sie bitte einen Blick darauf werfen?

Natürlich können Sie einen Blick darauf werfen. Immerhin hast du das Ding gebaut. Es ist wahrscheinlich die Schuld eines anderen. Aber du wirst es reparieren. Das ist genau die Art von Angestellter, die Sie sind.

Sie ziehen den Git-Hash aus dem Commit der neuesten Version und durchsuchen das Änderungsprotokoll. Sie haben die HTTP-Anforderungsbibliothek auf die neueste Version in der letzten Version aktualisiert. Es stand lange an. Sie können sich an das genaue Commit erinnern, das es ermöglicht hat. Das war ein guter tag

Sie wechseln zu diesem Commit und simulieren dann die Anforderung, mit der der Warenkorb aktualisiert wird. Gut, dass du so eine saubere Trennung von Sorgen hast. Sie können ganz einfach Tests mit Staging- und Produktionsservern durchführen, indem Sie ein Build-Flag setzen.

Sie haben den Täter gefunden. Es scheint, dass die von Ihnen aktualisierte HTTP-Bibliothek eine Regression aufweist. Bei bestimmten Arten von Anforderungen dauert das Parsen der eingehenden JSON-Nutzdaten etwas zu lange. Ihre App kann die Benutzeroberfläche des Warenkorbzählers erst aktualisieren, nachdem die Nutzdaten der Anforderung analysiert wurden. Die Infrastruktur ist noch nicht darauf ausgelegt, eventuelle Konsistenz zu bewältigen, und dies hinzuzufügen, wäre ein ganzes Projekt für sich. Sie können den Zähler nicht einfach lokal aktualisieren und später synchronisieren.

Sie wussten, dass jemand anders schuld war. So ist das Leben.

Sie teilen dem Premierminister mit, was gerade passiert. Er klopft dir auf den Rücken. Er wusste, dass er auf dich zählen konnte. Weißt du, wie man es repariert?

Offensichtlich.

Sie haben Ihre Optionen geprüft.

Sie können die Änderungen nicht rückgängig machen. Eine Reihe neuer Codes und Fehlerbehebungen hängen von der neuen lib-Version ab. Sie würden all diese auch verlieren, wenn Sie einfach alles zurücksetzen würden.

Einfach die Bibliothek zu öffnen und Ihre eigene Kopie zu pflegen, scheint auch nicht klug zu sein. Die ursprünglichen Projektbetreuer verfügen über eine riesige Testinfrastruktur, mit der Sie Ihre Fehlerbehebung auf Tausenden von Geräten testen können. Sie haben 3 Geräte, von denen 2 veraltete Betriebssystemversionen haben. Am besten holen Sie sich auch Ihr Feedback. Es ist schließlich ihre Bibliothek und sie werden Einblicke in ihre Innereien haben, die Sie nicht haben.

Also wirst du:

  • Gabeln Sie die lib
  • Implementieren Sie das Update
  • Senden Sie eine Pull-Anfrage an das Original-Repo
  • Haben Sie ein bisschen hin und her zwischen Ihnen und den Betreuern
  • Überzeugen Sie sie schließlich davon, dass Ihre Idee die beste Lösung ist
  • Upstream zusammenführen
  • Warten Sie auf ein Patch-Release der lib
  • Aktualisieren Sie die Bibliothek in Ihrem Code
  • Schieben Sie eine neue Version heraus

Kinderleicht.

"Großartig", sagt der Premierminister. "Wie lange wird es wohl dauern?"

Du kennst die Antwort. Die Leute sagen, Ingenieure können nicht einschätzen. Du bist keiner dieser Ingenieure.

"2 Wochen", sagst du ohne zu blinken. "Kommt darauf an, wie schnell die PR angenommen wird und die Betreuer einen neuen Build herausbringen."

Die Farbe tropft vom Gesicht der PM. "2 Wochen? 2 Wochen ?! "Er wiederholt den Satz immer wieder, als würde er etwas ändern. Aber du bleibst ruhig. Es ist bekannt, dass PMs vom Griff fliegen. Nichts, über das man sich sorgen sollte.

„Unsere Benutzer legen ab! Sie kaufen nichts, weil sie nicht sehen können, dass ihre Einkaufswagen aktualisiert werden. Wir sind ein E-Commerce-Unternehmen! Das ist inakzeptabel!"

Sie sehen, wie er die 5 Phasen der Trauer durchläuft. Sie warten darauf, dass die Annahme jeden Moment erfolgt. Das ist nicht der Fall. Er scheint im Verhandlungsmodus festzustecken.

"Gibt es keine Möglichkeit, das Problem schneller zu beheben? Etwas vorübergehendes? Komm schon! Das ist wichtig!"

"Gut", sagst du und lässt dich in deinen Drehstuhl sinken. "Lass mich sehen."

Sie werden ihn ein bisschen belustigen. Vielleicht lässt er dich dann in Ruhe. Sie haben andere Dinge zu erledigen, wissen Sie.

Sie tauchen zurück in die Quelle. Du bist in deinem Element. Ihre Finger navigieren durch die IDE-Verknüpfungen wie Poseidon selbst, der auf den Wellen des Ozeans reitet.

Aha! Du hast es gefunden. Es gibt eine undokumentierte Möglichkeit, sich in den JSON-Parsing-Code einzuklinken und ihn durch Ihre eigene Implementierung zu ersetzen!

Aber warte. Das sieht hässlich aus. Es ist eine nicht öffentliche API. Möglicherweise ein Fehler, es so zu entlarven. Sie möchten sich nicht darauf verlassen. Was ist, wenn sie es in der nächsten Version entfernen? Sie müssen das noch einmal machen. Wer will das schon machen? Dies ist jedoch schneller als das Verwalten Ihrer eigenen ungetesteten Version der Bibliothek. Aber es ist immer noch hässlich.

Nein.

Sie werden nicht zulassen, dass falsche Geschäftsentscheidungen Ihren Tempel der Reinheit ruinieren. Du bist der Hüter von allem, was gegen die unwissenden Massen heilig ist. Deshalb zahlen sie dir das große Geld. Es ist Ihre Pflicht, dies abzulehnen.

Sie stürmen in die Kabine des Premierministers. "Die Antwort ist nein. Es gibt keinen sauberen Weg, und ich glaube nicht an hässliche Hacks. Es tut mir Leid."

Er reagiert wie erwartet.

"Sie sagen mir, dass es eine Möglichkeit gibt, dies zu tun, aber Sie werden es nicht tun, weil es nicht sauber ist? Unsere Nutzer schreien uns buchstäblich an und drohen, zu unserem Konkurrenten zu wechseln. Sie können das Problem nicht beheben, weil es nicht sauber ist ?! "

Du verlierst es.

Was weiß dieser Typ über Technik? Sie haben fantastische Welten nur aus Teilen gebaut. Hoch skalierbare Systeme, die DDoS-Angriffen aller schwarzen Hüte standhalten, die der ehemalige sowjetische Block auf Sie werfen kann. Du bist ein Künstler und Silikon ist deine Leinwand. Sie haben Clean Code so oft gelesen, dass Sie es besser kennen als Ihr eigenes GitHub-Passwort.

"Ja!", Schreien Sie. "Ich werde unsere Codebasis nicht mit diesem Mist beschmutzen! Ich habe Monate damit verbracht, dieses Ding zu bauen! Jede einzelne Codezeile ist ein Produkt von meinem Schweiß und Blut! Der einzige Grund, warum irgendetwas überhaupt funktioniert, ist nicht wegen dir - es ist trotz dir! Es sind Leute wie ich, die diese Software am Laufen halten, und es sind Leute wie ich, die dieses Durcheinander beseitigen müssen, lange nachdem Sie und Ihre "Geschäftsfunktionen" verschwunden sind! "

Du stürmst da raus. Du brauchst einen Drink. Jungs wie dieser sind der Fluch unserer Branche. Sie glauben, dass ihre ausgefallenen MBAs ihnen einen Einblick in die Entwicklung großartiger Software geben, die wir Entwickler irgendwie übersehen haben. Scheiß auf alle.

Sie stolzieren in die Cafeteria. Der Ort, an dem Sie täglich Gourmetgerichte erhalten. Und Kaffee. Unbegrenzter, köstlicher Kaffee, der die Seele nährt. Sie haben das verdient, weil Sie ein Wissensarbeiter sind.

Sie schnappen sich eine Tasse Java und suchen sich einen Platz zum Sitzen.

Dann bemerkst du ihn.

Der leitende Ingenieur in Ihrem Unternehmen.

Dieser Typ ist ein eingefleischter Hardcore-Ingenieur, der einen Compiler auf meiner Toilettenpause schreiben kann. Er war ein Hacker, bevor es Hacker gab. Du willst dieser Typ sein. Er ist ein bisschen wie Gandalf. Von allen gleichzeitig respektiert und gefürchtet. Aber er ist nett und hilft immer den Kindern. Er würde gerne hören, wie Sie diese PM an seine Stelle setzen. Immerhin ist er einer Ihrer Leute.

Also setzt du dich neben ihn. Er trinkt gerade Kaffee und liest etwas über abstrakte Datentypen in Haskell.

Jep. Nur der Typ, mit dem man reden kann.

Du erzählst ihm deine große Geschichte. Er hört geduldig zu. Er nickt und stellt an mehreren Stellen Fragen. Seine Körpersprache ist entspannt. Er war schon mal hier. Sie können es in seinen Augen sehen.

Sie sind endlich fertig.

Das war anstrengend

Ihre Schultern fühlen sich leichter an.

Er sieht nachdenklich aus, als würde er seine Worte sorgfältig auswählen.

Du wartest auf das große Lachen. Er ruft "Das ist mein Junge!" Und dann trinkst du noch einen Kaffee zusammen. Er wird Sie mit einer Geschichte über einen ähnlichen Schlag verwöhnen, den er früher bei einer ahnungslosen PM veröffentlicht hat.

Du hast von diesem Tag geträumt. Sie werden Ihre Kaffeetassen wie Männer zusammenschlagen, nachdem Sie im Kampf gewonnen haben. Zumindest machen sie das in den Filmen. Natürlich ist es dann normalerweise Bier, kein Kaffee.

Es ist jedoch die Stimmung, die zählt.

Sie warten…

Und noch etwas warten ...

Er sieht dir direkt in die Augen. Sie durchbohren deine Seele. In all den Jahren, in denen er mit Maschinen gerungen hat, ist sein Blick stark geworden. Aber er besitzt eine bezaubernde Kraft. Sie können nicht wegsehen.

Er sagt nur eins.

„Unsere Aufgabe ist es, keinen Kaffee zu trinken und Code auszuspielen. Unsere Aufgabe ist es, Software zu entwickeln, die funktioniert. “

Dann geht er weg.

Du nimmst dir eine Minute. Es ist ein Gefühl in der Magengrube. Eine leere, abscheuliche Empfindung. Sie fangen an, diese Empfindung zu erkennen. Du schämst dich.

Sie haben die Leute enttäuscht, die Sie am meisten schulden. Ihre Kunden.

Also gehst du zurück zu deinem Schreibtisch. Du hast den Hack rausgeschmissen und dann eine neue Veröffentlichung herausgebracht.

Sie entschuldigen sich bei der PM. Die Dinge sind ein wenig außer Kontrolle geraten. Er sagt, es ist okay. Ende gut, alles gut.

Sie geben auch die Bibliothek auf, implementieren das richtige Update und senden eine vorgelagerte PR. Wenn die neue Version der lib die richtige Lösung herausbringt, können Sie jederzeit umgestalten.

Wenn Ihnen das gefallen hat, klicken Sie unten auf . Ich bemerke jeden einzelnen und bin für jeden dankbar.

Wenn Sie mehr über das Programmieren nachdenken möchten, folgen Sie mir, damit Sie benachrichtigt werden, wenn ich neue Beiträge verfasse.