JavaRush /Java-Blog /Random-DE /Schlechtes Karma beim Programmieren. Was sind technische ...

Schlechtes Karma beim Programmieren. Was sind technische Schulden und wie kann man sie beheben?

Veröffentlicht in der Gruppe Random-DE
Schlechtes Karma beim Programmieren.  Was sind technische Schulden und wie kann man sie beseitigen? 1Technische Schulden. Die meisten Programmierer, die in ihrem Fachgebiet aktiv sind, müssen sich mit diesem Begriff auseinandersetzen. Bei vielen kann die Erwähnung davon sogar zu Kopfschmerzen und Beschwerden in anderen Körperteilen führen, die immer dann auftreten, wenn man sich bei der Arbeit an einem Projekt mit technischen Schulden auseinandersetzt. Schlechtes Karma beim Programmieren.  Was sind technische Schulden und wie kann man sie beseitigen – 2Deshalb sprechen wir heute über technische Schulden (TD): Was sie sind, wie sie aussehen, welche Arten von technischen Schulden es gibt und wie man sie effektiv verwaltet.

Was sind technische Schulden?

Lassen Sie uns jedoch zunächst die Terminologie verstehen. Technische Schulden sind eine Software-Engineering-Metapher für Probleme, die sich im Softwarecode oder in der Architektur aufgrund der Vernachlässigung der Qualität bei der Softwareentwicklung ansammeln und in der Zukunft zusätzliche Arbeitskosten verursachen. Dies ist die Definition von technischer Verschuldung nach Wikipedia. Vereinfacht ausgedrückt sind technische Schulden das Ergebnis der Anwendung vereinfachter und kurzfristiger Lösungen in der Entwicklung, die später zu immer höheren Geld- und Zeitkosten für die anschließende Verfeinerung führen (es sei denn natürlich, die Schulden werden „zurückgezahlt“). den Code umschreiben oder das Produkt in seiner bestehenden Form beibehalten. In der Welt gewöhnlicher Programmierer sind technische Schulden eine der Arten von negativem Karma, ein Demotivator und eine Quelle der Traurigkeit, die als Vergeltung für schlechten Code, die Verwendung von Krücken und „vorübergehende“ (aber eigentlich nicht sehr) Lösungen entstehen Helfen Sie dabei, kurzfristige Probleme zu lösen und die Entwicklung „auf Kredit“ zu beschleunigen, das heißt auf Kosten eines wachsenden Gewirrs von Problemen in der Zukunft. In der IT-Branche sind technische Schulden ein ziemlich ernstes Problem. Laut einer aktuellen Studie geben Unternehmen auf der ganzen Welt jährlich mehr als 85 Milliarden US-Dollar allein für die Behebung fehlerhaften Codes aus. Insgesamt werden jährlich etwa 300 Milliarden US-Dollar für Projekte zur Unterstützung veralteter Systeme und „schlechter“ Software ausgegeben. Das sind bedeutende Zahlen. Forscher schätzen, dass, wenn die Bemühungen aller Entwickler, die mit technischen Schulden und ihren Folgen arbeiten, sich wieder auf die „richtige“ Entwicklung konzentrieren würden, dies im Laufe des laufenden Jahrzehnts zu einer Steigerung des globalen BIP um etwa 3 Billionen US-Dollar führen würde.

Gründe für das Erscheinen

Man sollte sich darüber im Klaren sein, dass technische Schulden nicht immer eine schlechte Sache sind, genauso wie es positiv sein kann, sich finanziell zu verschulden, wenn man beispielsweise einen Kredit aufnimmt, um ein Unternehmen aufzubauen (oder ein Startup zu gründen ). Im Fall von TD ist dies für schnell wachsende Unternehmen akzeptabel, die schnell und häufig neue Produkte oder Dienstleistungen auf den Markt bringen müssen, um ihren Erfolg zu bewerten und Marktbedürfnisse zu untersuchen oder beispielsweise schnell neue Nischen zu erobern. Aber wie bei finanziellen Schulden muss man auch bei technischen Schulden vorsichtig sein und wissen, wie man damit umgeht, sonst kann es zu ernsthaften Problemen kommen. Je mehr technische Schulden sich während der Entwicklung eines Softwareprodukts ansammeln, desto stärker kann sich dies auf das Unternehmen auswirken, da sich die Veröffentlichung neuer Versionen verlangsamt, die Arbeitsmoral gewöhnlicher Programmierer, die für die „Aufrechterhaltung“ dieser Schulden verantwortlich sind, sinkt und die Kosten steigen , was letztendlich sogar zur Zerstörung des Unternehmens führen kann. Die Gründe für das Auftreten technischer Schulden sind neben dem hehren Wunsch, das Produkt so schnell wie möglich fertigzustellen oder die Benutzer mit einer neuen Version zufrieden zu stellen, häufig schlechtes Produktmanagement, unrealistische Fristen oder Ressourcenbeschränkungen und natürlich die Faulheit des Programmierers Gepaart mit geringer Qualifikation und einem mangelnden Verständnis wichtiger Entwicklungsprinzipien tragen sie häufig ebenfalls zum Schuldenanstieg bei. Es kommt oft vor, dass sich die Entwickler selbst der Existenz und des ständigen Wachstums technischer Schulden bewusst sind, aber nicht über die Macht verfügen, diese zu ändern, oder dem Management keine Informationen über die Existenz eines solchen Problems und die Bedeutung seiner Lösung übermitteln können. Schlechtes Karma beim Programmieren.  Was sind technische Schulden und wie kann man sie beseitigen – 3

