Friday, July 20, 2007

Natural Law

Laws, rules, process. They are all related and they are all around you. You don’t consciously think about them from moment to moment, but you are reacting to them moment to moment. They are second nature to you and you don’t have to think about them. On your way to work you drive on the correct side of the road, you stop at stop signs, and you stay in your own lane. When you go to lunch, you pay for your food. After work you go to your house instead of going to somebody else’s house.

It is easy to remember the laws, rules, and processes because you interact with them every day and you get reminders and possibly even unpleasant consequences when you go astray. A great example of this is the rumble strip that is commonplace on the side of highways these days. If for some reason you start to drift off the road, you’ll hear a loud warning noise as your tires hit the rumble strip. If you are really violating the law, you’ll hear an even louder sound accompanied by flashing lights. This is also known as feedback.

We get feedback our whole lives. When we first come into the world, we need constant feedback in order to learn how to survive. Touching something hot is painful, going without food is painful, falling down stairs is painful. In school we get feedback as to which subjects we are good at and which subjects we are not so good at. We can use this feedback to decide what to do more of, what to avoid and as an aid to improve, if we are able to.

An important part of absorbing all of these laws, rules, and processes is that they are clearly defined, easy to understand, and easy to remember. Once you have mastered basic physical laws such as running at full speed into a door is painful, it is easy to understand the reasoning behind having an upper limit on the speed of vehicles on public roads. You may disagree with that limit, but you can generally guess what the limit is for a given stretch of road and it is posted at regular intervals to help you score your guesses.

Somehow, the powerful combination of clearly defined process and reinforcement through immediate feedback are absent in most software development organizations. This is surprising considering that two of the main ingredients in software itself are rules and feedback.

One of the ways that Agile development helps is by providing frequent feedback, both to you as a software developer, and to the customer which in turn provides feedback to you. This makes it easier to learn about your market and your internal process and to make constant improvements in your product and your product development process.

Next: Agile Development is People Oriented

No comments: