This post originated from an RSS feed registered with Python Buzz
by Ben Last.
Original Post: Only Forward
Feed Title: The Law Of Unintended Consequences
Feed URL: http://benlast.livejournal.com/data/rss
Feed Description: The Law Of Unintended Consequences
I've blogged before about my little TomTom Go. An excellent device; though not without its niggles. But it does do its job very well, and part of the reason for that is that the job is so well defined. It gets you from where you are to where you want to go.
Read that carefully; from where you are... Not from where you started, or from where you thought you were, but from where you are. Now. Which, of course, changes all the time as you're driving. Naturally, the Go has a route that it expects you to follow but as soon as you deviate from it (either due to roadworks, ignorance or sheer what-happens-if-I-turn-here devilry) it simply replans the best way to get you... from where you are to where you want to go.
Now, in the past there have been satellite navigation systems that follow what we might call the "plan it all before you start" model. One could, if appropriately mischevious, liken this to the well known family of software methodologies sometimes called BigDesignUpFront. The route is planned out ahead of time, and the job of the navigator is to make sure that it's followed. Of course, if there turn out to be obstacles in the way, or the weather's bad, or the car breaks down, then that route might not be the best anymore... but it's been planned, so it's followed.
We can stretch that whole analogy by saying that the Go's route-planning is more like IterativeDevelopment. At each stage of the journey (and the length of a stage is entirely dependent on the circumstances at the time) two things matter; where we have got to and the best route from there to where we want to be. We may not be where we thought we'd be; perhaps we've found a better route. But it seems to me that what tends to happen more often is that we realise that we ought to be going to somewhere else. The destination itself, or in software terms the requirement, changes.
There's nothing particularly new in this; those links to the C2 wiki will lead to more informed and intelligent discussion on the subjects than I could ever provide. But I do think that the basic principle of that little route-planning box is a good one; a way to start every day by considering simply this - "where I am now, and how best do I get where I want to go?"