Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Grundlagen der Programmierung: Codemetriken

Technische Schuld

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wieso arbeiten Entwickler nicht von Beginn an sauber und was hat dies mit dem Begriff der technischen Schuld zu tun?
07:12

Transkript

Beschäftigt man sich mit Code-Qualität, dann kommt man ganz schnell zu dem Begriff "technische Schuld". Klären wir also, was technische Schuld ist und wie es dazu kommt. Wenn wir mit der Programmierung beginnen, dann haben wir häufig in einem völlig neuen Projekt nichts anderes als bestimmte Rahmensituationen, wie z. B. die Basistechnologie und natürlich die Domäne, in der wir arbeiten. Und wenn wir dann so vor uns hinprogrammieren, dann kommen wir ganz schnell an den Punkt, dass wir usere Code-Fahne eingezogen haben und dass wir bestimmte Bestandteile einfach nicht mehr so gut verstehen. Das ist nachvollziehbar. Denn was weiß ich heute noch, welchen Code ich vor drei Monaten geschrieben habe. Aber es kann auch sein, dass der Code so geschrieben ist, dass er halt einfach unverständlich wird, und jetzt ist die Frage, wie man darauf reagiert. Die einfachste Möglichkeit ist, gar nicht zu reagieren, man programmiert, wie bisher, eventuell programmiert man um bestimmte Fehlerstellen drum rum, und wie man so vor sich hinprogrammiert, kommt man irgendwann an den Punkt, dass man weder vor noch zurück kann. Warum macht man das? Ganz einfach, weil man auf die Art und Weise produktiv ist. Man ist sehr produktiv im ersten Moment. Produktivität wird von Projektaußenstehenden nämlich häufig daran gemessen, wie viele Features man bereitstellt. Und wenn man sich nicht damit belastet, dass man beispielsweise eine automatisierte Testumgebung aufsetzt, dass man sich damit beschäftigt, den Code wieder aufzuräumen und so weiter und so fort, sondern alles darauf verwendet, Features zu entwickeln, dann ist man sehr, sehr produktiv und diese Produktivität nimmt ab, nämlich umso mehr, je mehr Code vorhanden ist, je größer das Volumen der gesamten Codebasis ist und je komplexer die darin enthaltenen Strukturen sind, bis man dann irgendwann dann an einen Punkt kommt, wo jedem bewusst ist, das müssten wir eigentlich neu machen. Oder wir müssten sehr viel Geld in die Hand nehmen, um zu einer Lösung zu kommen, die wir besser verstehen. Aber diese Situation kann weit in der Zukunft liegen. Wenn man hingegen mehr Zeit da reininvestiert, um beispielsweise Testautomatisierungen einzusetzen, eventuell automatisches Deployment vorzunehmen und so weiter und so fort, dann beschäftigt man sich grade zu Beginn des Projektes mit sehr vielen Dingen, die nicht für den Kunden spürbar sind, und dabeit ist die Aufmerksamkeit für ein Projekt am Anfang mit am größten, also am Anfang und am Ende. Hat man aber entsprechende Zeit investiert, sauber zu arbeiten, dann kann man diese Produktivität auch langfristig halten. Man wird in zwei, drei Jahren immer noch so produktiv sein wie heute. Weil man das, was man geschaffen hat, besser versteht und weil es leichter anpassbar ist. Aus diesem Grund lohnt sich sauberes Arbeiten natürlich vor allem bei langläufigeren Projekten. Wenn es nur darum geht, einen Prototypen zu entwickeln oder wenn wir im Studium einfach uns mit einer bestimmten Technologie beschäftigen wollen, dann arbeiten wir automatisch immer dreckig und beschäftigen uns nicht mit nachvollziehbaren Strukturen und so weiter und so fort. Aber gerade weil wir das im Studium nicht gelernt haben, sorgt es dafür, dass wir das leider auch in längere Zeitbereiche mit hinein nehmen, und dann haben wir, damit zu kämpfen, die Schulden abzutragen, die wir uns am Anfang angehäuft haben. Und damit sind wir bei der technischen Schuld. Die technische Schuld wurde von Ward Cunningham geprägt. Er hat im Finanzbereich gearbeitet, und er musste einer Führungsperson erklären, welche Auswirkungen es hat, wenn Sie jetzt nicht so arbeiten, wie er das vorgeschlagen hat, und sein Bild war das, was jemand aus der Finanzbranche am besten versteht, wir wollen jetzt kurzfristig schneller handeln können, dafür leihen wir uns Geld von der Bank, beispielsweise, also wir nehmen einen Kredit auf, und dieses Bild des Kredits, wenn wir unsauber arbeiten, leuchtet jedem ein, denn wir zahlen später nicht einfach nur das Geld zurück, was wir uns geliehen haben, sondern wir zahlen es mit Zinsen und eventuell mit Zinseszinsen, und je weiter das Zahlungsziel in der Zukunft liegt, desto teurer wird die Sache für uns, desto höher sind die Zinsen. Das verbirgt sich dahinter. Wir sollten also versucht sein, technische Schulden so schnell wie möglich zu beseitigen. Das Dumme ist dabei, dass wir uns häufig gar nicht darüber bewusst sind, dass wir sie überhaupt anhäufen. Die ursprüngliche Form der technischen Schuld, die Ward Cunningham beschrieben hat, war umsichtig, sie war überlegt, er wusste, in welcher Situation er sich befindet, er wusste, welche Auswirkungen sein Handeln haben wird, das ist wie, wenn wir sagen, okay, wir machen das diesen Sprint so, aber dafür werden wir einen Stabilisierungssprint brauchen, in dem wir die Software in einen weiterverwendbaren Status überführen. Der krasse Gegensatz davon ist der, den man in der Praxis leider auch häufig bekommt, und zwar die rücksichtslose Situation. Wir leben im Hier und Jetzt, wir machen das entsprechend fertig, wir haben keine Zeit für etwas anderes. Punkt. Das sorgt nicht dafür, dass wir Probleme lösen, das sorgt dafür, dass wir Probleme haben, in dieser rücksichtlos überlegten Situation. Also man weiß, in was man hineinschlittert, aber es ist einem quasi egal. Wenn man in diese Situation ist, wird man immer Probleme haben. Man muss sich die Schwierigkeiten bewusst machen, man muss sich Gedanken darüber machen, wie man sie eventuell lösen kann, ansonsten kommt man in eine schleichende oder sogar rasende Verschlechterung der Gesamtsituation. Dem gegenüber kann es natürlich auch sein, dass man irgendwie versehentlich in diese Situation hineinstürzt. Weil man sich keine Gedanken darüber gemacht hat, aber es auch nicht unbedingt besser wissen konnte. Das sehe ich beispielsweise immer bei Kollegen, die frisch von der Universität kommen. Ihnen wurde nicht so richtig beigebracht, was bestimmte Qualitätsstandards innerhalb der Software-Entwicklung sind, wie man programmieren sollte, Clean Code, ist leider zu selten Thema in den Unviersitäten. Und dem kann man nur entgegenkommen, wenn man der technischen Schuld, die diese Kollegen anhäufen, gleich von vorne her wegbegegnet, indem man ihnen erfahreren Kollegen zur Seite stellt. Und dann gibt es noch die umsichtig versehentlichen Personen oder die umsichtig versehentlichen Situationen, wo man im Nachhinein feststellt, dass eine bestimmte Sache nicht ganz so eine gute Idee war. Das ist jedem von uns schon einmal passiert, dass man etwas programmiert hat und dann denkt man sich, okay, das hätte ich anders machen müssen, nicht umsonst sagt man, die zweite Version einer Software ist immer die beste, weil die dritte ist meistens wieder eine erste und die erste, da hatte man einfach nicht die Erfahrung, wie man hätte umgehen sollen. In der zweiten hat man dann häufig aus der Situation gelernt. All das, diese technische Schuld, die soll uns anzeigen, dass wir uns, oder wir müssen sie im Kopf behalten, weil sie uns zeigt, dass das, was wir tun, Auswirkungen hat. Und so, wie wir mit der Situation umgehen, hat starken Einfluss darauf, ob sich eben die Qualität unserer Software verschlechtert oder verbessert. Können wir die Zinsen zurückzahlen für den Kredit, den wir aufgenommen haben oder wollen wir das gar nicht?

Grundlagen der Programmierung: Codemetriken

Lernen Sie Methoden, Prinzipien und Werkzeuge kennen, mit deren Hilfe Sie die Qualität Ihrer Software dauerhaft sicherstellen können.

1 Std. 43 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!