Best way to ensure processes are followed
We’re constantly tweaking and improving our processes at work when we see an opportunity to grow. We leverage Sharepoint a lot because its readily available and easy to setup. We have policies around how we work on projects as far as how we document projects, source control, issue management, etc. with most of these policies involving Sharepoint at some level.
Our process works well – when we follow through on it. Its sometimes difficult to find the discipline to always follow the letter of the law. For instance, I may see something wrong in a project, so I’ll go and fix it, check the change in, and its done. What I should do is open a new issue, document it, and link my code checkin to the issue so we know what was done to fix the problem.
For processes to be most effective, they need to be followed by everyone on the team consistently, which can be a struggle. Its especially hard if the processes you want to implement are a pain in the ass for the developers. Consider a hypothetical scenario where in order to fix a bug you were required to walk around to every developer in your company and tell them verbally that you were fixing a bug, what you were going to do, etc. It would never happen, its such a waste of time that people would just fix the bug and get on with life.
The best process is one that can’t be circumvented. In the above scenario, I can choose to not go to every developer, I can just fix the bug. Since that policy has ways of getting around it, you run the risk of some people following it, some people who “kind of” follow it, and some people who flat out ignore the policy. Instead, if there was some way to guarantee that everyone follows the same procedures, you’ll get the most consistent results and accurate data. The way you guarantee that everyone is doing the same thing, is to latch on to something that eveyone is already doing. If there was some action that you know everyone already does and you can somehow associate your process with that action, you can ensure that everyone does it. I think the pressure point that can fulfill this requirement is your source control.
Every developer needs to checkout code from the repository, and they need to check it back in after they’ve made their changes. Its unavoidable, and everyone is already doing it. If you can inject policies into the code checkin, people have no choice but to complete the necessary actions. If you require that they’ve entered the bug or feature into your bug/feature tracking application by forcing them to put the issue number in the checkin comments, then you have a good start on getting everyone on the same page. You can even extend it past that. You could have them enter the number of hours spent, the estimated hours, etc. and by doing all this as part of a checkin, its going to get done, because it will have to, it can’t be circumvented.
I haven’t research many source control tools to see what kind of existing functionality they have in this space. I’d be willing to bet that Vault has some sort of policies that can be applied. Not sure about SVN, CVS, or Source Safe. I do know that SVN has the concept of hooks so that you can write custom apps that intercept the checkin and do whatever you want. This is something that really interests me, so I’m going to be doing some more research to see whats currently out there. I think you could have a really streamlined, lightweight process that still generates plenty of useful project data by collecting the data on checkins.
(This entire post assumes that you embrace a process-driven environment, which I believe is not advocated by some of the agile/scrum community, I think they focus more on the people rather than the process, correct me if I’m wrong here.)