Einstufung

Wie oben erwähnt, gibt es technische Schulden in vielen verschiedenen Formen, und da die Definition selbst nur eine Metapher ist, können die verschiedenen Arten technischer Schulden auf unterschiedliche Weise klassifiziert werden. Insbesondere Dag Liodden, Mitbegründer und CTO von Tapad, der als einer der weltweiten Experten für technische Schulden gilt, schlug während einer Rede auf dem jährlichen CTO Summit vor, technische Schulden in drei Haupttypen zu unterteilen.
  1. Absichtliche technische Schulden.

    Es tritt in Fällen auf, in denen Entwickler bewusst nicht die beste Lösung wählen, weil diese einfacher und schneller zu implementieren ist, was wiederum dazu beiträgt, ein neues Produkt schnell auf den Markt zu bringen.

    „Manchmal nehmen wir bewusst technische Schulden auf, um die Entwicklungszeit zu verkürzen. Wenn Sie sich für diesen Weg entscheiden, bedenken Sie nicht nur die Zeitersparnis bei der Entwicklung, sondern auch die Zeit, die Sie später für die „Abzahlung“ dieser Schulden aufwenden müssen. Stellen Sie außerdem sicher, dass sich die Stakeholder [das oberste Management des Unternehmens] darüber im Klaren sind, dass eine solche Entscheidung die Einführung anderer Funktionen in der Zukunft unweigerlich verlangsamen wird“, sagte Dag Ljodden.

    Ein Ansatz zur Lösung dieser Art von technischen Schulden

    Der Experte empfiehlt, solche Fälle sorgfältig zu dokumentieren, um auf sie zurückzukommen und sie zu korrigieren, bevor diese technischen Schulden verloren gehen und zu einem integralen Bestandteil der Projektstruktur werden.

  2. Technische Schulden, die zufällig sind oder aus einer veralteten Projektarchitektur resultieren.

    Außerdem entstehen im Laufe der Zeit häufig technische Schulden aufgrund von Fehlern und Mängeln in der Phase der Erstellung der Projektarchitektur. Wenn sich Systeme weiterentwickeln und sich Softwareanforderungen ändern, werden Entwurfsfehler immer offensichtlicher und das Hinzufügen neuer Funktionen erfordert mehr Zeit und Aufwand. Dabei spielt die Qualität der anfänglichen Projektarchitektur eine wichtige Rolle – sie sollte sowohl einfach als auch funktional sein, dann lässt sie sich leichter an Änderungen anpassen.

    Ein Ansatz zur Lösung dieser Art von technischen Schulden

    Um zu verhindern, dass sich diese Art von technischer Verschuldung ansammelt und kritische Werte nicht überschreitet, empfiehlt Dag Llodden eine regelmäßige Umgestaltung – etwa alle zwei Jahre in Zeiten, in denen sich das System in einem stabilen Zustand befindet. Teamleiter und Produktmanager müssen Zeit einplanen, um diese Art von technischen Schulden, die aufgrund der Architektur und sich häufig ändernden Anforderungen für das Projekt entstehen, „zu begleichen“.

  3. Technische Schulden, die im Laufe der Zeit entstehen.

    Der Experte nennt solche technischen Schulden „langfristig verfaulend“. Es sammelt sich im Laufe der Zeit an, wenn eine Komponente oder ein System durch ständig neue Änderungen immer komplexer wird. Dies wird oft noch verschärft, wenn verschiedene Personen in unterschiedlichen Phasen am System arbeiten und die ursprüngliche Architektur nicht vollständig verstehen.

    Ein Ansatz zur Lösung dieser Art von technischen Schulden

    Dies sei die einzige der drei Arten technischer Schulden, die man durch regelmäßiges Refactoring dauerhaft vermeiden sollte, sagt der Experte. Im Idealfall sollte sich ein Entwicklungsteam die Zeit nehmen, die Architektur des Systems, an dem es arbeitet, gründlich zu verstehen, auch wenn es ursprünglich von anderen Personen erstellt wurde. Wenn Sie das System verstehen, können Sie fehlerhaften Code schrittweise verbessern und korrigieren, ohne dass das Projekt in die Phase des „Verrottens“ gerät.

