The only way to write complex software that won’t fall on its face is to hold its global complexity down — to build it out of simple parts connected by well-defined interfaces, so that most problems are local and you can have some hope of upgrading a part without breaking the whole. – Eric S. Raymond
I was watching a video of an Indian comedian from the southern city of Chennai.
Everyone in Chennai, he said, is an engineer.
That’s the default profession that your parents want you to go into.
You could choose to be a certain kind of engineer – say a mechanical engineer or a chemical engineer – but when you’re done only a software company will hire you.
Then they’ll train you in a host of languages, get you ready to program in any way the client wants – and then you’ll end up doing everything in Microsoft Excel.
This is the reality of work in business – days, months, years spent doing stuff in Excel.
Lives spent doing stuff in Excel.
The thing is that it’s clearly very hard to get anyone brought up in a Windows environment to think that anything else exists or could possibly be an alternative.
Which is ok – the point is not to ask anyone to do anything they don’t want to do.
It’s to see whether there is something better out there and what that might look like if it were used more widely.
For example, in the unix world one of the core principles is to “write programs that do one thing and do it well.”
The idea is that if you have a number of such programs then you can make unexpectedly cool things happen when you also make them work together – especially if they communicate using a universal interface, like text files.
Now, how would you use such a principle in real life work?
Let’s take marketing, for example.
The biggest mistake people make when it comes to crafting a message is trying to say too much.
Any message should have one clear idea.
You might build on the idea, support it with facts, burnish it with credentials and make it engaging through story.
Through all of that, however, your message has to shine through.
That’s the point of an elevator pitch for your business – being able to concisely summarise what you do well.
The people I see doing well are the ones that have nailed that message – where it’s really clear what they do.
Not all professions or companies are like that, however.
Some do more complicated things that it’s hard to summarise in a nice, easy pitch.
Although that sometimes means that they haven’t taken the trouble to break it down so it’s simple.
It’s hard to tell whether something that looks complicated is actually just so big that no one really knows how it works anymore, or even whether it works at all.
When you think of the concept of doing one thing well there are echoes of the same concept in many different places.
Take the idea of lean service archetypes where what you want to do is work on single piece flow.
That means that one person tries to complete an entire task in one go.
If they can’t do that then they pass “clean” output to the next person to work with.
That’s almost exactly similar to a program that does one thing well and then passes output in the form of text that the next program can use as input.
Almost anything you do can be thought of in these terms, individual, self contained activities that can be connected through a common thread – just as you see in the picture.
The main result of this way of thinking is the possibility of emergence.
When you make something that is big and complicated it ends up doing what you want – hopefully – and is the sum of its parts.
When you make a number of things that are small and self contained and you connect them together, surprising things often happen – something emerges that is more than the sum of its parts.
It seems counterintuitive that doing one thing well may, in the long run, end up helping you do a surprising number of things better than you hoped to do.
And that might feel a little more fulfilling than spending a life trapped inside Excel.