Sie beziehen sich auf technische Schulden .
Wir alle haben technische Schulden in den Produkten, die wir im Laufe der Zeit entwickeln. Refactoring ist eine der weit verbreiteten und wirksamen Möglichkeiten, um diese technischen Schulden zu reduzieren, obwohl viele Unternehmen ihre technischen Schulden nie abbezahlen. Diese Unternehmen neigen dazu, ihre Software in den kommenden Jahren als äußerst instabil zu empfinden, und die technischen Schulden werden so grausam, dass Sie sie nicht schrittweise abbezahlen können, da es zu lange dauern würde, sie auf diese Weise abzuzahlen.
Technische Schulden haben die Bezeichnung, weil sie dem gleichen Schuldenverhalten folgen. Sie erhalten die Schulden, und solange Sie weiterhin Geld ausgeben (Funktionen erstellen) und diese Schulden nicht abbezahlen, wird sie nur wachsen. Ähnlich wie bei Schulden kommt man bei zu großen Schulden an Punkte, an denen man sie möglicherweise vollständig mit gefährlichen Aufgaben wie vollständigen Umschreibungen löschen möchte. Ebenso wie die reale Verschuldung beeinträchtigt sie, da sie zu einem bestimmten Zeitpunkt anfällt, Ihre Fähigkeit, insgesamt Geld auszugeben (Features zu erstellen).
Nur um einen anderen Begriff in die Mischung zu werfen, bezieht sich Kohäsion darauf, wie gut ein System, Mikro auf den Linienpegel oder Makro auf den Systempegel, zusammenpasst. Bei einem System mit hohem Zusammenhalt passen alle Teile sehr gut zusammen und sehen so aus, als hätte ein Ingenieur alles geschrieben. Ihre obige Bezugnahme auf jemanden, der nur seinen Code ans Ende klebt, würde den Zusammenhalt dieses Systems verletzen.
Technische Schulden verwalten
Es gibt viele Möglichkeiten, technische Schulden zu verwalten. Wie bei echten Schulden ist es jedoch am besten, diese häufig zurückzuzahlen. Leider ist es wie bei einer echten Verschuldung gelegentlich besser, kurzfristig mehr zu erwirtschaften, wenn beispielsweise die Markteinführungszeit für ein Feature Ihren Umsatz verdoppeln oder verdreifachen kann. Der knifflige Teil besteht darin, diese konkurrierenden Prioritäten abzuwägen und herauszufinden , wann sich der ROI der Schulden für das gegebene Feature nicht lohnt.
Manchmal lohnt es sich also, die Schulden für einen kurzen Zeitraum aufzubauen, aber das ist selten der Fall, und wie bei allen Schulden gilt: Je kürzer der Zeitraum, desto besser. Wenn Sie also (möglichst schnell ) technische Schulden angehäuft haben, müssen Sie diese zurückzahlen. Dies sind die gängigen Ansätze:
- Refactoring
- Auf diese Weise können Sie Code-Teile, die erst während oder nach Abschluss der Implementierung als fehlerhaft erkannt wurden, an die richtige Stelle verschieben (oder auch an eine korrektere Stelle).
- Umschreiben
- Das ist wie eine Insolvenz. Es wischt den Schiefer sauber, aber Sie beginnen mit nichts und haben jede Gelegenheit, die gleichen oder noch größere Fehler zu machen. Ein Ansatz mit hohem Risiko und hohem Ertrag für technische Schulden, aber manchmal ist dies Ihre einzige Option. Dies ist jedoch seltener der Fall, als viele Ihnen sagen werden.
- Architekturübersicht
- Dies ist eher ein aktiver Ansatz zur Tilgung technischer Schulden. Dies geschieht, indem jemand mit der Autorität über die technischen Details beauftragt wird, eine Implementierung unabhängig von Projektplänen und -zeitplänen anzuhalten, um sicherzustellen, dass weniger technische Schulden anfallen.
- Code einfrieren
- Das Einfrieren des Änderungscodes kann Ihnen Raum zum Atmen geben, in dem Ihre Schulden nicht steigen oder sinken. Dies gibt Ihnen Zeit, um Ihren Ansatz zur Reduzierung der technischen Schulden zu planen, in der Hoffnung, den höchsten ROI für Ihren Ansatz zu erzielen.
- Modularisierung
- Dies ist wie ein Tier-2-Ansatz, der nur verfügbar ist, wenn Sie entweder die Architekturübersicht verwenden, um bereits ein modulares System zu haben , oder Refactoring, um zu einem zu wechseln. Wenn Sie ein modulares System haben, können Sie Schulden in ganzen Teilen des Systems auf isolierte Weise abbezahlen. Auf diese Weise können Sie tun partielle Wieder schreibt, teilweise Refactoring sowie die Minimierung der Rate technischen Schulden entstanden sind, weil die Isolierung der Schulden hält nur in jenen Bereichen , in denen die Merkmale in ging, als um das System zu Spread gegenüber .
- Automatisierte Tests
- Automatisierte Tests können bei der Verwaltung Ihrer technischen Schulden hilfreich sein, da sie Ihnen helfen können, Problemstellen im System zu identifizieren, hoffentlich bevor die Schulden in diesen Bereichen sehr groß geworden sind, aber selbst dann, wenn sie Ingenieure auf diese gefährlichen Bereiche aufmerksam machen können vielleicht noch nicht realisiert. Sobald Sie automatisierte Tests haben, können Sie außerdem Dinge freier umgestalten, ohne sich Sorgen machen zu müssen, dass Sie zu viel kaputt machen. Nicht weil Entwickler nichts kaputt machen, sondern weil sie herausfinden, wann sie etwas kaputt machen. Wenn sie sich auf manuelle Tester in hoch verschuldeten Systemen verlassen, haben sie in der Regel eine schlechte Erfolgsbilanz bei der Suche nach Problemen.