Algo

I want to quote a phrase from the book I’m reading at the moment. The pages managed to soak up nearly a full glass of water a few nights ago, but the text still holds. The circumstances are a mathematician has broken into a safe using a crude carbon-graphite microphone and is now asked for the combination by an officer.

He is faintly irritated that they would ask him this question. There seems little point in writing down the combination when the equipment needed to break into the safe is sitting right there. It is much more important to have a safe-breaking algorithm than to have one particular solution to a safe-breaking problem.

The quote is from Cryptonomicon, a weighty tome of a book that deals with everything from cryptography (obviously) right through to writing business plans and the laying of trans-atlantic cable. But it was that one quote that stuck out to me the most, because I think it exemplifies the difference between how a developer sees the world and how everyone else does.

By default, everyone starts out the latter. What is writing a computer program but trying to reach an ends via an automated means. But very quickly, developers divide into two camps and this is where I believe the prevalent notion of a 10x programmer arises.

There are those who are happy to continue repeating the work to generate the output. They want a solution to a problem and another solution to another problem and on and on ad nauseam.

But the second kind of programmer, the Waterhouse whose thoughts are quoted above, realise that the only thing that matters is the algorithm. If you can reduce something down to a set of rules, it can be automated and replicated and tweaked and shared.

A developer is always looking for the way to abstract something. To make it composable, reusable, DRY. A hundred acronyms, but they’re all a carbon-graphite microphone at the end of the day.