I have a very strict gun control policy: if there’s a gun around, I want to be in control of it. – Clint Eastwood
I came across a piece of writing by a writer that I hadn’t read for a number of years titled Why Every Business Is A Software Business.
That writer was Watts S. Humphrey, who died in 2010, and was called The father of software quality,
I read his book on the Personal Software Process when on a work placement during my degree and the ideas in there stuck with me.
In particular the concept that you could catch more bugs by reading your code before trying to run it.
But in other ways his approach was hard to use.
But before we get to that it’s interesting to look at the idea of all businesses being software businesses and why that creates new problems as well.
The first thing is that everyone uses software to some extent.
Increasingly the thing that sets you apart is how you use the software you have.
Two companies, for example, could have Microsoft Excel but use them in very different ways.
What you’re trying to do is be unique in some way – be the only fish in your pond rather than a small one in a crowded one.
But that unique thing comes from having an asset – an oil well, a gold mine or, increasingly, software.
But what if you can’t develop that yourself – you haven’t got the skills or the team you need?
Should you outsource your requirements?
Humphrey argues that you shouldn’t – because you’ll lose control of what makes you unique – you hand your future over to someone else.
And that’s something that I’ve seen happen in a number of cases.
And that’s also what stops many people from investing in software – the fear that they’ll lose control over the core bit of their business – the thing that makes them unique in the first place.
Now, if you have money the answer is to hire someone and keep at the problem until you have something that works.
It may be rubbish to start with but eventually you’ll have something that works for you and maybe even something that you can sell to others.
So one of the issues to deal with is control.
The big thing for Humphrey, however, was quality.
And quality, in his view, was something that came from measurements and statistics and studying how you were doing.
And this is where I have some difficulty.
And that’s because while the output from software development might be lines of code the question for us is which lines matter.
We know that the more we write the more mistakes we make.
So it makes sense to write programs that are as short as possible.
Which means choosing higher level languages and writing programs that create programs – removing the possibility of error.
There’s also all that work that goes into intellectual effort – the angst, the self-doubt, the stuff that we might not want to measure precisely.
Plus measuring everything is very boring.
Maybe it needs automating.
None of that, of course, invalidates Humphrey’s views on how to create software – it’s just that making it too mechanistic doesn’t work for me.
But the control point has a very simple answer.
If you can write your own software then you’re in control anyway.
If you can’t and need to hire someone and you have the money then you’re fine as well.
But for all the people out there who need applications developing but can’t afford to get it wrong they should ask and developers should offer open source solutions.
That way, I pay you to write code and if we decide not to work together I can still take that code and develop it further.
Even better, if you can take something that’s already open sourced and use it you reduce risk even more.
It may seem paradoxical but in today’s world the way to be in control may come from being completely open.
Which seems contradictory – how can you be unique when everyone has access to what you have?
But thinking that way may be to confuse being unique and being in control.
When you’re in control the customer has to work with you because you control their future.
When you’re unique the customer wants to work with you because of who you are.
Because they can see a future where you two work together.
And that seems a nicer way to be.