If only we knew how little we know at the start

If only we knew how little we know at the start we would understand the need to delay decisions until we understand more.

I have sat in too many “design” meetings where some crazy design emerges from a bunch of unverified assumptions not to value the concept of reactive design, the value of TDD, designing on the fly with a pair, pulling in others from the team as needed, and inevitably rework.  Each line of code we write is a liability and the only way to reduce the volume of code is through continuous refactoring as we learn more and the design evolves. If we don’t refactor we find we are quickly overrun with bugs grinding our progress to a sharp halt.

We make decisions only when they need to be made at which point we have as much information to make the descision as possible. And if new information is discovered, new knowledge is aquired or better ideas spring from young minds we refactor knowing that the extra work will always pay off.

Good developers are constantly learning, not just new techniques, but more importantly about the domain in which we work. It’s at odds with the traditional view that we enter a role “fully qualified” and immediately know the best solution to every problem. Qualifications encourage the arrogance that for so many years left us standing still. The only important skill is the ability to learn. Experience makes this process faster but however good we get the main focus must be on learning.

 

One comment

  1. Isn’t the the sentence “If I knew then what I know now” the most descriptive of how our decisions our made.

    The problem is that no one accepts the fact that we don’t know exactly how to do something until we do it, we don’t know how much it costs or how long it’ll take until it’s finished, and we always learn from our mistakes.

    If everybody understands the above facts, then we’ll certainly have smoother projects!

    Thanks for sharing…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: