Saturday, July 14, 2012

Inspect and Adapt

Think about one of our most useful inventions of all time; the wheel.  Do you think that first caveman sat down and thought through all of the facets of building a wheel, and got it right the first time?  No, he most likely had a need, and set about to fill that need through trial and error.  His first attempt was almost certainly very crude and didn’t work well, but he kept iterating through it until he had something that worked.  If he had sat down and scratched out his design in the sand and said “Ugg, that’s what I need” and built exactly that, we would still be using our feet to get around.  Instead, he started building with what he knew at the time, and used that knowledge to improve the next version, and the next, until he had something that worked.

In the same way, we need to be willing to start with what we know, and understand that we will learn along the way.  Hanging on to the need to understand exactly what will happen in the future just doesn’t work.  Customers change their mind, product owners learn more and adapt (at least, the good ones do), and designs need to change along with them.  Also, if we really could just write TDD”s and know that’s what we want, why have developers?  We could just plug our designs into code generators and push a button. 

As developers of software, we need to be able to do a little work, inspect that work, learn from it, and then do a little more.  That’s how our friend the caveman did it.

2 comments:

  1. But our friend Cave man didn't have timelines, checklists and project owners waiting for final wheel...

    ReplyDelete
  2. no, but he had Mrs. caveman waiting for food, all kinds of creatures chasing him for their dinner, and only had 20-30 years of lifetime to figure out the problem. makes our timelines and deadlines seem trivial :)

    ReplyDelete