I have been a part of a number of different development styles and processes.? Some were well suited for the task at hand, and others were broad strokes that were applied in the sake of either consistency or simplicity.? Still others were simply band-aids applied to address some disaster in the projects past.?
I much prefer an organization that has taken the time and effort to find and fit a development process that matches their development style as opposed to mandating down from on high the one true process.? Of course, these projects are often in conflict with the so-called “process-nazis”.?
I have encountered 2 types of “process-nazis”.? The first type is usually a new employee or project member that comes from a team or school that used the “one true process”.? This person will inevitably attempt to discredit any guidelines that are different from the process they are accustomed to simply because of their difference.
The second type is usually a believer.? These are folks who are always looking for a quick-fix to their problems.? They usually latch onto the current “in” process and promote that for every situation.? They are identified by their blind devotion to the strict tenants of whichever process they are promoting.? No impurities are allowed to pollute their vision.
I tend to avoid these “process-nazis” like the plague.? I have found that the longer I spend with them, the more sense they begin to make, until slowly the reality that each project is different begins to fade into a blurry thought that is easily swept away.? This inevitably ends in disaster.? If you have ever shipped a release that failed to even install you will understand the dangers that occur when you blindly apply processes without respect to the actual needs of the software.
This happened to me on my last project.? Our build process was essentially brought forward from the build engineer's previous project.? It emphasized speed and assumed a large QA component along with rapid turn-around? The problem was that the new project needed to emphasize perfection, because once the software was released, our customers would not be able to receive another version for weeks.? So the build process that worked perfectly when you could simply rebuild a new release at any time, failed spectacularly when the rebuild process could not occur until much later.
In hind-sight, this failure surprised no one, but at the time, no one thought to ask questions about the process.? We were all more concerned about simply having a process.? These days, I am far less worried about what the process is as opposed to why the process is the way it is.? When I encounter a new process, I try to determine why the guidelines exist.? I ask the team why they do things the way they do things.? If I see an opportunity to suggest an improvement, I will attempt to determine why the current requirements exist, and, depending on the response, I may suggest the improvement.
Chances are that if the team has already taken the time to tailor their process, they will be receptive to new ideas, especially if you take the time to determine why things are the way they are.
If the change is approached simply as “this isn't mine and so isn't right”, you will probably not make much headway, but by being pragmatic about the benefits you can likely make some substantial improvements.? Of course, most of the time, when I find a team that is interested in customizing their process, they generally have compelling reasons for each step in the process, and when they don't they are always eager to re-evaluate and re-visit any and every step.
This is what I want.