rubikzube

software engineer ¤ yogi ¤ turban cowboy

Wednesday, February 01, 2006

Should software development be a science?

As I was leaving a meeting today, I stepped aside for a short conversation with my boss, a very intelligent product manager. We were discussing a tool that I am working on, a framework to test new versions of a product that can be commonly configured in well over forty different ways, and uncommonly configured in many, many more.

All of these different configurations and versions make it important to have a tool that can automate the testing of various combinations of versions and configurations, so that we can exterminate bugs that only appear within the context of certain combinations. Preferably that extermination will be as lethal and final as a healthy dose of rat poision stew, but the thing stuck in my head after the conversation is that my boss excitedly said this tool was finally going to turn our development cycle into a science.

"Wha...?"

I always thought of software development as a craft, a combination of art and science). I thought of myself as an artisan, someone with the ability to reason, but be expressive and insightful in my reasoning. Being an artisan gives me a sense of pride and a desire to contribute to the furthering of the craft, which is why I enrolled in graduate school to begin with. Now that I study Informatics and work at an enterprise-level software company, however, I find my artisanal view of development assaulted.

Both my employer and my class readings on software architecture want the whole development process to be measurable, analyzable, controlled. They want software constructed in a formal, rigid and methodical process rather evolved through a combination of heuristics and agile methodologies.

Now maybe I’m a pragmatist at heart, but I think one should use “low” technology where one can afford it. I believe in Einstein’s statement, “As simple as possible, but no simpler”, and I believe that should be the goal not only of software itself, but also of the software development process. Heuristics and agile methodologies may not be strictly scientific, but they are effective when properly applied within most contexts of software development.

Science should not be the goal of software development. It should be a path to get there.

0 Comments:

Post a Comment