Wednesday, July 27, 2011

Efficient Vs. Effective

I've been thinking about "The Goal" of Kanban in our organisation for some time.

I believe that there are numerous (side/non) goals - however, the one true goal is to deliver high quality, business value to the customer.  However, to enable this to happen a Kaizen (continous improvement) environment is likely to aid & probably help you on this "path" to the goal (you might never get to the goal - it is after all a goal).  You also have to accept that life/business/software dev/nothing is never static so you have to be able to adapt your process to ensure that you keep delivering value to your customer.  This Kaizen environment helps people to eliminate waste, but also empower people to make changes to a process or system which isn't helping to deliver value to the customer.  Anything that doesn't add value is essentially waste.

I think there is a lot of "Non-Value Added" time during software development.  In fact maybe the only "Value Added" time is the point in which you push/pull it to live.  Everything else might just be "Non-Value Added" time!
 
So what exactly is efficiency within Software Development - well to me now it's clear - thanks to wikipedia & the above mind burb!  Efficiency in software development is anything that is not "Value Adding" in your current value stream.

Now you might think - well if you've got Kaizen time (i.e. slack time to improve your process) how is this adding value to your current value stream.  Well it might be something to help improve the flow within the value stream.  This is as important because you are trying to optimise the current value stream - so essentially you are aiming to add value or remove waste from your value stream (agh confusing!).  It's important to accept that these might fail sometimes - but hey people make mistakes and learn from them.


I think Effectiveness & Efficiency get confused.  I'm certainly confused this late at night!  Let me give some arbitrary examples of measuring these two things...

Measuring Effectiveness might be measuring the number of LOC (Lines Of Code) a developer writes.  However, this is irrelevant in line with the "Goal".

Measuring Efficiency might be measuring the amount of Business Value a developer delivers to the business.  This is more relevant to the "Goal", and to some degree is measurable against the goal.

However, this will promote local optima - promoting selfishness, and definitely promoting a non-kaizen environment.  This would lead to a process which is not optimised - you essentially get silos of optimised process, with other areas unoptimised.  That's why it is important to look at your full value stream when measuring Efficiency.

Before measuring Effectiveness think about the impact this might have on your overall "Goal".

Thanks to the following for making me think about this stuff way too much:

1 comment:

Andy said...

I use two slightly different forms of definition for efficiency and effectiveness depending on who I'm talking to, although I think they are broadly the same.

For one audience I suggest that effectiveness relates to the production of Value; and efficiency relates to Cost (in producing that Value).

An alternative form is that Effectiveness is "doing the right thing"; while efficiency is "doing the thing right".

So in software development we are effective when we continuously deliver build just the right product, at just the right time at the just right price.

And we are efficient when we can sustain the continuous delivery of such products at the lowest possible cost.

When we do both of these things we keep our customers and shareholders happy :-)