Process – How to develop one that is not stupid
“Process” in the software development world has been characterized with colorful adjectives. I am here to defend it.
What is about the word “Process” that makes people run fro cover? I see a lot of people who turn to Agile, not because they realize its worth, but because they think it frees them to do what they want, how they want. Agile is discipline, folks and you can do it only if you have the maturity to handle that discipline on your own.
Here, I am defending a process that is simple, provides clear roles and responsibilities, is changed appropriately when needed and most importantly, the one that is applied well. I am not defending a rule book written in circa 1800.
I hear you. You are saying that process as I defined is not the one that you see everyday in countless organizations. Right. But I ask you, is that the fault of the process? Did it slowly creep into your organizations? No, we wrote it. We are the ones implementing it. We are the ones hiding behind it.
A process is nothing but a set of steps we write to accomplish a particular task. We write it down so that others may follow the path easily and when we have thousands of people doing the same task, we don’t want everyone to do it differently, unless circumstances require.
These exceptional circumstances occur more frequently in the SW dev world than in other places like manufacturing (that is why concepts in manufacturing don’t lend themselves well to SW, but that is for another day).
So what do we need? We should define processes that result in desired outcomes. We need to create awareness that a process needs to be adopted and adapted as the situation changes to make it effective. Let us look at some things that we can do to define a process that is not stupid.
1. Define the Why
There is a better chance that people will follow the process if it is clear why and the why is “reasonable”
For example, for software configuration management, the “why” is to ensure that code is checked-in frequently (to avoid crashes or overwrites), follow naming conventions (to easily determine what the file does/belongs by looking at the file name), follow the structure (to modularize code) etc.
2. Minimize Forms
If people have to fill out forms for every step of the process, be sure that will never be followed. While some amount of paperwork is necessary, it should not detract from actually performing the task. The biggest mistake I see people make is trying to get a lot of information filled out, even when that information is not required or may not be used. There are two reasons for this:
- Incorrect interpretation of process frameworks like CMMI or ISO
- When something goes wrong, find out where and why. The failure points are minimal, but to have some documentation for those failure points
3. Practitioner-led
Every activity, whether defined by a process or not, has to be done by someone. Why not ask those people to define the process? It is well-recognized that when a team of practitioners own the process, the adoption is much higher. Do we want someone sitting in an ivory tower to tell me what to do? Nah.
4. Automate
Look for ways to automate as much of the process as possible. If you are capturing information, don’t provide forms for people to capture data. Use tools or write scripts to capture and present that information.
5. Teach people to change it
Make it clear that the process is not sacred. When people start to feel it is not working or not comfortable any longer, change it. Fiercely implement a culture where people can voice their concerns about something that is not working for them.
6. Never talk about the stick
We all know about the “Carrot and Stick”. In this case, however, never ever use the stick. Are we cattle to be driven ahead? Lead us and we’ll follow. What this means is don’t penalize when someone does not follow it. It could be that the process is not usable under stressful situations or the leadership does not care about it. If the manager asks the team to forget about the process just for this urgent request, it shows that the manager does not think the process is useful!
If we follow some of the common-sense principles, any process can be made simple and usable. Otherwise, we will end up defining a complex “Agile” process!
Do you still think Process is stupid? What would you do to help people follow a method that can help them be productive, yet have fun?
Related posts:





[...] In Process – How to develop one that is not stupid, we looked at how we can develop a process that empowers people to do to their thing and not stand in their way. But how do we actually develop one that can assist us in achieving the above goal? Using the concept of Six Honest serving men, we can define a system for activities that involve more than one person. Some of the following content may overlap with other posts, but that’s because they are all related (or maybe I am too dense to write one that explains all). [...]
GovernIT » Blog Archive » Defining a Process? Use the Six Honest Serving Men
13 Dec 10 at 12:55 pm
[...] or even a simple process definition has failed. You have taken the necessary steps to see that you are not defining a stupid process and provided guidance on how to define processes. It still failed, sob. Once you have gotten over [...]
Common Mistakes in Process Improvement Initiatives
22 Dec 10 at 12:31 pm