<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Technische Schulden on Devcartes</title>
    <link>https://devcartes.de/tags/technische-schulden/</link>
    <description>Recent content in Technische Schulden on Devcartes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de</language>
    <lastBuildDate>Tue, 14 Apr 2026 00:00:00 +0100</lastBuildDate><atom:link href="https://devcartes.de/tags/technische-schulden/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Die moralische Dimension technischer Schulden</title>
      <link>https://devcartes.de/posts/tech-debt-ethics/</link>
      <pubDate>Tue, 14 Apr 2026 00:00:00 +0100</pubDate>
      
      <guid>https://devcartes.de/posts/tech-debt-ethics/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;Was sind technische Schulden
    &lt;div id=&#34;was-sind-technische-schulden&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#was-sind-technische-schulden&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;In meinem vorherigen Artikel zum Thema &lt;strong&gt;&lt;a href=&#34;https://devcartes.de/posts/tech-debts/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Technische Schulden&lt;/a&gt;&lt;/strong&gt; gehe detailliert darauf ein, was technische Schulden sind, wie sie entstehen, wie man sie erkennt und wie man sie verhindern bzw. verantwortungsvoll damit umgehen kann.&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Einstieg - Das Erbe der anderen
    &lt;div id=&#34;einstieg---das-erbe-der-anderen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#einstieg---das-erbe-der-anderen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Der erste Tag mit einer neuen Codebase ist immer ein bisschen wie das Auspacken einer Erbschaft.
Man weiß nicht genau, was einen erwartet, doch man hofft auf sauberen Code und gute Dokumentation.
Doch was man manchmal vorfindet ist das genaue Gegenteil.&lt;/p&gt;
&lt;p&gt;Nun zu einem realen Vorfall, wie ich ihn in meiner Zeit als Freiberuflicher Entwickler erlebt habe.&lt;/p&gt;
&lt;p&gt;Die erste Aufgabe klang simpel: einen bestehenden Bug fixen.&lt;/p&gt;
&lt;p&gt;Nachdem ich etwa vier Stunden gebraucht hatte, um das Projekt zu finden, denn es lag nicht auf dem firmeninternen Gitlab Server, sondern auf dem Rechner des ehemaligen Kollegen, öffnete ich die Datei, die ich für &amp;ldquo;zuständig&amp;rdquo; hielt.&lt;/p&gt;
&lt;p&gt;Was ich vorfand waren dreitausend Zeilen Code, kein Kommentar, keine Struktur, die diesen Namen verdient hätte.&lt;/p&gt;
&lt;p&gt;Stattdessen Methoden, die sich über Hunderte von Zeilen erstreckten und alles auf einmal taten:
Datenbankzugriffe, Businesslogik, UI-Rendering, irgendwo dazwischen ein paar Magic Numbers, die niemand mehr erklären konnte.&lt;/p&gt;
&lt;p&gt;Der eigentliche Bug war schnell behoben, doch ihn zu lokalisieren hat zwei Tage gedauert.&lt;/p&gt;
&lt;p&gt;Nachlässigkeit war der ausschlaggebende Punkt und nicht technische Komplexität.
Wegen einer Haltung, die ich später in diesem Projekt immer wieder antreffen würde:
Versionierung? Beiwerk. Formatierung? Beiwerk. Dokumentation? Beiwerk.&lt;/p&gt;
&lt;p&gt;Was dabei übersehen wurde?
Meine Zeit ist kein Beiwerk.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Technische Schulden neu definiert
    &lt;div id=&#34;technische-schulden-neu-definiert&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#technische-schulden-neu-definiert&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Der Begriff stammt von Ward Cunningham, einem der Mitautoren des Agilen Manifests.
