Einfache Gründe für die Unvermeidlichkeit der technischen Verschuldung

Bild


Haben Sie jemals von einem Software-Entwicklungsteam gehört, das sich keiner technischen Verschuldung stellen müsste?


Ich auch nicht. Außerdem:


Ingenieure verbringen etwa ein Drittel ihrer Zeit mit technischen Schulden, was die Moral der Teams mindert und die Unternehmen jährlich etwa 85 Milliarden Dollar kostet.

Study Stripe

Denken Sie einfach darüber nach. Das sind 85 Milliarden Dollar.


Ein Drittel der Zeit, die Entwickler für technische Schulden aufwenden. Das erfüllt Entwickler mit Entsetzen. Dies ist in der Tat der schlimmste Teil ihrer Arbeit - und die Tatsache, dass der Rest des Unternehmens sich oft nicht in sie hineinversetzt, verstärkt das Feuer. Es ist niemand schuld, aber die technische Verschuldung wird allgemein unterschätzt. Aufgrund dessen werden Softwareunternehmen langsam steif, bis sie die Fähigkeit verlieren zu wachsen, was nicht Monate und Jahre erfordert, um ihre Anwendungen von Grund auf neu zu schreiben ... und eine solche Zeit auf dem Markt ist heute eine Ewigkeit.


Technische Schulden sind ein alltägliches Phänomen, oder? Wir fangen an, Code zu schreiben, technische Schulden entstehen und der Boom wird plötzlich zu viel. Unsere Codebasis steckt darin und wir geraten in technische Insolvenz. Deshalb kämpfen wir mit ihm. Wir ertragen schmerzliche Not und zahlen einen Teil der Schulden. Manchmal schaffen wir es, manchmal nicht. Dies ist die Essenz der Softwareentwicklung. Also haben wir alles arrangiert.


Aber sollte es so sein? Gibt es grundlegende Gesetze der Softwareentwicklung, die dafür verantwortlich sind? Und wenn ja, können wir diese Gesetze zu unserem eigenen Vorteil anwenden? Technische Schulden sind keine Seltenheit, sollten aber keine technische Insolvenz sein.


Wenden wir uns für einige Tipps verschiedenen Wissenschaftsgebieten zu, denn die Gesetze der Thermodynamik können uns wichtige Ideen für das Verständnis liefern, warum technische Schulden unvermeidlich sind.


Makrotrends machen technische Schulden unvermeidlich


Der erste Hauptsatz der Thermodynamik


Auch als Energieerhaltungssatz bekannt ; behauptet:


Die Gesamtenergie des geschlossenen Systems bleibt konstant; Sie sagen, dass es im Laufe der Zeit anhält.

Mit anderen Worten, Energie kann nicht erzeugt oder zerstört werden, sie kann jedoch von einer Form in eine andere übertragen werden.


Stellen wir uns unsere Codebasis ohne unnötige Schwierigkeiten als ein geschlossenes System vor . Wir verwerfen externe Abhängigkeiten und alles, was sich außerhalb unserer Codebasis befindet. Unter diesen Bedingungen gibt es eine unveränderte Anzahl von Entwicklern, die die Entwicklung von Features mit konstant hohem Tempo vorantreiben - der Entropiebetrag (ein Maß für Unordnung und Zufälligkeit im System ) in unserer Codebasis bleibt konstant.


Unsere Entwickler können nicht in einer Nacht zu Supermännern werden, daher können wir ihre Effektivität nicht steigern, wenn sie bereits das Beste geben. Wir können jedoch mehr Entwickler einstellen, was die Energie in unserem System erhöht. Deshalb gilt das Brookssche Gesetz : "Wenn ein Projekt die Fristen nicht einhält, wird es durch das Hinzufügen von mehr Arbeitskräften noch mehr verzögert."


Schnell wachsende Softwareunternehmen haben ständig mit dieser Macht zu kämpfen. Sie tätigen eine Investitionsrunde, verdoppeln die Größe des Entwicklungsteams, so schnell der Arbeitsmarkt dies zulässt, und müssen sich dann mit einem großen Energiesprung in ihrer Codebasis auseinandersetzen. Dies übersteigt häufig die Fähigkeiten des Unternehmens und kann zu einem starken Anstieg der technischen Schulden führen, wenn keine dringenden Gegenmaßnahmen ergriffen werden.


Aber warte einen Moment. Warum führt dies zu einem Anstieg der technischen Schulden?


Der zweite Hauptsatz der Thermodynamik


Die Unordnung in einem geschlossenen System kann nicht abnehmen. es kann nur unverändert bleiben oder zunehmen.

In der Tat geraten geschlossene Systeme auf natürliche Weise in einen Zustand größerer Unordnung. Diese „Störung“ - die wir über „Energie“ oder „Chaos“ bezeichnet haben - nennt man Entropie. Ivar Jacobson und seine Kollegen untersuchten das Phänomen der Entropie in Codebasen und führten den Begriff Entropie von Software ein . Wenn Sie Änderungen an der Codebasis vornehmen, nimmt deren Entropie zu. Dieses wachsende Chaos ist die Ursache für technische Schulden.


