h1

Expensive toasters

October 10, 2011

While out shopping the other day, I stumbled upon a stack of toasters on display – I don’t think it was a sale or special – just a display stand.  $12.95.  OK, to be honest, I don’t get out much (shopping-wise) but to retail a toaster for $12.95 is pretty amazing.  Having fixed and cleaned various toasters in the past (the mister-i-can-fix-it deep inside us) I know what makes up a toaster.  And I just can not believe the price.  This got me thinking and took me on a journey where I was ultimately able to refine my Christmas wish from yesterday.

I want as assembly line and componentry for software.

My journey began by decomposing the costs of the toaster (all balanced against the final quality) into buckets.  Raw materials, labour, packaging, transport, stocking etc.  What I realised was that the labour component has to be minimal.  $12.95 doesn’t buy a lot of labour.  This is clearly the result of some form of automation/assembly line and componentry where labour costs are minimal.  Lets call this the factory pattern.  The other way of making toasters would be in a workshop, where the input is pretty much raw materials such as sheet metal.  The inputs to the factory are a variety of prefabricated components and designs, which are assembled by hand or by machine.  In a workshop, the design is executed on an individual basis, with components made from the raw materials as required.  If toasters were made this way, you would need to move the decimal in the price a few spaces over; they would cost $12950.00 as they would have a huge labour component.  Now as time went on in a workshop, power tools of increasing quality may be introduced, and some componentry such nuts and bolts, which would reduce the labour and thus costs.  So now our toaster is $1295.00.  Still pretty expensive.   Some clever person then decides to take it to the next level – lets design a bunch of reusable components, make a factory to produce 1000’s of sets of these components, and then some robotics to assemble them as required, into a few different models as sales forecasts predict.   Clearly there is a serious investment here, in the tooling, design and preparation of this toaster factory, but in reality a large number of components (screws, nuts, springs)  are already being produced for another item that they can reuse.  So this is not imagination land – this is real – $12.95 toasters.

[Harsh realisation warning!]

The world of software development  still runs on the workshop pattern.  We have not invented a software factory!

I actually find that quite embarrassing – I always thought IT folk were pretty clever.  How come we haven’t copied the manufacturing world into the factory pattern?

It gets worse too.  I did warn you.  Manufacturing consumes raw materials.  Building software does not!  I can conjure as many 1’s and 0’s in fancy patterns as I need at zero cost.  So we in software development actually have more to gain from the factory pattern than manufacturing does!  Rock bottom coming here (I warned ya!): imagine if you have made a factory to produce 2-slice toasters and then demand grows for a 4-slice toaster.  You will need to redesign and implement some tooling to produce larger face plates and such.  What can we do?  Inherit!  SidePanel4Slice : SidePanel2Slice { this.size = 2 * base.size; }.  You get the picture.  Manufacturing got a huge benefit from the  factory pattern, orders of magnitude, and the world of software development has more to gain from the adoption of a factory pattern than manufacturing.  Its embarrassing that we haven’t done so yet.

Its time to stop demanding bigger and better power tools from the vendors, and demand a software factory.

Redmond are you listening?

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

%d bloggers like this: