Teaching entirely novel things is hard. Teaching a person to appreciate the need for something before that something has been given a name is even harder. It's not done in undergraduate Java-school computer science. It's vital that we convey the jargon. Polymorphism, encapsulation and inheritance are definitions we're taught because we know that HR people who interview us will ask these questions. Clearly a strong indicator of computer programming acumen is the ability to spout the jargon, right?
Blaise Pascal is credited with the following: "I would have written a shorter letter, but I did not have the time."
The Little Schemer is a shorter letter. It is one of the most beautiful technical books that I have ever read and here's why:
Why?
Well, it starts out as a textbook that teaches lisp, a computer language, and ends up touching on some of the hits of theoretical computer science. The Halting Problem, recursion, the Y-combinator. None of these things is named until after it is taught.
What does this mean?
It means that a concept isn't named until the student understands it through performance.
Wait, how does a book make you perform?
It's written in the style of a dialogue between student and teacher. You try to answer your teacher's question before they do themselves.
Yeah but where's the performance there?
The best way to answer many of these questions is to write them down.
Oh okay, so what kind of answers?
After a fashion, mostly code.
And you just write it down? Why not type it in?
The book will tell you if you're on the right track.
So it's kind of like a REPL but on paper then?
Yeah, sort of, which means you train your own brain as a lisp interpreter.
That sounds hard.
It is a little, but you always know exactly where you get stuck so you can go back and read over the last few questions again.
Well geez, that sounds amazing.
It's maybe the best programming book I've ever read.
Where do I get it?
There are some PDFs or you can buy it off amazon. Once you've ordered that, have a peanut butter and banana sandwich. You've earned it.