All in all it took me 10 years to earn my Computer Science degree. I am very glad that I did it but I am sad to say that I learned only a few things that would help me to write production quality software. Since then I have been scouring the Internet and learning as much as I can about becoming a better developer. I have had no real feedback mechanism except for two things. 1) I am always doing the best I can at any given moment and 2) I am never happy with what I was doing 6 month prior.
This has been a great learning experience for me but I have found that the interdependence of tools and techniques makes it difficult both to learn and teach them to others. I always felt that there should be some kind of organized curriculum or learning path that people in the industry can follow to improve their skills. And that is exactly the idea behind the Clean Code Developer Grade system (translated from the German).
The Clean Code Developer Grade system (CCD-Grade) is a graduated collection of principles, rules and practices which a software professional can use to produce "cleaner" code. It is based partly on the contents of the book Clean Code by Robert C. Martin. The grades (often called Degrees, the translation isn't entirely clear) are each designed to focus on a particular aspect of software development and are assigned a colour as follows:
Black - This is the ground floor. Earning the Black Degree is a matter of wanting to improve your skills. It is intended for those that are motivated but don't know where to begin or are unable to start due to project considerations. In order to advance beyond the Black Degree you need only to start actively working on the items covered by the Red Degree.
Red - This is where the work truly begins. A practitioner earning their Red Degree will begin to learn the fundamentals of the CCD approach to software development. The Red Degree encourages simplicity, understanding, control and reflection.
Orange - Once the groundwork for continual improvement have been laid the practitioner enters the Orange Degree. This Degree provides insight into process automation (which is really just a form of abstraction) and readability. It also introduces the practitioner to integration testing.
Yellow - While integration testing first appears in the previous Degree the Yellow Degree promotes automated unit testing and all of the principles that help to achieve it. It introduces Code Coverage Analysis as well.
Green - The Green Degree returns to the topic of automation in the form of continuous integration. While there is talks about static code analysis and discusses some techniques to "future-proof" your code
Blue - The Blue Degree encourages practitioners to focus software design. It includes concepts like: The code is the documentation, YAGNI, Test-First and Iterative Development.
White - Finally, the White Degree encompasses all the prior Degrees and shows a commitment to writing Clean Code.
It is worth noting that the although there is an inherent sequence to the grades, they do not denote any kind of value judgement or scale. That is, a practitioner who has "taken the blue" is not better than one who is has only "taken the orange". In fact the CCD-Grade system encourages those at the White Degree to re-take the Red and start again. This is to foster a continual re-evaluation of skills and techniques as well as to promote humility in the CCD practitioner.
While I feel that I am somewhere in the middle of this journey at the moment I'd like to start at the beginning again and formally work my way through the Degrees as a method of crystallizing my thoughts.
If you are keen to follow along with me then I encourage you to find some way to "take the black". The CCD website sells armbands but any way you have of showing your dedication is fine. For each Grade I intend to create a post about each of the principles, rules and practices found in that grade.
No new comments are allowed on this post.