Clean Code
Die Handwerkskunst der Softwareentwicklung
| Als Präsenz- und Online-Training
Der Weg zu mehr Professionalität in der Codeerstellung
Die Softwareentwicklung wird heutzutage vermehrt als eine Form der Handwerkskunst (Craftsmanship) aufgefasst, die für eine Handwerkstradition, Zusammenhalt, bestimmte Werte und echte Qualität steht. Unter diesen Gesichtspunkten ist ein professioneller Softwareentwickler ein Gelehrter, der wiederkehrend nach der Verbesserung seiner eigenen Fähigkeiten strebt.
Im allgemeinen Verständnis orientiert sich Seniorität an der Anzahl der Jahre, die in einem Industriezweig verbracht wurden. Seniorität sollte die Fragestellungen „Senior in Vergleich zu Wem, in welcher Technologie, in welchem Kontext?“ klar beantworten und abgrenzen können.
Professionalität hingegen wird von einem Meister der Handwerkskunst gelebt: Wissen, ein hohes Qualitätsbewusstsein, Pragmatismus sowie Sehnsucht, Leidenschaft, Spaß und Stolz über die eigene Arbeit kennzeichnen einen professionellen Softwareentwickler.
Sie lernen in diesem Seminar die Werte, Regeln und Prinzipien kennen, auf denen die Handwerkskunst der Softwareentwicklung fußt und können damit dem Sprichwort „Wie der Meister, so das Werk“ (Karl Simrock) folgend, hochwertigen, objektorientierten Code entwickeln.
Software sollte eben genau diesen Anspruch erfüllen: Das Feature sollte nicht nur lauffähig sein, sondern so umgesetzt werden, dass der Code (das, was nicht gesehen wird) verständlich, änderbar und testbar, d.h. „sauber (engl. clean)“ ist.
Trainieren Sie in diesem Seminar an praxisnahen Beispielen genau diese Leitprinzipien, die das Manifests für die Handwerkskunst der Softwareentwicklung beschreibt. Ergänzen Sie Ihr Wissen, indem Sie sinnvoll Entwurfsprinzipien und -mustern anwenden, problematische Code-Abschnitte (Code Smells oder Antipatterns) identifizieren. Lernen Sie den effektiven Umgang mit Legacy-Code oder dessen evolutionäre Weiterentwicklung durch gezielte Refactorings und nutzen Sie Review-Techniken, um Wissen zu transferieren.
Wer sollte teilnehmen:
Zielgruppe
Das Seminar „Die Handwerkskunst der Softwareentwicklung – Der Weg zur Meisterschaft in der Codeerstellung“ richtet sich an Softwarearchitekten, Softwareentwickler/-innen, Qualitätssicherer und technische Projektleiter.
Voraussetzungen
Das Seminar „Die Handwerkskunst der Softwareentwicklung – Der Weg zur Meisterschaft in der Codeerstellung“ setzt Programmierkenntnisse in einer objektorientierten Sprache voraus (die Beispiele und Übungen sind in Java gegeben) sowie Grundlagen mit der UML, oder vergleichbare Kenntnisse.
Trainingsprogramm:
Grundlagen professioneller Softwareentwicklung
- Softwareentwicklungsprozess
- Grundsätze „guter“ Programmierung
- Qualitätsmerkmale (ISO 25010)
- Softwareentropie
- „Code Smells“
- Ursachen „schlechter“ Programmierung und Unsitten
Software Craftsmanship
- Professionalität und Berufsethik
- Agilität, Agiles Manifest, Agiles Hangover
- Software Craftsmanship Manifest
- Clean Code Initiative (Clean Code Developer)
Prinzipien guten Designs
- Einfachheit gewinnt
- Spezifische Entscheidungen
- Explizite Anforderungen
- Kapselung, Geheimnisprinzip
- Lose Kopplung
- Hohe Kohäsion
- Konsistenz
- Objektorientierte Prinzipien (SRP, DRY, SOLID)
- Separation of Concerns
- Querschnittsthemen (Logging, Security)
Vorteile einer Seminarteilnahme
- Sie werden vermehrt lesbaren, wartbaren, erweiterbaren und testbaren Code schreiben.
- Kompaktes Training mit Fokus auf professionelle Software-Handwerkskunst
- Aktuelle Kursunterlagen (state-of-the-art)
- Wiederholung und Vertiefung grundlegender Entwicklungsaspekte (Entwurfsprinzipien und -muster)
Guter Code
- Sinnvolle und verständliche Namensgebung
- Funktionen, Datentypen, Argumente
- Query / Command Segregation
- „Stepdown-Regel“
- Rekursionen
- Fehlerbehandlung, Null-Referenz-Behandlung
- Kommentare
- Formatierungen
Effektive Entwicklung (u.a. mit Java)
- Entwurfsmuster
- Immutablitiy und unveränderbare Datenstrukturen
- Besonderheiten einzelner Datentypen
- Funktionsliteratle (Lambdas) und Higher-Order-Funktionen
- Wiederverwendung durch Komposition
Codemetriken
- Statische Codeanalyse
- Testgetriebene Entwicklung (TDD)
- Continuous Integration & -Delivery
- Code Reviews
Arbeiten mit „Legacy Code“
- Abhängigkeiten auflösen
- Welche Tests sind notwendig / welche Methoden sollen getestet werden / was ist mit irreführenden Parametern?
- Codeverständnis herbeiführen
- Umgang mit Nicht-Objektorientiertem Code
Ausblick
- Coding Dojos und Retreats
- Integration in agile Vorgehensweisen
- Moderne Softwarearchitekturen (Zusammenhang)
Das sollten Sie bereits mitbringen
- Praktische Erfahrung in Softwareentwicklung, erworben anhand unterschiedlicher Projekte oder Systeme außerhalb der Ausbildung
- Kenntnisse und praktische Erfahrung in mindestens einer höheren Programmiersprache
- Hilfreich für das Verständnis einiger Konzepte sind darüber hinaus Grundlagen in der Modellierung
Sie haben Interesse an diesem Training?
Wir freuen uns auf Ihre Anfrage:
Maßgeschneidertes Inhouse-Training gefällig?
Sie haben gleich ein ganzes Team, welches Sie schulen möchten, aber keines unserer Trainings entspricht den Anforderungen? Kein Problem! Gerne erstellen wir gemeinsam mit Ihnen ein maßgeschneidertes Inhouse-Training, egal ob für Anfänger oder Fortgeschrittene. Wir freuen uns auf Ihre Anfrage!