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.
But our friend Cave man didn't have timelines, checklists and project owners waiting for final wheel...
ReplyDeleteno, 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