Book Review: Eloquent JavaScript

I was a JavaScript hater.

I hated JavaScript for poor cross-browser support. I hated JavaScript because it was only used for useless effects in web pages. I hated JavaScript because I could write it easily but get nowhere fast. I hated JavaScript because OOP is supposed to use classes, right? I hated JavaScript because JavaScript: The Definitive Guide was 1000 pages long and JavaScript: The Good Parts was 172 pages. I hated JavaScript because I didn’t understand it.

In a quest to be more useful to my team at work, I’ve been wanting to stop avoiding the “front-endy” cards on our story wall and the JavaScript that goes with them. It’s been difficult, but for no good reason. I kept trying to learn pro JS but couldn’t get past my fears and preconceptions. In order to get past all of that, I realized I’d need a fresh perspective, and that’s where Eloquent JavaScript, by Marijn Haverbeke came in and changed my life.

The book’s subtitle is “A Modern Introduction to Programming”, and so initially I was afraid that it would be too basic for me. I didn’t need to learn how to program, after all – I needed to learn how to program with JavaScript. I thought I’d give it a go anyway, since I’d tried other books that were meant for intermediate level readers and gotten basically nowhere with those. It turns out that after reading the introduction that I had discovered the fresh perspective I’d needed. What better a way to look at a programming language with a “fresh set of eyes” than to put aside my preconceptions about programming entirely?

At first that was difficult – trying to read the book through the eyes of someone who’d never written a program before – but after a few chapters I found myself feeling something I hadn’t felt in a while, a sort of fascination with this “programming stuff.” That’s not to say that after a couple of years as a software engineer I’ve already burned myself out. Still, in reading the first few chapters of Eloquent JavaScript and re-learning what variables are and what loops are for, I got thrown back to my childhood and the feelings of amazement I’d get after getting my first BASIC programs to run.

As the book progresses into more advanced concepts, Marijn’s tone is conversational but instructive. About halfway through the book I felt more confident in my understanding of the language, and eager to learn more. I never got bored, and while it continued to be a challenge to put aside what I already knew (or thought I already knew) I found myself gaining a deeper understanding of JavaScript and of computer programming in general. Each chapter teaches enough to get you started, but as it’s a small book, the chapters are necessarily concise. This isn’t a incredibly comprehensive book, it’s certainly not JavaScript: The Definitive Guide, but that’s a feature, not a bug. I’d say the book’s enough to get you started if you want to dive into JS and start doing useful work straight away.

I can’t stress enough the fact that this book has not only changed my mind about JavaScript, but has also renewed my love for programming. It’s amazing what a few anecdotes and a helpful examples can do when combined with a willingness to put aside your preconceptions. It’s been said that the surest way to prevent learning about something is to know about it. The mind seemingly has an automatic cutoff that prevents you from gaining new knowledge once it’s convinced it knows all it needs to know. If you are like I was, fearing JavaScript because I didn’t understand it, hating JavaScript because it’s different, avoiding JavaScript because someone else was around to do the work, I appeal to you: STOP! Get yourself a copy of Eloquent JavaScript, put your preconceived notions about it (and if you can, about programming, too), and open your mind. If you’re new to programming, start with this book. You’ll be getting perhaps the best introduction to programming available today.

One comment

  1. Pingback: Book Review: The Principles Of Object-Oriented JavaScript |

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>