Thursday, April 24, 2008

Data Entry Software Development

Have you ever worked a data entry job?
It's not fun. It's manual labor for your fingers. The limiting factor for how well one can do a data entry job is the speed in which they can type. They need not understand what they are typing, they just need to do it. Somebody else has already done all the thinking.
Heavily front loaded software development methodologies achieve a similar result when it comes to development. If all the decisions are made early and are documented, wouldn't it follow that no decisions need to be made when it comes time to actually implement the designs in the development stage?
If that is true, why not hire data entry people to write code? They are a lot cheaper than developers.
Hopefully the more astute readers have picked up on the sarcasm. It's clearly a ridiculous proposal to make all decisions in a project before the work begins. There are decisions and issues that just are unknown before the work starts.
Some people are comfortable with knowing that there are decisions that have yet to be made. There are even people who are comfortable not knowing any of the decisions or issues and blazing ahead.
There are people who are very uncomfortable knowing that there are unknown issues and decisions. They want it all documented and reviewed before anything begins.
In a nutshell, these two viewpoints illustrate the differences between the Agile and Waterfall software development methodologies. If either extreme were to be adhered to, the chances of succeeding are very doubtful.
When either ideology approaches the other, that's when we enter the realm of practicality.
I think that most people will be comfortable with one side more than the other. For me, personally I believe that trying to make decisions before they are implemented is a wasteful practice. Life changes quickly, and it's unpredictable. To assume that we can have the answers and sufficient information now is a dangerous assumption.
Conversely, performing no upfront decision making is also a dangerous practice. Some decisions need to be made, but the balance is in not spending too much time and effort in making unnecessary or premature decisions.
What that balance is varies from project to project, and team to team.

No comments: