Wirth’s Law…

I was scooting around the net and I stumbled on a reference to Wirth’s Law and had a flashback (not Nam related) to a conversation I had about 14 years ago with my boss at the time. We were setting up the kit for a new automated warehouse solution (Oracle 7, HP 9000s and ServiceGuard if I remember correctly) and he said something along the lines of, “Why is it that for each customer we buy faster and more expensive computers, yet they take the same length of time to produce the results?”

The answer was pretty simple in that case. We were refurbishing the existing (fairly simple) warehouse as well as adding a completely new one. We were replacing some AVGs with a very complex conveyor layout, which required some difficult routing decisions. The basic “find me a space in the warehouse” decisions were replaced by pretty complex searches that had to take account of conveyor routing, system load and potentional sorting (and defragmentation) of the content in the warehouse. The customer needed a highly available solution, hence the use of ServiceGuard, so we more than doubled the hardware and software costs for no perceivable performance improvement. From the outside looking in it seemed like nothing had changed. It was still, “Here’s a pallet, put it in the racking”, but the process required to do that operation efficiently had increased in complexity manyfold.

So Wirth’s Law, “Software is getting slower more rapidly than hardware becomes faster”, is true because people’s expectation of what software can do for them is constantly expanding, without realizing the impact those expanding expectations have on the programming and hardware requirements. Added to that we have a generation of cut & paste developers and DBAs who also don’t understand the impact their lack of understanding has on the software they develop (see Gate’s Law).

I look forward to writing a post in 10 years where I can moan about Exadata V12 boxes struggling to complete my weekly loads before the end of the weekend. Of course I will forget to qualify that I’m loading Yottabytes of data in that time… 🙂