Bild


Zurück zu unserem schnell wachsenden Software-Unternehmen, dessen Kundenbasis weiter wächst und dessen Markt wächst. Das wachsende Entwicklungsteam bietet Tag und Nacht Funktionen, um mit dem Wachstum Schritt zu halten. Wenn Sie nichts tun, wird die Codebasis nur verwirrender. Der Druck steigt.


Ich betrachte technische Schulden als Entropie in der Codebasis. Ich glaube nicht, dass er jemals verschwinden wird, der Kampf mit ihm wird beständig sein.

Ron Pragides , Vice President of Engineering bei Carta

Bei der Planung jedes Sprints steht unser Unternehmen vor der Wahl: Gibt es etwas, das Sie tun müssen, um die wachsende Komplexität einzudämmen, oder ist es die Zeit wert, neue Funktionen zu entwickeln und bereitzustellen?


Der dritte und letzte Hauptsatz der Thermodynamik verdeutlicht, warum dieses Dilemma nicht einmal dem wahren Zustand der Dinge entspricht.


Dritter Hauptsatz der Thermodynamik


Die Entropie des Systems erreicht einen konstanten Wert, wenn die Temperatur absolut Null ist.

Es klingt kompliziert, ist aber in Wirklichkeit im Wesentlichen recht einfach, und obwohl die Gesetze der Thermodynamik weitreichende (und manchmal einfach überwältigende) Konsequenzen haben, sind ihre Grundlagen leicht zu verstehen. Wenn zum Beispiel Wasser die Form von Dampf annimmt, sind seine Moleküle „frei“, um sich völlig chaotisch zu bewegen. Entropie ist überall. Wenn das Wasser jedoch gefriert, werden seine Moleküle „eingeschlossen“ und bleiben an Ort und Stelle (mehr oder weniger). Die Entropie nimmt ab und erreicht einen konstanten Wert.


Was können wir also tun, um die Software-Entropie zu steuern?


Nun, wir könnten aufhören, neuen Code zu entwickeln. Aus diesem Grund möchten einige Teams den Code „einfrieren“, um ihr System vor der Freigabe an Kunden gründlich zu testen. Wenn sich die Codebasis nicht mehr ändert, steigt die Entropie nicht an, das Chaos auch, es gibt keine unvorhergesehenen Folgen mehr und die technische Verschuldung steigt nicht.


Es ist jedoch unmöglich, den Code für immer eingefroren zu halten - wir benötigen neue Funktionen. Die einzige Option, die uns bleibt, ist die Umgestaltung.


Der Code-Refactoring-Prozess kann beim Auslaufen der Software-Entropie hilfreich sein.
Wikipedia

Eine kostenlose Erweiterung für VSCode, die Ihnen dabei hilft . Fangen Sie jetzt an, bevor die Dinge außer Kontrolle geraten!


Die Reduzierung der Software-Entropie ist nicht einfach


So weit so gut. In der Tat sieht das alles wie eine Aussage des Offensichtlichen aus; Wer etwas über Softwareentwicklung gehört hat, kennt das zumindest intuitiv.


Warum überrascht uns die technische Verschuldung immer noch?


Dies liegt daran, dass wir, obwohl wir wissen, dass Code umgestaltet werden muss, um Verwirrung zu vermeiden, immer noch unzählige andere Kräfte über uns herrschen, die uns daran hindern, die Zeit und die Ressourcen zuzuweisen, die erforderlich sind, um das Refactoring korrekt und oft genug durchzuführen. Dies bedeutet, dass sowohl in unserer als auch in allen anderen Codebasen die Entropie von Software ständig wächst.


Wir alle kennen Moores Gesetz, aber denken Sie an die Version von Bill Gates Wirths Gesetz :


Die Geschwindigkeit der Software verringert sich alle anderthalb Jahre um die Hälfte.
Bill Gates

Ich bin überzeugt, dass die wachsende Entropie unserer Codebasen die Hauptantriebskraft für dieses Muster ist.


Die Wachstumsrate der Software-Entropie steht in direktem Zusammenhang mit der Wachstumsrate von Faktoren wie Technologie, Softwaremärkten, Softwarefirmen und der Fähigkeit, Code zu schreiben - und jeder von ihnen wächst verdammt schnell.



Quelle: Die aufstrebende Zukunft


Stellen Sie sich den Druck vor, den diese Erwartungen auf Softwareentwicklungsteams ausüben. Dies sind ernsthafte globale Trends, und sie können von einer relativ kleinen Gruppe von Menschen als erdrückend empfunden werden. Es ist fast so, als müssten sie die Schwerkraft überwinden, abheben und mit den Armen winken.


Reales Filmmaterial eines Entwicklerteams im Kampf gegen technische Schulden
Reales Filmmaterial eines Entwicklerteams im Kampf gegen technische Schulden


Im nächsten Artikel werden wir uns mit Mikrotrends befassen, die uns ständig zum technischen Bankrott zwingen, sowie mit der Frage, wie schnell wachsende Softwareunternehmen gegen sie vorgehen können. Bleib bei uns!

Source: https://habr.com/ru/post/de480772/


All Articles