Clean Code Trainings
My live in-person trainings fit your needs from small to large, from inhouse to off-road, from on-site to online.
It’s all individual trainings based on successful patterns
My clean code trainings take it from where you and your team(s) are. They are highly individual in how I present the syllabus. No two trainings are the same because the people and their experiences are all so different. That said there are patterns that seem to work across trainings: training groups should not exceed a certain size, all stakeholders should be on the same page, attendees benefit from regular coaching “in small doses” etc. This is reflected in the basic structure of how I suggest to start your journey towards longterm high productivity.
1. Alignment day
Getting everybody aligned is most important when you really want to make a difference. Hence I suggest to assembly all stakeholders at least once to learn about the fundamentals, i.e. the conditions for the possibility of higher longterm productivity.
Alignment is about motivation and consciousness.
2. On-site kick-off
With everybody on the same page real training can start. A group of developers, most probably a team, is selected to get started with actually learning principles and practices of high longterm productivity.
In a one or two day on-site training we get to know each other and go through lots of discussions and exercises and reflections.
3. Online coaching
After the kick-off the training group continues its training online.
Every other week we meet online to review “homework”, learn about new principles and practices, and select an exercise for “homework”.
This serves three purposes:
- to get feedback,
- to learn new things,
- and last but not least to really keep going, to stay focused on the topic.
Online coaching is the most individual and most flexible training option.
Doing in-person trainings usually happens on-site in a seminar room. That’s fine, it works – but the impact is somewhat limited.
That’s why I love to suggest leaving not only the much trodden paths of programming, but also the company. At least for a while during the training.
Meeting off-site in a very different, even beautiful location close to nature really helps to get the mind unstuck and to open it for a variety of inputs.
Online and on-site training, meeting virtually vs. in-person both has its advantages (and drawbacks). That’s why the biggest benefit comes with mixing both approaches:
At the heart of how I do trainings are regular online meetings complementing the “homework” each training group is doing on its own.
But after a couple of months working in this mode it’s beneficial to get a “purpose refuel” by actually getting together again in one place.
Online learning is for focussing, offline learning is for defocussing. Online learning is more about the individual, offline learning ist more about the group.
The alignment day is targeted at literally everyone affected by the changes needed in software production for high longterm productivity. That’s not only developers but also product owners, Scrum masters, business analysts, project leaders, product managers, and managers. Sometimes even sales people participate and profit from it.
The purpose of the alignment day is to equip all participants with a shared idea of what lies ahead of the organization if it embarks on the journey towards sustainable software development. Because that’s much more than just programmers writing code in a different way. Clean code is but just one aspect of the overall change needed. Without a “clean process”, without a common view of how software development actually works, and why it so often does not run smoothly, without a shared understanding for the reasons behind “the brownfield”, a “clean code training” will not have a lasting effect.
Among the topics discussed during the alignment day are:
- The three categories customer requirements fall into
- The historical evolution of attention to requirements in software development
- Intentional attention designer for software developers
- Promise like a pro – the prerequisites for reliable software development
- Directing change efforts to where they make the biggest impact (the basics of the Theory of Constraints)
- Why common software processes succeed or fail?
- Of the importance of automated testing and test-first development
- What makes software development so difficult in the first place?
- The bane of software development: functional dependencies – and what to do about them
- Also see flow-design.org
Depending on the audience of an alignment day the topics discussed might be more or less technical. In any case at least 4 hours can (and should) be focused on non-technical issues, so that participation is worthwhile for non-technical stakeholders.
The alignment day – usually taking from 9:00 to 16:30 – scales well. 5, 25, or even 100 and more participants are possible in general. But of course interactions decrease with an increasing number of participants. An audience of size 20 to 50 is working well in any case.
No laptops are requirement. Taking notes, however, is very welcome. The goal of the alignment day is not to actually learn anything. There will be no exercises. Rather it’s about coming together in one place to demonstrate a shared interest – that’s one of the reasons why management attendance is important – and develop a common understanding of what the problem is and how the road towards a solution might look.
During the alignment day I’ll be mostly “in presentation” mode working on flipcharts/whiteboards. I don’t use Powerpoint slides. And I probably won’t be showing any code.
Participation in the alignment day is 100€ per person, but the minimum price is 2500€ per day. Please inquire for a special price for an audience larger than 50.
(Purchase price plus VAT where applicable.)
The kick-off is the beginning of actually learning principles and practices of clean code development and beyond. It’s about doing exercises alone or in small groups/pairs. And it’s about discussion and interaction, not just listening.
My approach to sustainable software development is eclectic and provocative. I’ll provide the reasons for all that I’m teaching – and I’ll ask for the reasons why participants are doing what they are doing.
The very interactive nature of my training style and my sometimes non-conformist views/explanations require training groups to be fairly small, i.e. usually not larger than 10 participants. Otherwise the differences of experience among the participants are hard to cater to and discussions will become tedious.
Among the topics discussed during a typical kick-off are:
- The case for automated tests
- Types of tests: acceptance tests, integration tests, component tests, module tests, scaffolding tests
- Testing approaches: classical TDD, informed TDD, TDD as if you meant it
- Choosing a context appropriate testing approach based on the Cynefin framework
- Aspects of understandability like readability, clarity, functional independence
- Bridging the requirements-logic-gap
- Formalizing understanding at the end of the analysis phase
- Also see flow-design.org
Usually the kick-off starts “at the bottom of software development”: with implementation. Online coaching and additional training days then work their way up from there.
However, depending on the participants or a specific project situation, a kick-off can of course start by looking at high longterm productivity from a different angle.
A training day from usually 9:00 until 17:00 is about practice informed by theory. The basic tools needed are computers for all participants with the regular development tools on them as well as internet access. Code will be written and reviewed in several iterations. That also requires a projector with a way to connect it to all computers.
I don’t present any Powerpoint slides, but write and draw on flipcharts. The results of that will be put up on the walls of the training room.
Participants are encouraged to take notes for themselves as I don’t provide handouts. The content is in flux and adapted as needed to each training group.
A kick-off usually takes two days. That allows for building a solid foundation for subsequent online coaching sessions.
Participation in a training day is 280€ per person per day, but the minimum price is 1500€ per group per day. Maximum group size: 10.
(Purchase price plus VAT where applicable.)
Online coaching sessions are the most flexible and intense form of training I’m offering. I’d even go so far as to say their effectiveness is twice that of on-site trainings: eight hours of online coaching might take a group as far as 16 hours of offline training – provided that training groups do their homework between online sessions.
Meeting online is short and to the point. Session can easily be scheduled for a small group where nobody has to leave his/her workplace.
In online sessions differences in background and experience can more easily be dealt with.
Among the topics discussed during online sessions are:
- Way to declaratively design software
- Data flow design “in 3D”
- Avoiding functional dependencies
- Translating designs into code
- Software architecture free of functional dependencies
- Radical object-orientation
- Modularization of code beyond classes
- Incremental requirements analysis aka “Slicing”
- Principle-based software development beyond SOLID
- Leveraging division of labor for higher productivity as a team
- Also see flow-design.org
Participants learn how to “think before coding” and to collaboratively analyse/design software using lightweight visual tools.
An online coaching session is 60min to 120min depending on the needs of a training group or the content.
All participants needs headsets and a webcam while sitting in front of their computers; that can be in the office or at home. (Several participants gathered around a webcam and using a shared mic usually don’t work well for several reasons.)
Additionally is can be helpful to provide participants with some drawing device (e.g. iPad plus Apple pencil) to be able to use an online whiteboard for shared drawing.
A usual block of online coaching consist of 16 hours per training group.
Participation in an online coaching session is 45€ per person per hour, but the minimum price is 150€ per group per hour. Maximum group size: 5.
Please note: Online coaching is paid in advance.
(Purchase price plus VAT where applicable. Should an online appointment be cancelled by the client less than 48 hours before, then the allotted time has to be paid for nevertheless. Should I cancel an appointment less than 48 hours before, the client will get the session for free on a later date.)
Off-site trainings are about engaging mind and body. They are intense learning experiences which deliver content as well as camaraderie.
Participants not only advance their knowledge but also learn to reflect on other activities and how from them insights for software development can be gleaned.
Off-site trainings are for training groups who really want to get to the next level.
I like to call off-site trainings “retreats” because they remove the participants not only from daily workplace craziness but also the overall context of their business. An ideal starting point to really question deeply ingrained habits.
Off-site days are a combination of on-site training and some bodily activity like hiking or mountain biking.
Usually the day starts with 4 hours of training which is followed by getting in touch with nature for 2-4 hours in the afternoon. And then, in the evening another 2-3 hours of training wrap up the day.
The physical exercise is moderate and no participant “is left behind”.
An off-site training usually takes 5 days.
Please inquire for the pricing of off-site trainings.
Do you want to produce more value and less waste?
What do say? Are you interested in what all this could mean for you, your team, your organization? Great! Click the button and
write me a quick email with your questions and maybe a short description of the situation you’re in.
I’m looking forward to hearing from you!