Write It Down

A basic tenet of a good software process is that it needs to be documented. This may seem obvious. But you would be surprised how many time the new guy comes in, and must spend a lot of time asking people how things are done. This does not mean a lot of detail needs to be written. And it does not have to be very formal. It just has to been accessible and practical.

I have seen another problem with software process documentation. Often times there are huge documents that are supposed to document the software process. However when read, these documents are actually full of fluff that do not correspond to the actual process being used. This is worse than no documentation. It is lip service to the software process.

In the past I have lead software teams. Some times I had implemented a hands-on approach where I oversaw all aspects of my team's work. In other cases I just wrote out a handful of well-documented process pages, and let the team follow them as I spent more time coding. Guess which option was more fun for me?

Let it Begin

I am a firm believer that a good software process can be a major component of development success. This becomes more important when you have a staff of mediocre programmers. Left to themselves you can get a software disaster very quickly. But a documented process can help guide the sheep to deliver in a predictable manner. I use the term sheep lightly. However software is a challenging profession. There are a lot of developers who are not here but are not entirely up to the challenge.

Even outstanding developers can benefit from a well defined software process. This let's them concentrate on the more important tasks of development like solid architectural design. For the rest of the mundane tasks, they can just follow the process. Their minds will be freed up to continue to be productive on solving the truly hard problems.

If instituting a good process was simple, more software project would be successful. But creating and enforcing high quality processes is in itself a significant task. The great thing about really good processes are that they are self-correcting (process improvement). Hard work up front can result in less headaches later. I plan to explore such processes in this blog.