Gewinnen ist nicht möglich. Sie entscheiden nur, wie schnell Sie verlieren möchtenWas ist der nächste Schritt?Viele Leute mögen Tetris, ich auch. Ich erinnere mich, dass ich meinen Freund zum ersten Mal auf dem Nintendo Game Boy gespielt habe. Vielleicht steckt diese Melodie auch in deinem Kopf. Tetris ist nicht nur eines der besten Spiele aller Zeiten, sondern auch eine großartige Analogie für technische Schulden. Es bietet ein allgemeines Verständnis der technischen Verschuldung und ihrer Auswirkungen.
Ich erzähle Ihnen eine Geschichte aus persönlicher Erfahrung, wie mein Team seine technischen Schulden in einer Art Abrechnungscode reduziert und gleichzeitig den
Fehler um eine Million Dollar pro Jahr korrigiert hat.
Zunächst sind die Aufgaben bei geringem Schwierigkeitsgrad einfacherIn Softwareunternehmen bestimmen Produkt- / Projektmanager zusammen mit Entwicklern, welcher Code in der nächsten Version geschrieben und an Kunden gesendet wird.
Das Vervollständigen einer Zeile in Tetris ist wie das Freigeben einer Funktion.Komplexe Funktionen sind vollständig realisierbar, ohne dass die technische Verschuldung steigt.Das Ausgeben einer
komplexen Funktion erfordert das Ausfüllen
mehrerer Zeilen .
Geschäftsanforderungen (neue Funktionen, neue Produkte) führen häufig zu Kompromissen im Code (Hacks, Problemumgehungen), um die Frist nicht zu überschreiten. Oder Änderungen in der Produktstrategie sind nicht mit dem vorherigen Design kompatibel und erfordern zusätzliche Anstrengungen, um Kunden zu migrieren oder sowohl die "neue" als auch die "alte" Logik zu unterstützen.
Kleine technische Schulden sind normal und überschaubar.Solche Szenarien verursachen technische Schulden innerhalb des Codes.
Ein versteckter Pass in Tetris ist eine technische Pflicht.Jeder Code hat eine technische Pflicht. Es ist in Ordnung. Sie können mit ein paar Pässen weiter spielen.
In technischen Schulden begrabenZu viele technische Schulden lassen keine angemessene Zeit, um eine neue Funktion freizugeben oder einen Fehler zu beheben.
Dieses Problem kann nicht gelöst werden, indem neue Entwickler hinzugefügt oder bestehende ersetzt werden. Dies nennt man technische
Schulden : Irgendwann muss sie bezahlt werden.
Die Tilgung Ihrer technischen Schulden macht Sie wettbewerbsfähig. Es hält dich im Spiel.Spiel vorbeiWie bei der Unternehmensführung nimmt auch bei Tetris die Komplexität mit der Zeit zu. Formen bewegen sich schneller und sind schwerer zu halten.
Wie im Geschäftsleben ist es hier unmöglich zu gewinnen. Es gibt keine echte Ziellinie. Die Frage ist nur, wie schnell Sie verlieren werden.
Wie im Geschäftsleben führen zu viele Lücken in Tetris zu einem Verlust.
Millionen-Dollar-Fehler
Vor nicht allzu langer Zeit wurde mein Team angewiesen, die Abrechnungs- / Rechnungslogik in unserem Produktcode zu aktualisieren, um neue Preispläne und einen neuen Zahlungsabwickler zu unterstützen und den gesamten Abrechnungsprozess insgesamt zu verbessern. Einige Details wurden noch geklärt, daher haben wir diese Zeit genutzt, um tief in den vorhandenen Code einzutauchen und genauere Schätzungen der bevorstehenden Änderungen zu erhalten.
Die Hauptaufgabe dieses Codes bestand darin, die Konten aller Kunden zu durchsuchen, jeden einzelnen zu berechnen und Informationen zur Rechnungsstellung an die API zu senden. Das System wurde mit großer Sorgfalt und guten Absichten geschrieben - nicht so schlampig wie unflexibel.
Monolithische Funktion. Keine Tests. Sehr wenige Protokolle. Es gab praktisch keine Dokumentation. Es gab eine unerklärliche Randomisierung. Einer der Gründer hat das System vor mehr als fünf Jahren geschrieben. Die einzigen Änderungen seitdem wurden von einem der ersten Mitarbeiter vorgenommen, der bereits im Unternehmen abwesend war.
Gab es überhaupt ein Problem? Rechnungen wurden in Rechnung gestellt. Das Unternehmen hat Geld verdient. Es gab keine Anzeichen für ein Problem. All dies sprach gegen Refactoring, aber wir wussten, dass große Änderungen kommen würden: Diese Funktion konnte nicht für unsere Bedürfnisse skaliert werden, und es wäre viel einfacher, weiterzumachen, wenn wir diesen Teil vereinfachen würden.
In einem Sprint haben wir die Funktion neu gestaltet und einige dringend benötigte Protokolle hinzugefügt. Zu diesem Zeitpunkt stellten wir fest, dass wir das Problem tatsächlich behoben hatten. Einer der Buchhalter blieb an unseren Schreibtischen stehen und fragte, warum die Anzahl der ausgehenden Rechnungen unerwartet gestiegen sei. Der alte Code fiel leise auf den Timer - und einige Clients wurden nicht verarbeitet. Seltsame Randomisierung? Sie versteckte alle Modelle, die deutlich machen könnten, dass einem Kunden keine Rechnung ausgestellt wurde. Bei der Bewertung haben wir die fehlenden Rechnungen um mehr als 1 Million US-Dollar pro Jahr berechnet.
Auszahlung zahlt sich nicht immer aus
Obwohl die Geschichte völlig richtig ist, hat die Tilgung technischer Schulden nicht immer einen so dramatischen Effekt. Wir haben Glück.
Finden Sie das richtige Gleichgewicht zwischen technischen SchuldenIch würde gerne kluge Ratschläge geben, wenn Sie technische Schulden abbezahlen müssen. Leider ist die Antwort, dass es schwierig ist - und
es kommt immer auf das Gleichgewicht an . Sie haben möglicherweise den saubersten und am besten getesteten Code der Welt, aber keine Clients. Und umgekehrt kann Ihr Unternehmen mit wirklich schmutzigem Code arbeiten, der den Kunden gefällt, und das Geld fließt wie ein Fluss.
Ich kann nur sagen, dass sowohl Produktbesitzer als auch Entwickler das Wesen der technischen Verschuldung verstehen müssen und dass dies nicht für immer vermieden werden kann. Am Ende kann man hier wie in Tetris nie gewinnen.