The Path to Clean and Sustainable Code

FROM THE PAIN OF …

  • Growing technical debt: Over time, code becomes increasingly difficult to manage, and adding new features slows down significantly.
  • Inefficient code reviews: Discussions about code quality are often subjective, leading to endless debates with no clear resolution.
  • Unclear standards: The team lacks a common understanding of what good code is and what it means to behave as a professional developer.
  • Poor team communication and collaboration: Developers work in silos, problems aren’t openly addressed, and code quality suffers as a result.

TO THE JOY OF …

  • Clean, maintainable code: Your code remains understandable and extensible over time, allowing you to steadily reduce technical debt.
  • Efficient and objective code reviews: Discussions about code are factual, efficient, and based on shared standards that the whole team agrees on.
  • Clear, shared standards: The team has a unified understanding of what professional code is and how a true software craftsman behaves, based on binding principles.
  • Strong team dynamics: Open communication and strong team cohesion ensure that problems are identified and solved before they escalate.

In our three-day workshop, we tackle these issues head-on. We guide you through proven principles and methods such as Code Smells, Clean Code, Software Craftsmanship, and Mob Programming. Together, we create practical solutions, establish clear standards, and improve team collaboration. Through deep exercises and reflection, you’ll elevate not only your technical skills but also the team dynamics to a new level.

Day Zero

Remote

Preparation Phase (1-2 weeks before the workshop):

Team members will be assigned tasks for preparation, which will take approximately 1.5 hours. These tasks include identifying code smells and reviewing the most important chapters from the Clean Code book. The goal is for each team member to have already formed an opinion about what constitutes good code to discuss this during the workshop. The coach provides feedback and corrections. The results will be compiled into a documentation that the team can use after the workshop.

Day 1

Remote

Uncovering the Code Smells – Mastering the Foundations of Clean Code” (Remote)

• Code Smells (approx. 25): An introduction to the most common code smells, with the goal of developing a shared vocabulary.

• Distinction between Light and Tough Smells: Participants learn which smells need immediate attention and which are less critical.

• Costs and Impacts: We will examine the financial and technical costs caused by code smells.

• Clean Code: The team will analyze the key chapters from the Clean Code book and decide which principles are considered good code and relevant for the team.

  • Understanding and identifying 25 code smells
  • Differentiating between light and tough smells
  • Developing a shared vocabulary for Clean Code
  • Discussion of key chapters from Clean Code and team decision on relevant principles

Day 2

In-Person

Day 2: Elevating Professionalism and Mastering Refactoring (In-Person)

• Software Craftsmanship Presentation: The day starts with a discussion about what makes a professional developer. The goal is to guide the team toward a binding agreement on how professional developers behave and interact with colleagues. This agreement is a key point for future conflict resolution and contributes to the long-term improvement of team dynamics.

• Exercises in Small Groups and Mob Programming: Participants work in small groups (3-4 people) using Mob Programming to examine the code, perform refactorings, and discuss solutions. Prepared code examples will be analyzed, and different approaches will be tested.

• Reflection and Discussion: Significant time will be dedicated to reflecting on the thought process and solutions.

  • Software Craftsmanship and the professional attitude of a developer
  • Mob Programming for efficient refactoring
  • Micro-commits and extensive use of IDE shortcuts and automated refactorings
  • Cyclomatic complexity / Cognitive complexity
  • TDD and ATDD
  • SOLID principles
  • DDD (Domain-Driven Design)
  • Inversion of Control
  • Design patterns, particularly common ones
  • Distinction between code design, software architecture, and system architecture

Day 3

In-Person

From Theory to Reality – Applying learnings to your own codebase (In-Person)

• Individual Focus Areas: The third day is designed to be flexible, allowing the team to delve into specific topics or introduce new aspects based on their needs.

• Working on Real Code: Teams will have the opportunity to make changes directly to their real code in small groups.

• Final Discussion and Reflection: At the end of the workshop, a closing discussion will take place to reflect on what has been learned, promoting a sustainable improvement in team communication and code quality.

  • In-depth practical work on the team’s real code
  • Flexible work on team-relevant topics
  • Applying learned principles to real-world issues