Er prägte ihn in den frühen 1990ern und meinte damit ursprünglich etwas Pragmatisches: Manchmal ist es sinnvoll, eine nicht-optimale Lösung zu wählen, um schnell voranzukommen.
So wie man einen Kredit aufnimmt, um heute investieren zu können und den man morgen zurückzahlt.&lt;/p&gt;
&lt;p&gt;Der entscheidende Teil dieses Bildes wird heute gerne vergessen:&lt;br&gt;
&lt;strong&gt;Schulden müssen zurückgezahlt werden. Mit Zinsen.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wer einen Kredit aufnimmt und ihn ignoriert, hat in erster Linie ein Charakterproblem und erst dann entsteht auch ein Finanzproblem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dasselbe gilt für Code.&lt;/strong&gt;
Technische Schulden, die bewusst aufgenommen und dokumentiert werden, um später getilgt zu werden, sind ein legitimes Werkzeug und manchmal sogar unverzichtbar.&lt;br&gt;
Technische Schulden, die aus Bequemlichkeit entstehen, still wachsen und still weitergereicht werden, sind etwas ganz anderes.&lt;/p&gt;
&lt;p&gt;Und sie wachsen immer, das ist das Heimtückische an ihnen.&lt;/p&gt;
&lt;p&gt;Jede neue Funktion, die auf einem schlechten Fundament aufbaut, macht das Fundament instabiler.
Jede Abkürzung, die heute genommen wird, verengt den Korridor für morgen.
Was als kleine Unordnung beginnt, wird zum Monolith, den niemand mehr anfassen will – weil niemand mehr versteht, was passiert, wenn man es tut.
Der Zinseszins schlägt zu: Die Schulden wachsen nicht linear.
Sie wachsen exponentiell.&lt;/p&gt;
&lt;p&gt;Aber es gibt noch eine Dimension, die in dieser Finanzbuchhaltung fehlt.
In der realen Welt zahlt derjenige die Zinsen, der den Kredit aufgenommen hat.
Bei technischen Schulden zahlen oft andere: der Kollege, der den Code drei Jahre später debuggt.
Die Entwicklerin, die eine neue Funktion einbauen soll und erst mal Wochen damit verbringt zu verstehen, was überhaupt da ist.
Das Unternehmen, das Kunden verliert, weil ein System unter seiner eigenen Last zusammenbricht.&lt;/p&gt;
&lt;p&gt;Technische Schulden sind keine abstrakte Metrik in einem Qualitätsbericht.
Sie sind konkrete Lebenszeit – die von anderen Menschen. Zeit, die sie nicht wiederbekommen.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Die drei Verantwortlichkeiten
    &lt;div id=&#34;die-drei-verantwortlichkeiten&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#die-drei-verantwortlichkeiten&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Die, die nach dir kommen
    &lt;div id=&#34;die-die-nach-dir-kommen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#die-die-nach-dir-kommen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Stell dir vor, du ziehst in eine neue Wohnung.
Der Vormieter hat die Wände mit Löchern übersät, Kabel lose verlegt, einen Wasserschaden hinter dem Schrank versteckt und beim Auszug einfach zugemacht.
Du weißt nicht, was hinter den Wänden steckt, bis es tropft.&lt;/p&gt;
&lt;p&gt;Genau so fühlt es sich manchmal an, fremden Code zu erben.&lt;/p&gt;
&lt;p&gt;Das Schlimmste daran ist nicht die Arbeit, es ist die Erkenntnis, dass jemand das gewusst hat.
Dass jemand diese Entscheidungen getroffen, diese Abkürzungen genommen, diese Verwahrlosung hinterlassen hat – und dann gegangen ist.
Ohne ein Wort, ohne einen Kommentar, ohne den Mut, sich zu seinem eigenen Code zu bekennen.&lt;/p&gt;
&lt;p&gt;Hinter jedem chaotischen Repository steckt ein Mensch, der einen anderen Menschen um dessen Zeit gebracht hat.
Nicht mit Absicht, vielleicht.
Aber Fahrlässigkeit ist keine Entschuldigung – sie ist eine Entscheidung, die man nicht bewusst getroffen hat.&lt;/p&gt;
&lt;p&gt;Der Kollege, der heute deinen Murks debuggt, hat Familie, Hobbys, und allgemein Dinge, die er lieber täte, als in dreitausend Zeilen ungekennzeichnetem Code nach einer Race Condition zu suchen, die du vor drei Jahren eingebaut hast, weil du keine Zeit hattest, es richtig zu machen.
Diese Stunden bekommt er nicht wieder zurück, die Energie, die er in das Verstehen steckt, was eigentlich da ist, fehlt ihm für das, was sein sollte: neue Dinge bauen, Probleme lösen, wachsen, Innovation vorantreiben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Schlechter Code ist oft kein technisches Problem, sondern allzu häufig eine Geringschätzung der Zeit anderer.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Die, die deine Software benutzen
    &lt;div id=&#34;die-die-deine-software-benutzen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#die-die-deine-software-benutzen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Der Nutzer sieht keinen Code.
Er sieht ein Formular, das sich nicht abschicken lässt.
Eine App, die abstürzt.
Daten, die verloren gehen.
Eine Fehlermeldung, die er nicht versteht und die niemand vorgesehen hat zu erklären.&lt;/p&gt;
&lt;p&gt;Was er nicht sieht: dass sein Ärger, sein Datenverlust, seine Frustration die direkte Konsequenz einer Entscheidung ist, die jemand in einem Büro getroffen hat – still, unsichtbar, für ihn folgenlos.
Sicherheitslücken entstehen nicht aus dem Nichts.
Sie entstehen, wenn jemand entscheidet, dass Validierung heute keine Priorität hat.
Datenverlust passiert nicht einfach.
Er wird vorbereitet – durch Systeme, die niemand mehr versteht, und die deshalb niemand mehr zuverlässig warten kann.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Nutzer zahlt die Rechnung, ohne es zu wissen und ohne gefragt worden zu sein.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Das Unternehmen
    &lt;div id=&#34;das-unternehmen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#das-unternehmen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Hier wird es nüchterner – aber nicht weniger ernst.&lt;/p&gt;
&lt;p&gt;Technische Schulden sind ein wirtschaftliches Risiko, das in den meisten Roadmaps nicht auftaucht.
Jede neue Funktion, die auf maroden Fundamenten gebaut wird, kostet mehr als geplant – weil ein Teil des Aufwands immer darin besteht, das Bestehende nicht zum Einsturz zu bringen.
Wartung wird teurer.
Onboarding neuer Entwickler dauert länger.
Experimente, die Wettbewerber in zwei Wochen umsetzen, dauern sechs Monate – weil das System keinen Spielraum mehr hat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unternehmen, die Qualität systematisch als verzichtbar behandeln, kaufen sich kurzfristig Geschwindigkeit und bezahlen sie langfristig mit Handlungsunfähigkeit.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Das unbequeme Geständnis
    &lt;div id=&#34;das-unbequeme-geständnis&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#das-unbequeme-gest%c3%a4ndnis&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Es wäre einfach, hier aufzuhören und zu behaupten:&lt;br&gt;
&lt;em&gt;Wer schlechten Code schreibt, ist ein schlechter Mensch. Fertig.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ganz so leicht ist es aber nicht immer, denn die Wahrheit ist oft kompliziert und unbequem.&lt;/p&gt;
&lt;p&gt;Technische Schulden entstehen nicht immer aus Faulheit oder Gleichgültigkeit, manchmal entstehen sie aus echtem Druck.
Zum Beispiel aus Deadlines, die nicht verhandelbar waren, aus Ressourcen, die nicht vorhanden waren oder aus dem Wissen, dass eine unvollkommene Lösung, die heute läuft, besser ist als eine perfekte, die in drei Monaten fertig wird, dann aber vielleicht zu spät kommt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perfekter Code ist eine Illusion.&lt;/strong&gt;
Wer das Gegenteil behauptet, hat entweder noch nie unter echtem Druck gearbeitet oder lügt.&lt;/p&gt;
&lt;p&gt;Der entscheidende Unterschied liegt nicht darin, ob Schulden entstehen oder nicht, er liegt darin, &lt;em&gt;wie&lt;/em&gt; sie entstehen und mit ihnen umgegangen wird.&lt;/p&gt;
&lt;p&gt;Es gibt technische Schulden, die man bewusst aufnimmt.
Man bespricht es im Team, dokumentiert die Entscheidung, hält fest, warum diese Abkürzung heute sinnvoll ist und was es braucht, sie später zu tilgen.
Das ist kein Versagen – das ist Pragmatismus mit Verantwortungsbewusstsein.
Ein Kredit, den man kennt und plant zurückzuzahlen.&lt;/p&gt;
&lt;p&gt;Und dann gibt es die andere Art.
Die stillen Schulden.
Die, die entstehen, weil jemand gehofft hat, dass es schon niemand merken wird.
Die, die nicht dokumentiert werden, weil Dokumentation ja &amp;ldquo;Beiwerk&amp;rdquo; ist.
Die, die still in den nächsten Sprint wandern, und den übernächsten, bis sie so tief im System vergraben sind, dass niemand mehr weiß, was sie eigentlich sind – nur noch, dass man sie besser nicht anfasst.&lt;/p&gt;
&lt;p&gt;Der Unterschied zwischen diesen beiden Arten ist ein moralischer, kein technischer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wir nehmen diese Schuld auf, weil wir jetzt liefern müssen – und wir werden sie tilgen&lt;/em&gt; ist eine Aussage, die Respekt verdient.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wird schon niemand merken&lt;/em&gt; ist keine Entscheidung.
Es ist eine Kapitulation.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Management und die Kultur der Eile
    &lt;div id=&#34;management-und-die-kultur-der-eile&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#management-und-die-kultur-der-eile&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Es gibt eine bequeme Ausrede, die sich in Entwicklerkreisen hartnäckig hält: Das Management ist schuld.
Die Roadmap lässt keinen Raum für Refactoring, die Deadlines sind unrealistisch oder der Druck kommt von oben und wir unten sind die Leidtragenden.&lt;/p&gt;
&lt;p&gt;Wie an fast jeder Geschichte ist auch an dieser etwas Wahres dran.&lt;/p&gt;
&lt;p&gt;Organisationen, die Qualität systematisch als verzichtbar behandeln, schaffen Strukturen, in denen technische Schulden keine Ausnahme sind, sondern der Standard.
Wenn Geschwindigkeit das einzige Maß für Erfolg ist, wenn jedes Sprint-Review nur nach abgeschlossenen Tickets fragt und nie nach dem Zustand des Fundaments, dann sendet das eine klare Botschaft: Nur Geschwindigkeit zählt, alles andere ist egal.
So eine Kultur schafft langfristig kein festes Fundament für Fortschritt.&lt;/p&gt;
&lt;p&gt;Aber diese Geschichte hat einen gefährlichen blinden Fleck: Sie macht Entwickler zu passiven Opfern, doch das sind sie nicht, zumindest nicht zwangsläufig.&lt;/p&gt;
&lt;p&gt;Die unbequeme Wahrheit ist, wer schweigt, macht mit.&lt;/p&gt;
&lt;p&gt;Wenn schlechte Entscheidungen nicht benannt werden, wachsen sie ungestört weiter.
Wenn technische Schulden in keinem Meeting auftauchen, weil niemand sie auf die Agenda setzt, existieren sie für das Management schlicht nicht.
Wenn Entwickler unter sich bleiben mit dem Wissen, dass ein System marode ist und dieses Wissen nie nach oben tragen, dann tragen sie Mitverantwortung für das, was daraus wird.&lt;/p&gt;
&lt;p&gt;Das Management kann keine informierten Entscheidungen über Dinge treffen, von denen es nichts weiß.
Das ist keine Entschuldigung für schlechte Führung, aber es ist eine Erklärung dafür, warum Schweigen keine neutrale Haltung ist.&lt;/p&gt;
&lt;p&gt;Die Kultur der Eile entsteht selten durch eine einzige Entscheidung, oft entsteht sie durch hundert kleine Momente, in denen jemand gedacht hat: &lt;em&gt;Ich sage es nächstes Mal. Das ist nicht mein Kampf. Es wird schon gutgehen.&lt;/em&gt;
Und jedes Mal, wenn jemand so denkt, geht ein kleines Bisschen Information verloren.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Die Stimme erheben – Verantwortung annehmen
    &lt;div id=&#34;die-stimme-erheben--verantwortung-annehmen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#die-stimme-erheben--verantwortung-annehmen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Verantwortung ist nichts Abstraktes, es zeigt sich in sehr konkreten Dingen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code-Reviews&lt;/strong&gt; sind eine der wenigen Stellen im Entwicklungsprozess, an denen Qualität kollektiv verhandelt wird.
Wer ein Review durchklickt, weil er keine Zeit hat oder keinen Konflikt will, verzichtet auf diese Chance.
Wer ehrliches Feedback gibt – konstruktiv, respektvoll, aber klar – investiert in das Fundament, auf dem alle weiterarbeiten müssen.
Das zeigt, dass Code-Reviews nicht als reiner Formalismus behandelt werden dürfen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Schulden sichtbar machen&lt;/strong&gt; ist keine Schwäche oder unnötiges nörgeln, sondern Professionalität.
Ein Arzt, der einen Befund verschweigt, um den Patienten nicht zu beunruhigen, handelt nicht fürsorglich, sondern fahrlässig.
Dasselbe gilt für Entwickler, die wissen, dass ein System instabil ist und dieses Wissen für sich behalten.
Technische Schulden gehören dokumentiert, benannt, in Backlogs aufgenommen, aber definitv nicht versteckt.&lt;/p&gt;
&lt;p&gt;Entwickler müssen auch &lt;strong&gt;lernen &amp;ldquo;Nein&amp;rdquo; zu sagen&lt;/strong&gt;.
Das ist nicht bequem aber sehr wichtig.
Nicht immer ist ein Nein möglich und nicht jeden Kampf kann man gewinnen, aber wer nie Nein sagt, wer jedem Druck wortlos nachgibt und jede unrealistische Deadline kommentarlos akzeptiert, der hat aufgehört, Verantwortung zu tragen.&lt;/p&gt;
&lt;p&gt;Und besonders an alle, die gerade am Anfang stehen: Ihr lernt gerade nicht nur Programmieren.
Ihr lernt, wie ihr arbeiten wollt, welche Standards ihr setzt, welche Kompromisse ihr eingeht und welche nicht.
Ihr habt die Chance, Gewohnheiten zu entwickeln, die euch und alle, die nach euch kommen, prägen werden.&lt;/p&gt;
&lt;p&gt;Also erhebt eure Stimme, wenn ihr Mängel erkennt und steht zu euren Entscheidungen, auch wenn es mal unbequem wird.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Der Weckruf (Schluss)
    &lt;div id=&#34;der-weckruf-schluss&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#der-weckruf-schluss&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Jede Zeile Code, die du schreibst, ist eine Entscheidung.&lt;/p&gt;
&lt;p&gt;Es ist sowohl eine technische, als auch eine moralische.&lt;br&gt;
Du entscheidest, wie viel dir die Zeit derjenigen wert ist, die nach dir kommen.&lt;br&gt;
Du entscheidest, ob du ein Fundament baust oder eine Falle.&lt;br&gt;
Du entscheidest, ob du Verantwortung trägst oder weiterschiebst.&lt;/p&gt;
&lt;p&gt;Das klingt abstrakt und schwer, aber tatsächlich kann man mit kleinen Entscheidungen viel Bewirken.&lt;/p&gt;
&lt;p&gt;Hinterlässt du eine Methode mit zweihundert Zeilen, obwohl du weißt, dass sie zu lang ist und sagst, du hattest keine Zeit?&lt;br&gt;
Lässt du einen Kommentar weg, weil er dir gerade trivial erscheint und vergisst, dass er für jemand anderen alles bedeuten könnte?&lt;br&gt;
Begräbst du eine technische Schuld still, anstatt sie zu benennen, weil es so bequemer ist?&lt;/p&gt;
&lt;p&gt;Wenn du diese oder ähnliche Fragen klar mit Nein beantworten kannst, bist nicht Teil des Problems, sondern Teil der Lösung.&lt;/p&gt;
&lt;p&gt;Nimm dir zehn Minuten Zeit, um etwas zu erklären, das du gerade verstanden hast, sag im Review, was du wirklich denkst, steh in einem Meeting auf und sag:
&lt;em&gt;Das geht so nicht, ich schlage vor wir machen das so&amp;hellip;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Du weißt jetzt, was technische Schulden sind, wer sie bezahlt, wie sie entstehen und warum Schweigen keine neutrale Haltung ist.
Du weißt, dass perfekter Code eine Illusion ist, aber bewusste, dokumentierte, ehrliche Arbeit keine.&lt;/p&gt;
&lt;p&gt;Was du nun daraus machst, liegt ganz bei dir.&lt;/p&gt;
&lt;p&gt;Und denk immer daran:
Irgendwo sitzt gerade jemand an deinem Code und fragt sich, wer das hinterlassen hat und warum.&lt;/p&gt;
&lt;p&gt;Also schreibe deinen Code so, dass du guten Gewissens und mit Stolz sagen kannst:
&lt;em&gt;&lt;strong&gt;Das habe ich programmiert&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Zum Schluss möchte ich noch John Woods zitieren, der es etwas provokanter Ausdrückt, jedoch das gleiche meint:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;John Woods&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Vorschaubild
    &lt;div id=&#34;vorschaubild&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#vorschaubild&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.freepik.com/free-photo/still-life-illustrating-ethics-concept_26407587.htm#fromView=search&amp;amp;page=1&amp;amp;position=47&amp;amp;uuid=15322d76-3ed1-44e5-b9a9-246f4c6c1c62&amp;amp;query=ethics&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;freepik&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Technische Schulden</title>
      <link>https://devcartes.de/posts/tech-debts/</link>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0100</pubDate>
      
      <guid>https://devcartes.de/posts/tech-debts/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;Einleitung
    &lt;div id=&#34;einleitung&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#einleitung&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Jeder Entwickler kennt die Situation: Die Deadline rückt näher, der Chef sitzt einem im Nacken, der Kunde nörgelt, weil er auf sein Feature warten muss und die schöne, saubere Lösung würde zu lange dauern.
Die scheinbar logische Konsequenz: Man macht es schnell und unsauber (engl. quick and dirty).
Im &amp;ldquo;besten&amp;rdquo; Fall hinterlässt man noch einen TODO-Kommentar und verschiebt das saubere Lösen auf einen anderen Tag.&lt;/p&gt;
&lt;p&gt;Das ist der Moment, wo technische Schulden entstehen und sie entstehen in nahezu jedem Projekt.
Das perfide an ihnen, sie sind oft stille Begleiter, sie wachsen im Hintergrund, bis sie zu einem realen Problem werden.&lt;/p&gt;
&lt;p&gt;Im folgenden Artikel möchte ich untersuchen, wie genau sie entstehen, woran man sie erkennt und vielleicht am wichtigsten, wie man sie kontrolliert.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Was sind technische Schulden
    &lt;div id=&#34;was-sind-technische-schulden&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#was-sind-technische-schulden&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Der Begriff wurde von Ward Cunningham geprägt, einem der Mitautoren des Agilen Manifests.
Die Analogie, die er gewählt hat, ist bis heute treffend: &lt;strong&gt;Technische Schulden funktionieren wie ein Kredit&lt;/strong&gt;.
Technische Schulden sind die Kosten, die entstehen, wenn ein Entwickler eine schnelle Lösung einer sauberen vorzieht.&lt;/p&gt;
&lt;p&gt;Wer heute einen Kredit aufnimmt, bekommt sofort Geld, zahlt jedoch morgen mehr zurück, da Zinsen oben drauf kommen.
Genauso liefert man mit einer unsauberen Lösung heute schnell ein Feature, erkauft sich damit aber zukünftigen Mehraufwand.
Code wird schwerer verständlich, Änderungen riskanter oder fast unmöglich und neue Features dauern länger, weil man sich erst ganz vorsichtig durch alten, fragilen Code kämpfen muss.
Das ist im Falle der technischen Schulden das Equivalent zu den Zinsen bei einem Kredit.&lt;/p&gt;
&lt;p&gt;Was man hier allerdings nicht vergessen darf:
Technische Schulden sind nicht automatisch ein Fehler, denn manchmal ist es eine bewusste, rationale Entscheidung – quasi ein Kompromiss, den man eingeht, weil der Markt nicht wartet oder die Produktion still steht.&lt;/p&gt;
&lt;p&gt;Es wird erst zum Problem, wenn die Schulden nicht oder zu spät zurückgezahlt werden.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Wie werden sie verursacht
    &lt;div id=&#34;wie-werden-sie-verursacht&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#wie-werden-sie-verursacht&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Im Folgenden möchte ich einige der häufigsten Ursachen für technische Schulden beschreiben.
Ich erhebe kein Anspruch auf Vollständigkeit, aber es sind die aus meiner Sicht wichtigsten und gefährlichsten.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Zeitlicher Druck
    &lt;div id=&#34;zeitlicher-druck&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#zeitlicher-druck&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Jeder Entwickler kennt das: Chef, Kunde oder externe Deadlines zwingen dazu, Abstriche bei der Codequalität zu machen.
Features müssen halbfertig veröffentlicht werden, Dokumentation wird gestrichen und Tests – um die kümmert man sich später.
Zeitlicher Druck ist wohl die häufigste Ursache für technische Schulden und gleichzeitig die am schwersten zu vermeidende.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Mangel an Bewusstsein für die Konsequenzen
    &lt;div id=&#34;mangel-an-bewusstsein-für-die-konsequenzen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mangel-an-bewusstsein-f%c3%bcr-die-konsequenzen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Manchmal entstehen technische Schulden schlicht, weil sich niemand bewusst ist, welche Langzeitfolgen eine schnelle Entscheidung haben kann.
Ein Entwickler löst ein Problem pragmatisch, ohne zu ahnen, dass genau diese Stelle in sechs Monaten das Herzstück eines neuen Features sein wird.
Fehlende Erfahrung oder mangelndes Systemverständnis spielen hier oft eine Rolle.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Mangel an Tests
    &lt;div id=&#34;mangel-an-tests&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mangel-an-tests&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ohne automatisierte Tests weiß niemand mit Sicherheit, ob eine Änderung am Code woanders etwas kaputt macht.
Daraus ergibt sich, dass Entwickler sich nicht mehr trauen, alten Code anzufassen und er wird zur Blackbox.
Technische Schulden, die durch fehlende Tests entstehen, sind sehr tückisch, weil sie kaum sichtbar sind, bis es zu spät ist.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Mangelhafte oder fehlende Dokumentation
    &lt;div id=&#34;mangelhafte-oder-fehlende-dokumentation&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mangelhafte-oder-fehlende-dokumentation&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ein Sprichwort in der Softwareentwicklung besagt: Code wird viel öfter gelesen als geschrieben.
Wenn niemand dokumentiert, warum eine Entscheidung so getroffen wurde, verliert sich dieses Wissen unweigerlich – spätestens wenn der ursprüngliche Entwickler das Team verlässt.
Was übrig bleibt, ist Code, den niemand mehr richtig versteht und den niemand bearbeiten will.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Schlechte Kommunikation
    &lt;div id=&#34;schlechte-kommunikation&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#schlechte-kommunikation&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Silodenken, unklare Anforderungen, zu seltene Abstimmungen oder das klassische &amp;ldquo;das hatte ich mir anders vorgestellt&amp;rdquo; sind im Arbeitsalltag fast nicht zu vermeiden.
Wenn Entwickler, Designer und Product Manager nicht klar miteinander kommunizieren, entstehen Missverständnisse.
Doppelt implementierte Funktionen, inkonsistente Architekturentscheidungen oder Features, die an den eigentlichen Anforderungen vorbeigehen, sind typische Folgen.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Verzögertes Refactoring
    &lt;div id=&#34;verzögertes-refactoring&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#verz%c3%b6gertes-refactoring&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Refactoring ist wie Küche putzen nach dem Kochen oder Aufräumen nach einer Party: Man schiebt es vor sich her, weil es anstrengend ist und &amp;ldquo;ja auch noch später gemacht werden kann&amp;rdquo;.
Doch je länger man wartet, desto verwurzelter wird schlechter Code im System und desto aufwändiger wird es, ihn zu bereinigen.
Was heute vielleicht nur eine Stunde dauern würde, dauert in einem Jahr eventuell eine Woche.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Nicht Einhaltung von Entwicklungsrichtlinien
    &lt;div id=&#34;nicht-einhaltung-von-entwicklungsrichtlinien&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#nicht-einhaltung-von-entwicklungsrichtlinien&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;In den meisten Teams gibt es Coding Standards, Architekturprinzipien oder Konventionen – manchmal ungeschrieben, manchmal explizit dokumentiert.
Werden diese ignoriert oder umgangen, entsteht inkonsistenter Code, der schwer zu lesen und zu warten ist. Besonders kritisch wird es, wenn neue Teammitglieder diese Abkürzungen als Standard übernehmen.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Das Fehlen von Entwicklungsrichtlinien
    &lt;div id=&#34;das-fehlen-von-entwicklungsrichtlinien&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#das-fehlen-von-entwicklungsrichtlinien&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ohne klare Entwicklungsrichtlinien entwickelt jeder Entwickler seinen eigenen Stil und das Ergebnis ist inkonsistenter Code, der schwer zu lesen und definitiv noch schwerer zu warten ist.
Coding Standards, Architekturprinzipien und Konventionen sind essentiell, da sie dafür sorgen, dass sich jeder im Team im Code zurechtfindet und nicht nur derjenige, der ihn geschrieben hat.&lt;/p&gt;
&lt;p&gt;Besonders kritisch wird es, wenn Teammitglieder diesen inkonsistenten Zustand als Normal ansehen, in ihren Alltag übernehmen und weiterführen.
Es braucht Richtlinien als Korrektiv, sonst häufen sich technische Schulden still und in großer Menge an.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Unwissenheit
    &lt;div id=&#34;unwissenheit&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#unwissenheit&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Nicht jede technische Schuld entsteht durch Faulheit oder Zeitdruck.
Manchmal weiß ein Entwickler einfach nicht, dass es eine bessere Lösung gibt.
Ob nun wegen fehlender Erfahrung, mangelnder Weiterbildung oder weil sich die Technologie weiterentwickelt hat, während der Code stehen blieb - es ist menschlich und doch eine mögliche Ursache für technische Schulden.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Wie erkennt man sie
    &lt;div id=&#34;wie-erkennt-man-sie&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#wie-erkennt-man-sie&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Technische Schulden sind heimtückisch, sie schleichen sich still und heimlich ein.
Oft merkt man erst, dass sie überhaupt da sind, wenn sie bereits zum echten Problem geworden sind.
Es gibt allerdings einige sehr typische Warnsignale, auf die man achten sollte.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Steigende Entwicklungsgeschwindigkeit&amp;hellip; nach unten
    &lt;div id=&#34;steigende-entwicklungsgeschwindigkeit-nach-unten&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#steigende-entwicklungsgeschwindigkeit-nach-unten&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Neue Features, die früher in zwei Tagen fertig waren, brauchen plötzlich eine Woche.
Das liegt nicht am schlechter werden des Teams, sondern an den Altlasten, die sie mit sich tragen.
Wird das Team spürbar langsamer, ohne dass die Komplexität der Anforderungen gestiegen ist, ist das ein typisches Zeichen.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Angst vor Änderungen
    &lt;div id=&#34;angst-vor-änderungen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#angst-vor-%c3%a4nderungen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;Fass das bloß nicht an, dann geht irgendwas kaputt&amp;rdquo;, &amp;ldquo;Hier musst du besonders vorsichtig sein, niemand weiß so genau, warum der Code überhaupt funktioniert&amp;rdquo;.
Diese Sätze sind deutliche Warnsignale.
Wenn Entwickler bestimmte Teile des Codes meiden wie ein Minenfeld und regelrecht Angst haben sie zu verändern, stecken dort fast immer technische Schulden dahinter.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Häufige und wiederkehrende Bugs
    &lt;div id=&#34;häufige-und-wiederkehrende-bugs&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#h%c3%a4ufige-und-wiederkehrende-bugs&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Bugs, die immer wieder auftauchen, oft an denselben Stellen, deuten stark auf strukturelle Probleme hin.
Man muss die Ursachen angehen, statt die Symptome zu bekämpfen. Der eigentliche Code ist fragil oder unverständlich und kann deshalb nicht wirklich repariert werden.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Niemand versteht den Code mehr
    &lt;div id=&#34;niemand-versteht-den-code-mehr&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#niemand-versteht-den-code-mehr&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Wenn ein Entwickler einen Abschnitt öffnet und erstmal zehn Minuten braucht, um zu verstehen was da passiert oder schlimmer, wenn niemand im Team mehr erklären kann, warum etwas so gebaut wurde, sind das fast sicher technische Schulden.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Einarbeitung neuer Entwickler dauert ungewöhnlich lang
    &lt;div id=&#34;einarbeitung-neuer-entwickler-dauert-ungewöhnlich-lang&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#einarbeitung-neuer-entwickler-dauert-ungew%c3%b6hnlich-lang&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ein gesundes Projekt lässt sich in überschaubarer Zeit verstehen.
Wenn neue Teammitglieder Wochen oder Monate brauchen, um produktiv zu werden, ist das oft ein Zeichen, dass der Code zu komplex, zu schlecht dokumentiert oder inkonsistent geworden ist.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Wie kann man sie verhindern
    &lt;div id=&#34;wie-kann-man-sie-verhindern&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#wie-kann-man-sie-verhindern&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Technische Schulden vollständig zu vermeiden ist unrealistisch und wie wir gesehen haben, manchmal auch gar nicht sinnvoll.
Das Ziel ist nicht null Schulden, sondern die Schulden bewusst aufnehmen und sie zeitnah und kontrolliert wieder zurückzuzahlen.
Hier sind die wichtigsten Maßnahmen dafür.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Klare Entwicklungsrichtlinien etablieren
    &lt;div id=&#34;klare-entwicklungsrichtlinien-etablieren&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#klare-entwicklungsrichtlinien-etablieren&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ein Team braucht eine gemeinsame Basis: Coding Standards, Codeversionierung (Git), Architekturprinzipien, Konventionen für Benennung und Struktur.
Das muss kein dickes Handbuch sein, aber es muss die wichtigsten Punkte enthalten, allen bekannt sein und aktiv gelebt werden.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Automatisierte Tests von Anfang an
    &lt;div id=&#34;automatisierte-tests-von-anfang-an&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#automatisierte-tests-von-anfang-an&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Ein Testkonzept muss von Anfang existieren und Tests dürfen nicht bis zum Schluss aufgeschoben werden, denn sie sind eine Investition in die Zukunft.
Wer von Beginn an testet, kann später ohne Angst refactoren, weil sofort klar wird, dass etwas bricht und wo.
Der beste Zeitpunkt für Tests ist immer &lt;strong&gt;jetzt&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Regelmäßiges Refactoring einplanen
    &lt;div id=&#34;regelmäßiges-refactoring-einplanen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#regelm%c3%a4%c3%9figes-refactoring-einplanen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Refactoring muss zum normalen Entwicklungsalltag gehören und darf nicht auf unbestimmte Zeit verschoben werden.
Kleine, regelmäßige Aufräumarbeiten verhindern, dass sich Schulden überhaupt erst gefährlich anhäufen.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Code Reviews
    &lt;div id=&#34;code-reviews&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#code-reviews&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Vier Augen sehen mehr als zwei, sagt man und es ist tatsächlich so, denn man sieht seine eigenen Fehler oft nicht.
Regelmäßige Code Reviews helfen dabei, schlechte Lösungen früh zu erkennen, bevor sie sich im System festsetzen.
Gleichzeitig fördern sie den Wissensaustausch im Team, was ein unterschätzter Nebeneffekt ist.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Dokumentation als Teil der Arbeit verstehen
    &lt;div id=&#34;dokumentation-als-teil-der-arbeit-verstehen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#dokumentation-als-teil-der-arbeit-verstehen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Dokumentation darf nicht als ein notwendiges Übel angesehen werden, sondern muss Teil der eigentlichen Arbeit sein.
Wer während der Entwicklung fünf Minuten investiert um zu erklären, warum eine (schlechtere) Entscheidung so getroffen wurde, spart seinem Team in der Zukunft Zeit und Kopfzerbrechen.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Technische Schulden sichtbar machen
    &lt;div id=&#34;technische-schulden-sichtbar-machen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#technische-schulden-sichtbar-machen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Was nicht sichtbar ist, wird nicht priorisiert oder &amp;ldquo;aus den Augen aus dem Sinn&amp;rdquo;.
Technische Schulden sollten aktiv erfasst werden, sei es als Einträge im Backlog oder zum Beispiel als (TODO-) Tags im Code.
Nur wenn das Team und das Management sehen, was sich angesammelt hat, können richtige Entscheidungen getroffen werden, wann und wie die Schulden zurückgezahlt werden.&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;Zeitdruck bewusst managen
    &lt;div id=&#34;zeitdruck-bewusst-managen&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#zeitdruck-bewusst-managen&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;Das ist leichter gesagt als getan und dennoch extrem wichtig.
Wenn Deadlines auf Kosten der Qualität gehen, muss man diese Entscheidung bewusst treffen und die Konsequenzen sollten klar sein.
Wer einen Kompromiss eingeht, muss ihn dokumentieren und sicherstellen, dass die Schulden auch zeitnah bezahlt werden.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Fazit
    &lt;div id=&#34;fazit&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#fazit&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;Technische Schulden sind (oft) kein Zeichen von schlechtem Entwicklerhandwerk, sondern in fast jedem Softwareprojekt vertreten.
Manchmal entstehen sie durch Druck von außen, manchmal durch fehlende Strukturen, manchmal schlicht durch Unwissenheit.&lt;/p&gt;
&lt;p&gt;Gefährlich werden sie dann, wenn man sie ignoriert.&lt;/p&gt;
&lt;p&gt;Der erste und meiner Meinung nach wichtigste Schritt ist Bewusstsein.
Technische Schulden wahrnehmen, sie benennen und als das behandeln, was sie sind, eine bewusste Entscheidung mit Konsequenzen.
Wer das tut, kann sie kontrollieren, aktiv abbauen und verhindern, dass sie das Projekt eines Tages lahmlegen.&lt;/p&gt;
&lt;p&gt;Sauberer Code muss immer das Ziel sein, denn mit ihm steht und fällt der langfristige Erfolg eines Projekts.&lt;/p&gt;
&lt;hr&gt;

&lt;h2 class=&#34;relative group&#34;&gt;Vorschaubild
    &lt;div id=&#34;vorschaubild&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#vorschaubild&#34; aria-label=&#34;Anker&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.freepik.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;freepik&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>