I recently discovered this delightful book, The Little Schemer. As the title suggests, it uses the programming language Scheme (a LISP dialect). To talk about what? About recursion, mainly. The book is relatively small (200 pages or so). It’s also quite old, given the short history of computers and programming languages. It was first published with the title The Little Lisper, in 1974. Yeah, guys, more than twenty years before Java had even been born, this book was already there (by the way, LISP was created in 1958, some 40 years before Java’s birth).
However, far from feeling old, The Little Lisper/Schemer is one of the most refreshing technical books I’ve read, ever. The book, being absolutely rigorous, is also an easy and fun read. It cuts to the chase, step by step, focusing absolutely in the specific goal at hand. It’s eminently practical, an enlighting and continuous exercise. And, unlike most of the academic books I’ve read so far, this book fulfills the promise stated in its preface:
The goal of this book is to teach the reader to think recursively
Every single line is oriented towards that goal. But the thing that astonished me most of it is the style the authors picked to achieve its target. Or, to be more accurate, the technique they use. Although, come to think of it, it’s the most natural, elegant and congruent technique any person could choose to teach anything. And if 60 years in Computer history is a lot, this didactical technique The Little Schemer uses is relatively old too in Human History. This technique is… make a guess!
You got it right: the Socratic method.
Socrates? Who’s he? The brazilian soccer player?
Socrates was a Greek philosopher, born some 2500 years ago. Some even consider him the father of philosophy. He discovered that the best way to unveil knowledge (since he considered knowledge wasn’t a transferable thing but something that resided deep inside everyone, pending just to be illuminated or rediscovered) could only be achieved by reaching a personal conclusion after having followed a path of questions that could only lead to that individual vision. So the thing shared is not that much the knowledge but the way to see that knowledge -or vision-.
To be fair, the Socratic method is more of a two-phase function, being Irony the first, thanks to which wrong pressumptions are left behind. But I’m more interested here in the second stage of the Socratic method: the maieutics.
Maieutics
Ethimologically speaking, Maieutics means childbirth: Socrates took advantage of an existing word that was used to refer to the techniques used in delivering a child and used it because he sensed that there was an analogy between giving birth to a child and giving birth to knowledge. But the similiarities ended there. Socrates’ Maieutics consisted of using speech as the main tool to help the “learner” self-guide himself from not understanding to clearly see some idea. But he didn’t just expose a knowledge and expected the learner to receive it passively. Instead, he made the learner the protagonist, forcing him to participate in the dialogue using guiding questions. Curiously enough, one of the most famous Socrates’s disciples, Plato, founded the Academia (a tribute to a mythical hero called Academo), the origin of our Universities today. Nevertheless, how far is the current Academia from the original one. Now, the Academia forces the student to follow predefined paths of knowledge in a passive way, just exposing the truths instead of guiding the student to reach the knowledge himself. It seems that the Academia has forgotten that the most important thing for the learner are not the answers but the questions: instead of presenting or displaying knowledge as a completely illuminated room, the learner should be forced to advance with just a torch in her hand, forcing her to actively turn on progressively the succesive torches that would lead her to the final understanding of a topic.
Back to The Little Schemer, I don’t know nor care whether the authors really knew they were using Maieutics or not. The important thing is that this technique works. At first, while I started reading it, the continuous question-answer flow of speech reminded me of some of the blog posts Uncle Bob writes. Such as this one. In Bob Martin’s maieutics variant, he usually presents us with a dialogue, in which there is a flow of questions and answers that help a lot in understanding the topic at hand.
But then a different and older bell rang in my head: “wait a minute, this sounds familiar”, I told myself. “This sounds like… Maieutics, of course!”
Forever old, I wanna be forever old
And, if Maieutics is one of the most veteran tools of speech, it can be said the same of LISP in its own field, compared to the rest of the programming languages. And they are old in the best way of being old. Not in the sense that they are about to die. On the contrary, they are old because they both are still alive and kicking. And they are still alive because people still use them. And people still use them because they are useful. As simple as that.
Take a look at one of the most appealing programming languages nowadays: Clojure. What is Clojure? A dialect of LISP. Take a look at the great talks and talkers: all of them use in some way or another this old technique of answered questions that focuses and enlightens our way, transforming us from mere listeners to understanders.
I’m already trying to learn Clojure. What about Maieutics? Um, I think I’m going to start using it even in some of my own posts. Why? Because, as Depeche Mode used to sing: