Friday, May 25, 2007

Software Process Improvement - Critical Chracterstics

When you start work on improving your software development methodology, you feel that you need some framework or process to carry that task. Here I will try to put some guidelines about getting that exercise done.

Let's take a scenario; your assignment is to develop and deliver a development methodology framework for your client (or your team).

Your assignment should be,

1. Focused and Result oriented i.e. You want to see the results and are not trying to fill the file folders with heaps of good looking documents and diagrams. You know your objectives well.

2. Iterative process with milestones: You have a plan in place. You understand that you can not achieve all in one go and you have to make the improvements in multiple iterations.

3. High level of development team participation: You are not working alone in isolation. You are expected to incorporate the development team's feedback into your work as they are the real people who feel the pain.

4. Only necessary process documents and less garbage: Again, you have to be very critical of the documents that you suggest to be developed as part of the development process. First, only necessary documents, second, the documents should be precise and to the point. Prefer tables, charts over lengthy paragraphs to communicate the information.

5. Adopting best practices, only if applicable: No silver bullet syndrome. Best practices might not be appropriate for your environment no matter how 'hot' they are in technology world. Adopt them if you see that they will deliver the results, otherwise don't waste time.

6. Living documents: This is very important. Your process and practices will not always remain the same so should be the process documents. The process documents should reflect the current picture of the development environment. Ideally (yes ideally!), whatever written in the docs is what we practice.

7. Pilot implementation of newly developed methodology: Pilot implementation should be the part of the methodology development process. A pilot implementation would offer you a chance to test your recommended processes and practices. It will verify how practical those recommendations are in real world. Also it would help the developers in adopting the processes as they will have an end to end process sample to follow.

9. Communication Plan: Communicating the newly developed processes should be the part of the process improvement exercise.

Next time I will discuss specific steps that you can take to come up with some practical development methodology and framework.