How to introduce a good process and how to de-politicize process
-------------------
I have not written any blog for a while, because I need a break after finishing ERAD (Enterprise Rapid Application Development, see my previous blogs), as a concrete example of “8 Core Programming Techniques”.
For a moment, it is almost perfect. However, it does not last long …
The setup of “8 Core Programming Techniques” is to ensure that it is not too high in the “architecture” and “process”, and it is not too low and buried in “coding” and “design pattern level designing”. The reason for that is that it then can “sense” all those things in a right amount of mix. In other words, it is set up in such a way so that it is sensitive to all levels and aspects of programming. As a result, I cannot stop blogging for too long, because here I can sense another interesting problem: how to introduce a good process.
---------------------
Immediately – if you read my previous blogs – you may say, you are an anti-process guy, why in the world do you care introducing a good process …
So, I have to say that, I am a pro-“anti-process-process” guy, or, you can say, I am a pro-TDD-process guy. However, because there are so many interpretations of TDD, so, let’s put that aside for a while, and let’s just say, I am a pro-good-process guy.
OK, so much for the word game. Let’s take a look of the reality.
Introducing a good process is not easy. A lot of times -- too many times -- process is politics. Management almost always tries to use process as an organizational tool. As a result, it is always a long and most of time painful process.
Note that after going through many of them, I totally understand that process is indeed close to politics. It is only “natural” that management (and actually a lot of developers or other “doers”) uses it as a tool for politics. I am not naïve; on the opposite, if you read my blogs, you know that I am very cynical about processes, any process, including TDD ones.
However, if you are really pro-process, you have to agree that process is a serious engineering domain. I believe that to introduce a good process and to de-politicize process are the two sides of the same coin. Yes, in other words, the primary obstacle of introducing a good process is to politicize the process.
Let’s make it even more confusing: actually, good politics always give a common and relatively stable goal for everybody, so, it is not politics; it is about bad or good politics … -- OK, let’s do not make it so confusing, let’s assume “politics” is a bad word in engineering domain …
Again, note that there is a lot of human psychology in process. So, saying that process is in engineering domain does not mean it is all about machine. It is human-psychology engineering also. However, it is not politics … I know, it is confusing, and that is exactly the reason that we are so easily got confused about this.
Before I get confused myself, before it is too late, let me keep it simple: there are two approaches:
A. Introduce it by hiring a well-known consulting company to give a 2-week training courses for everybody, managers and developers and other “doers”, the same time, the same classroom;
B. Announce that we begin to use process, then, baby steps, try one thing, and if it seems good, then bless it as part of the process.
Based on my long time experiences, although approach B sounds benign and innocuously common sense, it is actually the source of all problems.
You may ask: what process you are talking about: TDD or RUP or others? To be frank, it does not matter, as long as it is “good” -- they are all similar: they are all about the art of the waterfall with iterations. The key is that “software development process” looks like common sense and is similar to management basics; however, without proper systematic training, it is almost inevitable to mess it up big time. Everybody can say he/she knows “process” until making a big mess. Software process is not just like other management basics; before you have real experiences, you got to get it via systematic training.
Let’s stop here, and think about it for a while ;-)