The Clean Code Developer Grade
You don't just become a clean code developer, you become one. It's not about memorizing a few rules, it's about learning the CCD value system to really internalize it. This takes time and practice. That's why we have divided the CCD value system into stages, which developers climb one by one. However, we see the entire process as a circle: once you have worked through all the levels, you start again from the beginning.
Each development stage is assigned a color. And anyone working as a clean code developer at a level is assigned a CCD bracelet as a sign of his will to master it. Unlike in judo, the color does not correspond to a degree achieved, but to a degree in progress.
Black 0th degree
The black degree has everyone who has not yet set out on this journey. A black bracelet therefore only signals that you are interested in CCD. You can wear it if you have not yet fulfilled all the requirements for the first real degree.
Red 1st degree
The real path to becoming a Clean Code Developer begins with the red degree. Practice begins with the red degree. It therefore only contains elements of the CCD value system that are absolutely essential. Getting started should be as easy as possible. This level is therefore not so much about software development principles as it is about building a fundamental attitude towards software development and the Clean Code Developer.
Orange 2nd degree
Once the foundations for the process of continuous improvement have been laid in the red grade, the next step is the orange degree The aim is to apply some fundamental principles to the code and gain initial experience with the number one means of increasing productivity: automating processes. Since only correct code is good code, automation serves to check for correctness. It is therefore not about a nice-to-have feature of code, but about its essence.
Yellow 3rd degree
The Yellow degree is all about automated tests. The orange level was still about integration tests that could be applied externally. They did not necessarily require any intervention in the code. From the yellow level onwards, however, it is no longer possible without tests below the surface. And not only that: the smallest possible units should be tested, not just functional punctures. This means a change in coding practice, because otherwise individual classes cannot be tested in isolation, i.e. independently of the services used. This is why the yellow level also includes object-oriented principles, because only with them is it possible to detach the code to be tested from its "background".
Green 4th degree
In the green degree automation continues. This is simply the key to productivity and responsiveness. Only if as many software development activities as possible are automated can the CCD concentrate on the essentials: implementing customer requirements. Without automation, development often hinges on minor details - which costs time. Correctness checks and releases are then more of a punishment than a means to success. After automating the tests, however, production is now on the agenda. Testing code at the developer's workstation is one thing. Successfully compiling and testing it on an independent computer is another. This is the only way to find more or less subtle dependencies on the individual developer workstations. This practice is then garnished with further principles for code structuring and a tool for better architectures.
Blue 5th degree
With the blue degree we are entering the home stretch of the CCD value system. Automation needs to be taken one step further. After translation and testing, deployment is now on the agenda. Above all, however, the blue degree is now about aspects of software development beyond code and tools: CCD don't just look after good structures on a small scale, but plan them on a large scale from the outset. So it's all about architecture. However, as we are aware that no planning can define a perfect solution, not only architecture, but software development as a whole also includes a suitable process model. This is iterative and should be practiced during the work on the blue degree.
White 6th degree
In the white degree all principles, rules and practices flow together. Just as all colors are contained in white light, the white degree contains all other degrees. A CCD only works at the level of the white grade if it constantly has the entire Ccd value system in view. This makes it clear that only really advanced software developers with several years of experience and in a suitable environment can work with the white level.
Meaning of the degrees
The grades do not express a value. Someone who works on the blue degree is not "better" or "further" than someone who works on the orange degree. The degrees are merely a didactic tool to make the entirety of the value system "easier to digest". The many building blocks can simply be better assimilated in small bites than in one go.
That is why it is important to us that every prospective student starts with the red level. For didactic reasons, it is the best place to start - even if you think you already implement other values in your daily work. Regardless of current project practice, it is certainly new to deal so consciously with principles and practices. In particular, daily reflection on them is probably not yet a habit. The red level is then suitable for practicing them in the context of "simple" building blocks.
Even though we understand that anyone who wants the Value system If a person sees the red degree for the first time and wants to tick off what they have already taken to heart, this is ultimately irrelevant. Conscious practice within the framework of the value system is always new - and anyone who thinks they actually "deserve" the white degree should start with the red degree. It's not about "earning", but about iterations and small bites. Degrees are peepholes to the big picture.
Who the first Bracelet so it's best to order the red bracelet.
Further training
The Value system and the building blocks may look rigid, as if chiseled in stone. But they are not. It is always provisional until we or the community think that something needs to be changed. However, the world of tools and materials to which the value system is to be applied is even more in flux. Programming languages, IDEs, frameworks, platforms and server products are constantly changing, being added or dropped. There is a tendency for what could potentially be known and mastered to become more, much more. In the past, you were well served with a programming language and its standard library. Today, that is no longer enough.
Since professionalism means making informed decisions, the CCD has no choice but to constantly educate itself. In fact, software development is probably the industry with the greatest need for this. Aspects of continuing education are therefore part of several degrees (Orange, Yellow, Green). We want to make it clear that further training is always an issue, but must also follow a development. It is not possible to go from 0 to 100 in training in a single degree. It's not just software development that needs practice, training also needs to be learned.
However, the degrees are only about different forms of training (reading, networking, publishing). They do not specify how much time a CCD should spend on them. The reason: in our view, this is not form-specific. Training should account for at least 20% of working time, regardless of the form.
Yes, we honestly mean that. 20% of working time should be training time. So 1 day per 5-day week just for training. No less. Google demonstrates that this works: "This means that every employee is allowed to spend 20 percent of their working time on projects that are not directly related to their job. This is not monitored." (SourceInterview with Phillip Schindler, Head of Northern Europe at Google, Hamburger Abendblatt, November 7, 2007)
20% still sounds like a lot. But don't worry, training isn't so bad for those who have to pay for it. After all, training is not what you initially associate with it:
- Training is not a vacation
- Training is not an absence from the workplace
- Training does not mean that no benefit is created for projects
- Training does not necessarily require a high budget for training or software
Above all, training means room for error. In other words: During 20% of working hours, a professional software developer should not be afraid of making mistakes. In extreme cases, this means that the 20% are of no direct benefit to a project. Compare training with a musician's practice time. The musician has to perform on stage, preferably without mistakes. However, in order to maintain or even improve his skills, a musician must practice. Mistakes are expressly permitted, as otherwise no further development would be possible. Two different "modes of operation" are therefore required.
Only on the basis of such room for error is it a question of how it could be filled. The only requirement for possible content should be that a connection to work is recognizable. Anyone who uses the 20% leeway for private online property searches or sports in the company's own fitness center is not really continuing their education.
Examples of training content are
- Study of specialist publications (online/offline, blog/magazine/book/video)
- Trying out what you have read
- Technologies
- Procedure
- Tools
- Attendance at specialist events (training, conference, community event)
- Publication of own expertise
- in the company's own media (e.g. project wiki)
- on public platforms (blog, magazine, book, specialist conference)
Whether reading, experiments or publications are directly related to a project is of secondary importance. They can, but do not have to. A CCD can evaluate a technology with a view to the company project or just out of general interest. Benefits for the project arise in both (!) cases. Once directly, once indirectly. Because any knowledge of a technology or process, even if its use in the project is not yet foreseeable, broadens the horizon, i.e. makes you more experienced and gives you more options.
Note for decision-makers: Developers who undergo continuous further training are an asset. They are more experienced, more innovative, more flexible. This benefits your products.
Note for software developers: Those who continue their education become more valuable. They gain experience, are not stuck in a niche and are not a target for hype. This serves "employability".
Exercise practice
Becoming a Clean Code Developer takes time. We believe that it takes no less than 21 days per degree. Because according to psychology, people need 21 days (or 3 weeks) to integrate new things or changes in general into their lives as habits.
Anyone working at a CCD level should therefore proceed as follows: On the evening of each working day, the CCD reflects on whether he has adhered to the principles of his grade (and those below it). If yes, he keeps the bracelet on the arm where it is. If not, he changes the bracelet to the other arm! This is important, because the act of switching makes the developer aware that he needs to internalize the principles even better.
As soon as a developer has worked on a level for 21 days without changing their wristband, they can consider the level mastered, progress to the next one and put on its wristband.
Of course, there is no formal control of whether all principles have really been observed during a day. We therefore leave it to the honesty of each developer towards himself and the CCD community to judge to the best of his knowledge and belief. Since no grade is "better" or "worse" than another, it is not worth cheating anyway. We assume that developers who have mastered the white level will start again with the red level. In this way, they demonstrate their conviction that software development is continuous learning.