As someone with a hard science background (Fun Ben fact: I was originally a Biology major) I can’t help but look at everyday problems and think of the scientific method. Working on large-scale .NET development projects, naturally I am constantly applying it to computer programming projects. I mean, come on… Computer science has the word science right in it so it totally makes sense!
Let me take you back to grade school, junior… Remember in science class where they made you come up with a theory, test it, and write about if you were right or wrong? Is it all coming back to you now? That’s right kids, I am talking about that scientific method. Let’s take a look at it and see how it applies to software development!
The general steps of the scientific method are:
- Define a question.
- Gather information.
- Form a hypothesis.
- Test the hypothesis.
- Analyze the data.
- Publish the results.
1. Define a Question.
Before a team… Before a project… Before a plan… There has to be a need. I look at this step of the scientific method as defining the need of the client. Often times for a code monkey this is already done by the time they join up with a project. However, for tech experts, team leads, and project managers sometimes a more expansive role requires identifying that specific need. Without a true need for a solutions, there is no problem to solve and no project to be had!
2. Gather Information.
Design, design, design! We’ve all been in endless design meetings. (Are you SURE that’s the only possible scenario? You’re SURE?!) Fleshing out the business requirements is one of the necessary evils of software development, unless you have a stellar team on both the business and technical sides of things. Why is it so hard? Try getting an assembly programmer in a meaningful and useful conversation with a physician… ’nuff said. With SMEs who can discuss design with an open mind and a good team of business analysts, the pain can be reduced in iterative design sessions. Yeah, I said reduced, not eliminated so don’t hold me to that.
3. Form a Hypothesis.
This step is all the standards, protocol, and procedural stuff. What technologies are going to be used? Who’s in charge of what? How will the developers work together? What is the overall development methodology? Adapting the functional aspects of the project to a technical solution is the real hypothesis here. With requirements known, it is time to get in to detail about specifically how to accomplish it, and how the project will keep on track.
4. Test the Hypothesis.
Every development methodology has some type of iterative development and peer review. Dev QA is such an important–and yet somehow still overlooked–part of software development. I have found it is frequently the line between a happy and frustrated client! There is nothing worse than being presented with something that is clearly not finished or up to specifications. Good developer quality assurance roles should be able to prevent this situation, and are a necessary part of this step.
5. Analyze the Data.
When the day is done, who really does the analysis of whether or not the project is a success? The client. The real evaluation here is done by user acceptance testing. There’s a lot of power in this step–if the project is just not working out, it’s back to step #4. Or worse #3. Or if things are really, really bad, step #2. If you have to go back to #1 the project is definitely DOA. Developers, don’t blame the client–It took them this long to figure out they don’t have a need after all.. And client, don’t blame the development team–they helped you figure out something you should have already known.
6. Publish the Results.
Testing is completed, everything is working as expected, and now it’s time to go live. Congratulations! You are officially published. If you did things right, both the client and development team can be proud of accomplishing a project well done. And it was done perfectly to specs, exactly on time, and precisely on budget… right?
Hey, I never said the scientific method was perfect :)
Extra credit will be given to anyone who an identify the Bill Nye the Science Guy reference in this post.