Monday, July 9, 2007

Please Step Away From The Code

Several years ago I was with my children a shopping center parking lot.  They walked too close to a car and a booming voice rang out from under the hood, “please step away from the vehicle.”  My kids jumped back and looked at each other with delight.  Then they took a step towards the car and again the voice said, “please step away from the vehicle.  This back and forth (iteration) went on for a while then they lost interest.

I wish I could install a booming voice inside every software project.  When a developer started writing code to soon the voice would boom out, “please step away from the code.”

The code is just code. It is the mechanism to deliver functionality.   The functionality is suppose to solve some sort of problem.  Let’s iterate on this for a moment.  The code is a mechanism to deliver functionality.  This functionality is supposed to solve a business problem.  The code is not the most important item.

Ideally it works like this.  A problem is identified.  A functional solution is designed (to solve the original problem) and then code is written.

What is the best method to conduct analysis?

There are a lot of ways to perform analysis.  Too often coding is the mechanism used to perform analysis versus flow charts and specification documents.  One of the problems with using code to conduct analysis is the inability to communicate effectively to someone other than coders.

OK, so you write a bit of Java instead of making a flow chart.  You used the act of coding to perform the analysis.  What if you are part of a team?  How do you expect another person on the team to understand what you did?   How do you expect to remember what you did?  How do you expect to communicate your analysis to those outside of software development? For the most part the person on the business end of the problem does not understand code.

Another problem with just coding is systems integration or coupling.  Wow, that sounds like I knew what I was talking about.  If a person is tasked to stick together code from 10 different coders they have to figure out what is inside each bit of code.  They need to understand all the interfaces.

The questions really are:

Is coding the best mechanism to conduct complex analysis?

Is coding the best mechanism to communicate ideas?