Hero image

Clean Software Engineering Deep Dive

A common thread through the depths of software development

  • In-house

  • Online, In-person

  • Developers (DevOps)

  • 2 days

  • German

  • Price upon request

About this training

In the age of distributed systems, software projects are becoming increasingly complex. At the same time, they must be able to adapt to frequent changes in requirements. On an organizational level, these changes are met with agile process models. However, the software itself must also have the necessary flexibility to implement the changes.

As a result, the software development community has developed successful approaches to better manage the complexity of software while ensuring the necessary flexibility. This workshop will highlight the challenges of developing complex software systems and how maintainable, flexible, and sustainable software can be created incrementally. The approaches used are language-agnostic. Accordingly, the acquired knowledge can be applied in almost any development context, independent of special technologies and programming languages. However, it is not a one-size-fits-all approach, but rather a toolbox of principles, practices, and patterns that can provide valuable guidance to skilled developers in making design decisions. 

The solution approaches presented are derived step by step in the course of the training, so that not only the question of "how?" is answered, but also the question of "why? This results in a common thread that enables the participants to find their way through the depths of software development even after the end of the training.

The language for the application examples can be chosen between Java, Python or C++. The participants do not necessarily have to have in-depth knowledge of the language. However, they should be able to understand rudimentary source code written in the language.

In the process, the following questions, among others, are answered

  • What are the challenges we face in the software development process?
  • How can I evaluate the quality of my software design?
  • What is technical debt and why is development speed decreasing because of it?
  • What is software architecture anyway?
  • Why should components within a software system know as little as possible about each other?
  • Given the plethora of options, how do I arrive at a design decision?
  • What characterizes a flexible software design?
  • What are the SOLID principles?
  • What are the advantages and disadvantages of individual design patterns and what are the principles behind them?
Code wird auf einem Computerbildschirm angezeigt, der auf einem Schreibtisch steht


Required knowledge

You should be experienced in the use of a programming language.

Technical requirements

For our online trainings all participants need ...

  • a computer with Internet access.
  • a stable Internet connection.
  • an updated browser, preferably Chrome.

Course of the training days


  • Sustainable software development
  • Motivation for sustainable software design
  • Quality criteria
  • Traditional vs. Agile
  • Types of complexity
  • Cohesion and coupling
  • Basic concepts for organizing complexity
  • Refresher: Object orientation
  • Design Principles: SOLID & Co. with application examples


  • From principles to design patterns
  • Collaborative implementation of a sample application
  • Consolidation of the learned content of the previous day through practical application
  • Discussion of design decisions
  • Recognizing and deriving design patterns

Additional modules

We support you every step of the way – from advice to implementation:

Additional trainer day

We answer your individual questions and deepen or expand topics.



Trainer Jan Linxweiler

Jan Linxweiler


Trainer Sören Peters

Sören Peters


Trainer Sven Marcus

Sven Marcus


We reserve the right to change the trainer

Provided by

iTUBS Logo

You've got questions?

Then please have a look at our FAQ or contact us directly.

To the FAQ

Your contact

Julia Scherzberg