Friday, March 24, 2006

God works in incremental ways

Man has evolved from cavemen to farmers to our current hi-tech lifestyle. Throughout time we have learned to create many things. Cavemen created knives from bone, farmers created tools from melting metal. But only in our technology era have we become able to create something from nothing. All our earlier creations have been mere modifications upon something physical - bone or metal or empty rolls of toilet paper. But software is not made from something physical. It is something that does exist, but it's not something you can kick, and - like God only could - we are creating it from nothing.

But creating software involves great complexity. Any software project deals with transforming what you can imagine into something working and usable, and this transformation is most of the time not trivial. There are so many ways of doing things that it is very easy to take a wrong step. Managing this complexity is what software creation is all about.

This is why so many software projects run into problems. The complexity is too great, and it is not being tackled accordingly. There have been many attempts to formalize away this complexity with methodologies that aim to tell everyone involved what to do and when, and to limit the number of changes that come over time by a nailing down detailed specification prior to implementing anything. The problem is that these methodologies promote a system so rigid that very limited value ends up coming out in the other end, especially for large projects. There is a system built, but it is often not what the customer really wanted, just what they thought they did when the spec needed to be approved.

Some have come up with a different approach. Just take things one small step at a time. Figure out what small thing will be the most valuable to have up and running first. Now do just that; code it, test it, document it, and deliver it. Now the customer can try it out, get some experience with how it works in practice, and then figure out the next thing that will give them the most added value. Step by step the customer gets a more and more valuable system. Call every such step an increment, and this process is what is called Incremental Development.

Now that we all know that the Bible contains a detailed description of how the brain works, it makes you wonder what else is hidden in there in plain sight. I thought I would do some research of my own to see if I could find anything interesting. Expecting to read through a lot of material with little hope of finding anything substantial, I was quite surprised to find great value from the very first paragraph.

What I found is that the Bible actually teaches us incremental development. This method is demonstrated precisely in the story of how God created the world. God has documented for us just how he executed his own development project. Lets go carefully through the passages of Genesis and look at the details:

1In the beginning God created the heaven and the earth. 2And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters.
Here He has first set up an empty project to get started. This, as you see, was simply a kind of "Hello World" starting point to work from. And from this He started his first increment:

3And God said, Let there be light: and there was light. 4And God saw the light, that it was good.
Here are the main steps of an increment in a nutshell. As the first step He decided what functionality would give the most value to implement first. As "darkness was upon the face of the deep", He committed His first increment to implement light. He was starting with something of great value, yet not too complex. Pure energy, no shape or form, just beams of light.

As the second step He went ahead and implemented it. And so, "there was light".

As the third step, to verify His implementation, He did the proper testing. He took a good critical look at the light, and made sure that "it was good".

And God divided the light from the darkness. 5And God called the light Day, and the darkness he called Night. And the evening and the morning were the first day.
To complete the increment, He documented what He had made. He documented that light was something separate from darkness. He documented the light as being "Day" and darkness being "Night", And with this He concluded the first increment - the first Day.

The rest of Creation was completed by several more such increments, following this same pattern. Now that He could see His world in a new light, He decided to do a second increment to separate the sky and the earth, then a third to separate the sea from the land and add vegetation, a fourth to add the sun, moon and the stars, a fifth to add fish to the sea and birds to the sky, and a sixth to add animals to the land, and people to rule it all.

1Thus the heavens and the earth were finished, and all the host of them.
After six increments He had completed enough features to call the first release finished. He has a working heaven and hearth, with a fully functional ecosystem. And as Man was made with a creative spirit, like his Father, He documented His incremental method in the Bible so that men can benefit from His wisdom in their own projects.

No comments:

Post a Comment