Monday, May 28, 2007

Introducing: Software Inside

I’m going through some notes from the ACCU conference in April and note I made after a conversation with someone – I forget who so sorry for not crediting you properly but I want to capture these thought….


We write software but we seldom write software for the sake of it.  We write software as part of something else.  Perhaps we write embedded software for a mobile phone, or we write an enterprise application for an account department – you get the idea.


The thing the software goes into – devices, process, etc.  – is itself a system.  A mobile phone is an electronics system, which is part of the cellular communications system; an accounts ledger is part of a business systems which tracks accounts.


Increasingly it is software that makes all of these systems possible.  You could do a lot of this in hardware, albeit specialist hardware but doing it in software is easier and cheaper.  Despite all the problems with writing a software application to manage a cell phone it is still a lot simpler, cheaper and faster than creating dedicated hardware.


Software allows you to use commodity hardware, commodity manufacturing and commodity infrastructure to create your product.  The truly unique bit rests in the software.  While you can copy the binary code or application for virtually nothing the creation of that software is unique.  Knowledge is embedded within the software.


Ultimately all software systems are simply part of a bigger system.  Systems have software inside.


This idea isn’t new.  I’ve said it myself before, what is new is the term: Software Inside. I guess we can credit Intel with providing the inspiration for the term – thanks Intel!


This term allows us to focus not so much on the software but on the greater system: the phone, the accounts system, the car, the washing machine, the moon-landing, etc.  The fact that we know about software can take us (the software developers) into many different and strange domains. 


And once in them we ourselves, the software experts, need to adapt and learn these new domains.  We need to be soft ourselves.  Software developers need to be cameleons.