The Best Software Development Process
I've seen this pattern over and over again in almost every programming shop I've worked in. A group of people take it upon themselves to "improve" the software development process. Sometimes they would attend a workshop, or read about some magical system that promises to fix all problems in developing software. These would normally entail imposing some rules and system that the programmers are supposed to follow, and everything will be alright. These systems come in various names such as "ISO 9000", "Rational Unified Process", "UML" "CMM Certification", "Extreme Programming" and other names too numerous to mention.
Managers and non-techie types are usually delighted to enforce these procedures to keep programmers in check and make them replaceable. Some of these systems even have some rational basis but end up being perverted to some form that has little resemblance to the original intent. It even manages to fool some of the programmer types who are sick and tired of missed deadlines and failed software projects and are desperate to try anything new.
Based on my experience, these systems always end up doing more harm than good, and they always make life more difficult for the programmers. Worst of all, they shift the power over to the managers, requirements analysts, and non-techie types - power that should be in the hands of the people developing the software in the first place, the programmers. I never liked these systems and I never will. Why so? Because I believe that the best and most practical decisions should be in the hands of the software developers. The best system for making sure a project will succeed is by getting the best developers for the job, and giving them the freedom and leeway to do what is best for the project.
Systems such as ISO 9000, RUP, XP, and its ilk are an advantage only if you treat your programmers like livestock that can be easily disposed of and replaced with new pets. Or if you don't trust your developers to be good enough to do the job, so you impose lots of rules and restrictions to make sure they don't mess up. It's like playing not to lose rather than playing to win.
What you want to do is to get the best developers to be interested in their work and love the project. Then they will give their best effort and make tremendous sacrifices to produce the best quality code possible. Ideally, you get a couple of great developers with lots of experience in writing good software in the past, then combine them with good, young coders who lack experience but are eager to learn. That for me, is the best software development process.
Plus, it's more fun too. I want my work to be fun. I don't want my work to be like work.
Managers and non-techie types are usually delighted to enforce these procedures to keep programmers in check and make them replaceable. Some of these systems even have some rational basis but end up being perverted to some form that has little resemblance to the original intent. It even manages to fool some of the programmer types who are sick and tired of missed deadlines and failed software projects and are desperate to try anything new.
Based on my experience, these systems always end up doing more harm than good, and they always make life more difficult for the programmers. Worst of all, they shift the power over to the managers, requirements analysts, and non-techie types - power that should be in the hands of the people developing the software in the first place, the programmers. I never liked these systems and I never will. Why so? Because I believe that the best and most practical decisions should be in the hands of the software developers. The best system for making sure a project will succeed is by getting the best developers for the job, and giving them the freedom and leeway to do what is best for the project.
Systems such as ISO 9000, RUP, XP, and its ilk are an advantage only if you treat your programmers like livestock that can be easily disposed of and replaced with new pets. Or if you don't trust your developers to be good enough to do the job, so you impose lots of rules and restrictions to make sure they don't mess up. It's like playing not to lose rather than playing to win.
What you want to do is to get the best developers to be interested in their work and love the project. Then they will give their best effort and make tremendous sacrifices to produce the best quality code possible. Ideally, you get a couple of great developers with lots of experience in writing good software in the past, then combine them with good, young coders who lack experience but are eager to learn. That for me, is the best software development process.
Plus, it's more fun too. I want my work to be fun. I don't want my work to be like work.