Schlechtes Karma beim Programmieren.  Was sind technische Schulden und wie kann man sie beseitigen – 4

Technische Lösungen für das Schuldenmanagement

Es gibt viele Möglichkeiten, technische Schulden effektiv zu verwalten, aber alle Experten sind sich einig, dass dies getan werden muss, da technische Schulden ein integraler Bestandteil fast jeder Entwicklung sind und Unternehmen, die sie ignorieren, in späteren Phasen unweigerlich mit Problemen konfrontiert werden. Hier finden Sie einige effektive Lösungen und Ansätze zur Verwaltung der technischen Schulden eines Entwicklungsteams.
  1. Wenden Sie einen festen Prozentsatz Ihrer Arbeitszeit für die Bearbeitung technischer Schulden an.

    Die Sache mit technischen Schulden ist, dass man nie Zeit hat, an deren Beseitigung zu arbeiten (weil es immer Aufgaben mit höherer Priorität gibt), es sei denn, man tut dies gezielt. Daher wäre es eine gute Lösung, einen bestimmten festen Prozentsatz der Arbeitszeit für diese Zwecke bereitzustellen – etwa 20–25 %.

    Dies kann auf unterschiedliche Weise erfolgen.

  2. Arbeiten Sie an einem Tag pro Woche an technischen Schulden

    Если выделять на работу над устранением ТД всей командой один день в неделю, это Wie раз будет около 20% от общего рабочего времени. Для некоторых команд такой подход работает просто отлично и, говорят, даже повышает мораль, ведь в этот конкретный день недели вся команда занимается решением проблем, которые достают их все остальное время разработки.

  3. Посвящать работе над ТД каждую четвертую задачу

    Такая система подходит тем командам, которые склонны разделять работу над проектом на примерно равномерные по времени и усoderям для их выполнения задачи. Если один из каждых четырех тасков посвящать “выплате” ТД, это будет занимать около четверти всего времени разработки. А введение такого подхода в качестве правила позволит убедиться, что Codeеры не будут откладывать технический долг “на потом”.

  4. Переходящая роль

    Еще одним подходом к проблеме устранения технического долга будет назначать на данную задачу разных членов команды поочередно, чтобы равномерно распределить эту порой далеко не самую приятную работу среди членов коллектива. Количество разработчиков, назначенных заниматься “разгребанием” ТД, может быть разным — для команды из 4-5 человек будет достаточно одного, тогда Wie коллективы побольше могут назначать двух-трех. Но суть остается прежней — на работу над ТД должно уходить около 20-25% всех ресурсов и человеко-часов.

  5. Правило бойскаутов.

    Правило бойскаутов состоит в том, чтобы всегда оставлять туристический лагерь (стоянку для палаток) в лучшем состоянии, чем он был до их прихода, то есть убирать даже тот мусор, который был оставлен не ими. Этот принцип, Wie выяснoder заокеанские Codeеры, отлично подходит и для управления техническим долгом. Согласно данному правилу, все члены команды должны заниматься исправлением ТД каждый раз, когда сталкиваются с ним в том oder ином виде. Конечно, это правило нужно применять разумно, чтобы время, которое уходит на исправление ТД, не превышало “разумные” 25-30% от общих временных ресурсов.

  6. Приоритизация “дорогого” технического долга

    Также эксперты в массе своей рекомендуют не забывать о том, что технический долг может различаться в том числе и по важности. Далеко не каждый тип ТД требует немедленного устранения, поэтому важно работать над классификацией разных видов технического долга и приоритезацией работы с ними соответственно. Проще говоря, прежде всего закрывать надо те долги, которые оказывают прямое влияние на Geschwindigkeit разработки продукта, будучи частью его базовой архитектуры. Такие долги являются самыми опасными, потому что ведут к появлению новых долгов, которые могут расти Wie снежный ком.

Заключение

Abschließend möchte ich noch einmal betonen, dass auf technische Schulden in der Softwareentwicklung nicht verzichtet werden kann, da diese ein integraler Bestandteil der Entwicklung als solche sind. Trotz seiner technischen Natur stellt TD immer noch ein Problem dar, das durch den menschlichen Faktor in der Entwicklung verursacht wird. Und auch wenn Sie nicht ganz darauf verzichten können, lässt sich die technische Verschuldung weitestgehend reduzieren, wenn Sie „sauberen“ Code schreiben und den Entwicklungsprozess möglichst verantwortungsvoll und professionell angehen. Das wünschen wir allen!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION