<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Testing on Devcartes</title>
    <link>https://devcartes.de/tags/testing/</link>
    <description>Recent content in Testing on Devcartes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de</language>
    <lastBuildDate>Tue, 31 Mar 2026 00:00:00 +0100</lastBuildDate><atom:link href="https://devcartes.de/tags/testing/index.xml" rel="self" type="application/rss+xml" />
    <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>