The Knowledge Is A Scam

Haskell, But Quickly

Heads Up!

I'm writing a book about building and deploying web applications with Haskell and Yesod. Want to know when it's released? Click here.

Black Cab drivers in London carry a particular stereotype. Your average cabbie is a typically unwholesome character — xenophobic, obnoxious, and probably thinks Nigel Farage has “some bloody good ideas”. And there’s something all cab drivers share: a posession of and respect for what they call The Knowledge.

You may not be aware of this if you aren’t a Londoner, but The Knowledge isn’t some deep general wisdom. It doesn’t make the driver more broadly intellectual than the rest of us. It doesn’t make their ideas any more profound.

No, The Knowledge is actually just knowing your way around London. Drivers study 25,000 streets, and about 20,000 places of public interest. It takes two to four years to learn.

I know what you’re thinking.

“Surely, knowing all the routes through London isn’t important these days?”, you would ask.

And you would be right. We live in a time when everyone has satellite navigation in their cars, on their telephones, and — if the beard on their neck is thick enough — on their perv-on-the-girl-next-door surveillance drones.

Yes, The Knowledge is useless and irrelevant. To feel superior for having invested time and energy memorising worthless information can only be described as blind pride. Learning where all the streets are in London is as pointless as learning the quirks and inconsistencies of a bad programming language like JavaScript.

This kind of thing is of course rife in the software development industry. We see it in our job interviews. We see it any time PHP is defended with the phrase “A Good Arist Never Blames His Tools!” We see it any time Uncle Bob writes an article telling programmers to quit their jobs and to never think about being a programmer again.

It is rather conceited anyway, to portray sloshing together snippets of code you found on Stack Overflow into yet another WordPress theme as any kind of fine art. I like to think that if there were a second coming of Vinnie van Gogh and he overheard you say that, he’d promptly stab you in the eye with the nearest palette knife.

Violent artistic digressions aside, allow me for a moment to return my attention to Robert C. Martin. Quit your job? Never think about programming again? Is this hyperbole? Or is the man notably emotional? We programmers often forget that we’re not pure, logic-driven machines. The defence of any ideology — in this case TDD — with such fervour is more typically found on an altar than in any laboratory.

We should stop calling it computer science and instead call it Computer Religion.

It’s a curious instance of cognitive dissonance when we say programming languages are just tools, and yet we attribute emotions to them. I mean, Ruby is “designed to make programmers happy”, right? We love to think ourselves rational, but try pointing out JavaScript’s flaws in some programmer circles. Watch how everybody loses their mind.

Kicking that particular beehive is especially perplexing, because surely knowing what’s bad about a programming language or testing method is as useful as knowing what’s good about it?

If you want to spin your rear wheels in your quest for programming enlightenment, then stick your fingers in your ears and continue parroting platitudes in rapid succession.

“Always use the right tool for the job.”

“JavaScript is always the right tool for the job.”

There are many to choose from, and they give you full artistic license to wear your ignorance as a signet of moral superiority.

If, however, you want to gently nudge the envelope, then it’s time to accept that programming languages and methods are indeed just tools. Some are better, some are worse. Some give you mysql_escape_string… Or was it mysql_real_escape_string?

Military discipline in writing tests to protect yourself from Null Pointer Exceptions in any of their flavours is wasteful at best.

Memorising which half of JavaScript’s array API does mutation will keep you busy, but does not make you more productive.

If you’re calling yourself a “craftsman” because you’re wise enough to protect yourself from your language’s warts, why aren’t you wise enough to use a better tool where these warts don’t exist? No. Nothing is sacred.

At least to some degree, you can chalk up the London cabbie’s wasteful busywork to some job security. But for programmers? You couldn’t frisbee a floppy disk without hitting someone who’s currently hiring.

The Knowledge is a scam.