From my theoretical point of view I knew that Uncle Bob's Clean Code was the right approach to go. This was what I wanted to head for not only personally. I also wanted to work with developers who understand and foster their own software craftsmanship in that way: writing clean and SOLID code, following XP practices, and valuing Agile principles.
In November 2009 I started to contribute to the Agile Skills Project for quite a while but unfortunately this project was running into a dead end in the last months. I still hope it will continue somehow but this is another story for another blog post.
At about the same time in November 2009 I attended a session of Stefan Lieser talking about the Clean Code Developer (CCD) initiative at XP-Days 2009, Germany. For in-depth information take a look at
CCD was exactly what I needed. It it based on four values which always should be focused by developers:
- Evolvability - take care that software is able to be changed easily and at a reasonable low price late in a project or even after years of production.
- Correctness - software is correct if and only if all functional and non-functional requirements are implemented
- Efficiency of Production - short development time, automated tasks, and low bug ratio are necessary to be efficient
- Reflection - learn and improve often and early (on all the individual, the team, and the organizational levels)
These are good values to follow but they are quite too abstract to know how to do it. Ralf Westphal and Stefan Lieser, founders of the CCD initiative, did a great job with structuring lots of principles and practices and giving easy-to-start guidance to developers.
The whole system is divided into seven colored grades of which five contain specific principles and practices. A CCD developer starts with the first (red) of these five grades and works with the given principles and practices until she has reached a proficient level in this grade for at least three weeks in a row. Then the developer turns to the next grade and continues cycling through all the grades. This grade system provides an easy way to start with specific things and increases a developer's focus.
So I started with the red grade a while ago and will post my experiences on a regular basis here on my blog.