Day 334 – Thinking Not Optional

32 – 100 Most Influential Books According to Stack Overflow

Small developer books discuss languages and libraries.
Average developer books discuss processes and paradigms.
Great developer books discuss fundamental truths.

To paraphrase a saying.

A lot of the books in the linked list (har har… programmer joke) today fall in the first two categories. I hunger for books that give deep insights, but sadly those are few and far between.

There isn’t a lot of fundamental truth out in programming-land. Most of our books focus around craft and process and pre-made solutions. The only pure example I see on the list is Gödel, Escher, Bach: An Eternal Golden Braid which I read in high-school and it transformed my understanding of computation and computability. And perhaps books like The Mythical Man-Month or Here Comes Everybody glance the edges of fundamental truth.

Sadly, most books on the list focus on languages or libraries.
Useful. But not foundational art or science.

In my mind, the best books explain something about the pure underpinnings of computability. Or prove equivalence of disparate paradigms in data manipulation. Or lay out a framework for deriving provably correct algorithms.

The best books teach that programming is not just about functional and correct code. They teach you to think about what your code fundamentally means. What it tries to express. And how you can translate that meaning into as faithful an encoding as possible so that the solution becomes more than merely instructions to the processor. It is your code striving to express the meaning of your idea as perfectly as the language will allow.

It is the reason dynamic typing will always be a terrible idea invented by lazy programmers that want to hand-wave their way through actually thinking their way through a problem. Ken Scambler at Real Estate Australia expresses my thoughts in this matter more eloquently than I’ve had the time to do myself. I’m not sure I fully agree with his stance on exceptions, but that does not detract from the truth of his central argument.

And as I have said before; I think there is more room for precision and fundamental truth in IT management and the SDLC than we are currently allowing for. But my thoughts in that regard are still percolating and not fit to print in a formal fashion.