Saturday 6 August 2011

I invented the Linked List or A Shaw Thing

When I left home to go to University (or Polytechnic as it was called then) in 1986 I already had 6 years of experience writing software on the many home computers I had owned, so when I attended one of my first courses called Data Structures and was introduced to a technique called a Linked List my first reaction was, ‘I’ve used those loads of times,’ therefore, ‘I invented the Linked List.’ I’d never thought of giving the structure a name and didn’t know that somebody else had.
The same phenomena has been happening to me ever since. There are two reasons for this, firstly when I’m asked to provide computer software to solve a problem my first reaction is not to look on the software shelf for something already available (or COTS as it is commonly known) because there’s no fun in that and secondly, my company’s clients don’t normally have enough money to pay us and buy software off the shelf.
Creating your own version isn’t always a bad thing, for one you will never be frustrated when the software you have bought does quite do what you want it to do and there is no way to extend it. And you won’t be paying for all the bloatware that you will never use. If you can create your own version quickly and cheaply, and can add features as and when the client asks for them, then it is a great way to create a good reputation for yourself – my current project manager recently said ‘there wasn’t a technical problem that I couldn’t solve.’
It does sometimes have its downsides though. I recently attended a Software Architecture course based on TOGAF which had an exam at the end of the course. I breezed through the training because there was nothing that I hadn’t seen before, but when it came to the exam I failed. Not because I didn’t know the material but because The Open Group had given names (or more accurately acronyms) to everything that I had been referring to as something else for years, and I couldn’t reprogram my memory in a few days.
The software industry isn’t the only place where ‘Shaw Things’ occur. If you have ever been asked to sum all the numbers between 1 and 100 and have intuitively thought that if you write the numbers out in sequence and then in reverse sequence beneath them and add up the pairs, that you have one hundred 101s so that total is 10100 / 2 = 5050 then you have just used Gauss’s algorithm. And if you have ever made a white sauce by mixing milk, butter and flour then you’ve made a Béchamel sauce.
So if you have ever created something only to discover that somebody else has also created it and given it a name when you never thought to do so, you now know that the phenomena is called A Shaw Thing unless of course somebody else has already named this phenomena in which case A Shaw Thing is actually A Shaw Thing.