Thursday, January 20, 2011

The Cost of Fixing Defects

Steve McConnell wrote a great book about Software Engineering called Code Complete.  If you're not a Software Engineer, I wouldn't recommend it.  But if you are, read it now!

But there are 2 really excellent points in the book, even if you are not into Computer Science (really!).  The first is the subject of this post: the exponentially increasing cost of fixing defects as you progress into the development cycle.  It looks something like this:

Along the bottom are the various phases of developing a piece of software.  The far left signifies the early stages and the far right, the stages after deployment.

The chart above actually leaves out a preliminary stage that I always start with: the problem statement.  You can't solve a problem unless you know what it is.  This fundamental truth is all too often forgotten as people rush into a "solution."

The idea is that if you catch a problem in the first stage, which is simply the conceptual defining of the software, it costs 150 times less to fix than if you wait until the final stages.  150 times! 

The idea makes intuitive sense.  What is surpising in the scale of the difference. 

Now, I promised this would be interesting outside the scope of Software Engineering.  I think you can see how:

This same principle applies all around us.  Often we rush forward into something, only to realize a flaw in the early stages of the venture that is now costly (or difficult, or painful, or annoying... or impossible) to fix.  Or if the flaw was in the very definition of the problem, we have now wasted a tremendous amount of energy pursuing a "solution" to the wrong problem. 

I have most often observed this in discussions that turn into arguments.  A simple misunderstanding of a term or idea initiates a useless argument.  One party says something and means one thing.  The other party thinks he meant something else, and off we go!  Hopefully the one with a cool head eventually realizes they are talking about different things and the whole thing is passed off as an exercise in futility, getting nowhere.

So let's now apply our SE principle.  If, at the outset of this discussion, one could actually take a step back and define the nature of the disagreement, likely they would realize it was a simple misunderstanding and no argument would take place.  

How do we do this?  The Bible writer James tells us to be "swift about hearing, slow about speaking."  Oh, if we could only apply that!  Instead of being so quick to support our case, why not ask a question to clarify the other side?  And then listen to the answer!  

I can't tell you how many times this has aided me at my former job and even now in casual discussions.  So often we find that there is really no disagreement at all.  Or, equally importantly, that the disagreement is completely different than we initially understood it to be.  In either case, we save ourselves a huge amount of effort and time.   

Again, we cannot solve a problem if we do not know what it is. 

Now, I mentioned there were 2 great points from this book.  We just talked about the first.  The second is Broken Windows.  I will save that for another time. 

Wednesday, January 19, 2011

The Quasi-Naïve Democratic Approach

... and why it doesn't work.

Recent events have inspired this post.  But this is just a placeholder, because said events were not sufficient to inspire the body of the post. 

Hopefully other events will take care of that, and I'll return here to fill in the details.

Thursday, January 13, 2011

Retrospective Dynamic Inconsistency

Or "The Present Bias"

(I'm using these terms a little liberally until I can come up with a better name for this phenomenon.)

The idea is very simple: people bias the present.  Netflix shows us this very clearly... 

But the bias extends its reach much further, even to the point of being considered dangerous.  This is especially so when the bias is against the past, not the future.  And this happens all the time.

You have probably noticed this.  For example, when a new version of software, device or even a car is released, we automatically assume it is better.  Only if there is solid evidence to the contrary do we change our view.   

But that's not really dangerous, is it?  The danger is when this is applied to theories, or even our very mode of viewing life.


As a society, we tend to be slow to accept new models of our universe.  Just look at the initial backlash against the heliocentric model.  But once that model has taken hold, we laugh at the old views.  "How could anyone have believed that?" we quip.

In other words, we bias the present view.  Of course, the heliocentric view is the correct one, so what's the problem?

The problem is that new is not always better.  Here is what can happen:

1) A new view arises 
2) Even if it not a complete theory, it takes hold for some reason (we won't get into those reasons right now)
3) It becomes the de facto standard view
4) But there are still missing (or broken) pieces of the view, which are now ignored because it has become the present view
5) We only ever hear of those missing or broken "subviews" when they themselves have been replaced by a more modern subview

For example, let's take Evolution.  It has become the dominant theory today.  Of course, it has plenty of holes, but the only time we hear of one of them is when it has supposedly been filled.  It goes something like this: "For a long time it didn't seem possible that [insert something here], but now we know better!"  Or: "There was a fatal problem with [whatever], but today we have a new theory about it!"  Errors only exist in the past.  What we now believe is perfect.   

In other words, problems with the present, dominant view are ignored because it is the present, dominant view.  Or maybe they are not ignored entirely, but somehow the evidence is made to fit the view.  As they say, "all observations must fit the prevailing paradigm."  That is exactly the kind of thinking we are talking about. 

So what's the point?  It is easy to bias the present.  But like all biases, it can lead us to wrong conclusions.  We can't let it.

Sunday, January 9, 2011

Red Bull

At the English Convention in September, I met some friends from Santos who invited me to help in the ministry there.  As you may have noticed from previous posts, Brazil is very cool.  So I jumped at the opportunity.

Santos is an island south of Sao Paulo.  And the beach there is gorgeous.  It is lined with a huge garden, including statues and fountains.  I just realized I don't have any pictures of it during a nice day, so here are some night shots:

Ah wait, here's a shot of the coastline:

The ministry there was also nice.  Santos is a huge port so there are many cruise ships that stop there.  Often, the crew enjoy reading about the Bible.  So we spent some time talking with them.

I also met an awesome Nigerian man who so very much appreciated the Bible.  We quickly became friends as we studied the scriptures and I was sad to have to leave him.  He even gave me a shirt!

I stayed with a lovely couple, Agenildo and Isabel, who, like the entire group there, were very hospitable.  They knew I like to eat, so they lined up some nice places to go to... including a place that has Filet Mignon Pizza.  I am not making this up!

It was excellent!

The weather fluctuated between wickedly hot and rain.  When the rain wasn't too bad we went to the beach anyway.  And when it was, well... Law and Order marathons!

On Saturday we went to Guaruja, which is a magnificent beach.  Check it out, although pictures really don't do it justice: 

You may be wondering why the title of this post is Red Bull.  Well, if you visit Brazil you'll find out...