Essential Principles & Practices for Methodical Coding

Training & Mentoring Course

How to learn Software Craftsmanship, Clean Coding, Error Prevention, Fault-Tolerant Coding & Efficient Testing
in an Agile Environment



The Purpose of this Course

In most IT projects basic principles of software design are ignored. As a result, software systems become unnecessarily large, cumbersome, complex and ultimately unmanageable. This causes delays and increases costs and can endanger the project as a whole.

The basic principles of creating excellent software are the same across all programming languages and independent of syntactical details of different language dialects. In fact, the most fundamental errors in software systems can be traced to the violation of these principles.

The consequent and masterly application of these principles is an individual property most smart developers have in common. It has been scientifically proven that the difference in productivity between developers can be up to factor 10 (as you can see in the article links on the left side of this page).
Smart developers solve the same problem much faster, more elegantly and with less code. Moreover, the delivered code is intuitively comprehensible, easier to maintain and - as a natural result - also usually error-free.

This course has been designed to teach the participants all essential principles and practices required for enhancing their competence and abilities in software craftsmanship, clean coding, architecture, error prevention techniques, fault-tolerant coding and efficient testing. Applying these principles will result in significantly higher product quality leading to a significant reduction of software maintenance costs. You will experience higher development velocity which leads to less costs as well as increased customer satisfaction, so that the course will amortise immediately.

Trainers & Mentors

Dr. Robert Mencl (Dipl.-Inform.)   and/or 
Jörg Vollmer (Dipl.-Inform.)

Course language: English or German (depends on the customer).

Our Approach

The transfer of knowledge is elegantly woven into the daily work of your developers. This means there is almost no unproductive time. In fact, you will notice immediate improvement of the software quality. The developers will not be obstructed by the course from working on their current project. Instead, the concepts will be taught in parallel to their daily work in order to immediately apply the learned concepts within the project.

The steps:

  1. Each day a slide lecture of one to two hours in duration.
  2. After that, the knowledge will be applied directly on the current project of your developers, assisted by our coaches. In addition to pairing with the developers, the coaches review code, along with architectural aspects. This approach combines a highly valuable and modern didactic approach with a focus on software engineering productivity.
  3. Challenges and issues encountered during the day will be addressed in the lecture of the following day. In this manner, the developers improve their ways of working steadily with each working day. In other words, we apply the core agile practice of inspect and adapt to the process of improving the ways of working of the software engineers.

Length of the course
From a didactical point of view we recommend a time span of 12 weeks (3 months) for this course, so that all principles and practices can be learned systematically. If needed, the customer can adjust the time span for coaching individually. However, the total duration of the course should not be less than 6 weeks.

Course materials
All participants get daily course material, which is customized for the current phase of the course. At the end of the course the participants receive a handbook.

Short Course Overview

Essential Principles & Practices for Methodical Coding

Part I  - Introduction
Chapter 1: Motivation

Part II The Development Environment
Chapter 2: Basics on Development Environments

Part III Maintaining Software Quality
Chapter 3: Basic Principles and Practices of Clean Coding
Chapter 4: Clean Code and Architecture 
Chapter 5: Error Prevention Practices
Chapter 6: Fault-Tolerant Coding
Chapter 7: Personal Working Style
Chapter 8: Principles and Practices of Testing

Part IV Agile Way of Working
Chapter 9: Agile Principles and Practices with Direct Impact on Code Quality
Chapter 10: Development & Design Practices with Direct Impact on Code Quality

Part V Human Factors
Chapter 11: Soft Skills

Part VI Anti-Patterns
Chapter 12: Summary of the Most Frequent Anti-Patterns in Software Engineering

Part VII Summary & Conclusion
Chapter 13: Summary of the Most Important Principles and Practices 
Chapter 14: Conclusion


Description in German / Beschreibung in Deutsch:

Der Grund für diesen Kurs

In den meisten IT-Projekten werden wesentliche Prinzipien bei der Softwareentwicklung konsequent missachtet. In Folge dessen werden Softwaresysteme unnötig groß, schwerfällig, komplex und schließlich fehlerhaft und unbeherrschbar. Das kostet Sie Zeit und Geld und kann den gesamten Projekterfolg gefährden.

Die Grundprinzipien für die Erzeugung exzellenter Software sind über alle Programmier- sprachen hinweg immer gleich und unabhängig von syntaktischen Feinheiten der unter- schiedlichen Dialekte. Tatsächlich bestehen die meisten Fehler in Softwaresystemen in der Verletzung dieser Grundprinzipien.

Die konsequente und virtuose Anwendung dieser Prinzipien ist eine Eigenschaft, die viele clevere Entwickler gemeinsam haben. Es ist wissenschaftlich nachgewiesen worden, dass der Produktivitätsunterschied zwischen Entwicklern bis zu Faktor 10 betragen kann, wie Sie unter den Quellen rechts auf dieser Seite nachlesen können. Geschickte Entwickler brauchen in der Regel viel weniger Code, um ein Problem zu lösen und sind daher auch um ein vielfaches schneller bei der Entwicklung als der Durchschnitt. Der erzeugte Code ist darüber hinaus meist viel leichter verständlich, einfacher zu warten und in Folge dessen in der Regel zusätzlich auch noch fehlerfrei.

Der vorliegende Kurs soll den Teilnehmern alle essenziellen Prinzipien und Praktiken vermitteln, die zur Steigerung der Fähigkeiten Ihrer Entwickler in den Bereichen Softwarehandwerk, Clean Coding, Architektur, Fehlervermeidungstechniken, Fehlertoleranz und dem effizienten Testen signifikant beitragen. Dadurch werden Sie eine deutlich bessere Produktqualität durch einfacheren Code und weniger Fehler erreichen, die sich auch auf den Wartungsaufwand der Software positiv auswirken werden. Die ebenfalls daraus resultierende höhere Entwicklungsgeschwindigkeit mündet für Sie in geringere Kosten und verbesserter Kundenzufriedenheit, sodass sich der Kurs unmittelbar amortisieren wird.

Trainer & Mentoren

Dr. Robert Mencl (Dipl.-Inform.)   und/oder 
Jörg Vollmer (Dipl.-Inform.)

Kurssprache: Deutsch oder Englisch (je nach Kundenwunsch). 


Wie das Wissen vermittelt wird

Die Wissensvermittlung ist optimal mit dem Alltag Ihrer Entwickler verbunden, sodass für Sie keine Leerlaufzeiten anfallen, sondern Sie im Gegenteil von Anfang an eine Qualitätsverbesserung Ihrer Produkte bemerken werden. Die Entwickler werden für den Kurs nicht aus ihrem aktuellen Projekt abgezogen. Stattdessen wird der Kurs projektbegleitend durchgeführt, sodass sie direkt im Projekt gecoacht werden, um die erlernten Konzepte unmittelbar bei ihrer Arbeit anzuwenden.

Kursablauf:

  1. Jeden Tag ein Folienvortrag von maximal ca. 1 bis 2 Stunden Länge.
  2. Danach in 6 bis 7 Stunden die praktische Anwendung des Erlernten direkt im realen Projekt des Kunden. Coaching durch den jeweiligen Trainer am praktischen Beispiel. Architektur- und Code-Reviews durch den Trainer. Damit wird sichergestellt, dass jeder Entwickler die einzelnen Konzepte selber am eigenen Projekt ausprobieren und vertiefen kann.
  3. Schwierigkeiten und verbesserungswürdige Dinge, die an einem Tag auffallen, werden am Folgetag aufgearbeitet und vermittelt, damit die Kursteilnehmer jeweils ein aktuelles Feedback bekommen.

Kursdauer:
Aus didaktischen Gründen empfehlen wir als idealen Zeitraum 12 Wochen (3 Monate), damit sich das Erlernte intensiv durch praktische Übungen im Langzeitgedächtnis festsetzen kann. Je nach Bedarf des Kunden, kann der Coachingzeitraum auch individuell angepasst werden. Der Zeitraum sollte jedoch 6 Wochen nicht unterschreiten.

Kursmaterialien:
Allen Teilnehmern werden täglich neue Kursmaterialien ausgehändigt, die auf den jeweiligen Tag abgestimmt sind. Am Ende des Kurses erhalten alle Kursteilnehmer ein zusammenfassendes Handbuch. Das darin enthaltene erlernte Wissen ist für die Kursteilnehmer als Nachschlagewerk kompakt und leicht verständlich zum Rekapitulieren dargestellt.


Kurzüberblick zum Kurs

Essenzielle Prinzipien & Praktiken für Methodische Softwareentwicklung

Teil I  - Einleitung
Kapitel 1: Motivation

Teil II Die Entwicklungsumgebung
Kapitel 2: Grundlagen zu Entwicklungsumgebungen

Teil III Sicherstellung der Softwarequalität
Kapitel 3: Grundlegende Prinzipien und Praktiken beim Clean Coding
Kapitel 4: Clean Code und Architektur
Kapitel 5: Fehlervermeidungspraktiken
Kapitel 6: Fehlertolerantes Coding
Kapitel 7: Persönliche Arbeitsweise
Kapitel 8: Prinzipien und Praktiken beim Testen

Teil IV Agile Arbeitsweise
Kapitel 9: Agile Prinzipien und Praktiken mit direktem Einfluss auf die Codequalität
Kapitel 10: Entwicklungs- & Designpraktiken mit direktem Einfluss auf die Codequalität

Teil V Menschliche Faktoren
Kapitel 11: Soft Skills

Teil VI Anti-Patterns
Kapitel 12: Zusammenfassung der häufigsten Anti-Patterns in der Softwareentwicklung

Teil VII Zusammenfassung und Schluss
Kapitel 13: Zusammenfassung der wichtigsten Prinzipien und Praktiken
Kapitel 14: Schluss

©  JIOWA Business Solutions GmbH    -    Impressum   -   Datenschutzerklärung