tl;dr: Seven Languages in Seven Weeks is an awesome book that I would highly recommend to mid-level developers who’ve ever had a feeling of apprehension when wanting to learn a new language or technology.
Towards the end of last year, I was in a 1-2-1 with my line manager. 1-2-1s are meetings that allow you to discuss work issues, ways in which you can improve, air any concerns you have or to just chew the fat. My line manager also happens to be a tech lead so I took the opportunity to ask if he had any tech book recommendations. I was half-expecting to hear the usual suspects: Clean Code, The Pragmatic Programmer and Effective Java (all essential reading nonetheless). I was surprised when he recommended Seven Languages in Seven Weeks by Bruce Tate. Surprised mainly because I had never heard of it; partly because it sounded like one of those cheap Learn to Code in a Day books.
Spoiler: it’s anything but a cheap Learn to Code in a Day book.
What’s it all about?
As the name suggests, we learn seven languages in seven weeks. Learn might be a stretch. It’s more of a tour of seven languages. But that’s the whole point of the book — the intention is not to make you an expert in each language.
We start off each week with a new language:
- Week 1 - Ruby
- Week 2 - Io
- Week 3 - Prolog 🤮🤮🤮
- Week 4 - Scala
- Week 5 - Erlang
- Week 6 - Clojure
- Week 7 - Haskell
Each language has a dedicated chapter split into five sections:
- An introduction to the language.
- Day 1 - an introduction to the language’s syntax, design features and new concepts. These sections end with exercises for the reader to complete before the next day.
- Day 2 - ditto the above but increasing in complexity.
- Day 3 - ditto the above.
- A wrap up consisting of a recap of the previous three sections, pros & cons of the language and any final musings from the author.
It’s worth noting that learning the various syntaxes is not the focus of this book. You’ll learn so much more. You’ll learn about actor-based concurrency in Io and Scala. You’ll learn about how Scala addresses the criticisms aimed at Java (subsequently giving Java the kick up the arse it needed). You’ll learn about code hot-swapping in Erlang and how some applications can run for years without downtime. You’ll learn to appreciate the beauty of immutability with Clojure. You’ll remember why you still hate Prolog many years after your first encounter with it in University and why you swore, like Taylor Swift, to never ever ever get back together.
At this point, you may be thinking, “Io? Prolog? Haskell? Why would I want to learn those? They aren’t going to get me a job”. And you’re probably right. C#, Java and JavaScript could have easily been incorporated into Seven Languages. This — I believe — would have worked against the book’s favour for a couple of reasons:
- The majority of people reading are likely to be well-versed in at least one of C#, Java or JavaScript. This could make a couple or more of the chapters redundant for a large part of the audience.
- Comparing C# and Java wouldn’t be as interesting as comparing, say, Haskell and Ruby. The key here is being exposed to many languages that can differ from each other quite significantly.
Who should read it?
I consider myself a mid-level developer and feel like this book is pitched perfectly towards those at the same level. As a mid-level developer, you will have (at least) one language that you are very comfortable with. So much so that you may gravitate towards this language when starting a new project, regardless of whether it is the most suitable choice or not. By reading Seven Languages I have learned to throw this way of thinking away and to weigh up the pros & cons of languages/technologies when starting new projects so that the best tools for the job are selected. Ultimately, it has taught me not to be afraid to learn new things.
More junior developers may struggle with some of the more advanced concepts (e.g. concurrency models) and may appreciate the differences between the seven languages when more experienced. Don’t let this deter you from reading this book, you will still learn a hell of a lot.
More senior developers who, by virtue of having more experience, will have come across many languages in their time and therefore be able to pick new languages up at a quicker pace. You probably won’t gain as much from Seven Languages but may still pick up a thing or two.
Final thoughts
This was my first venture into the Seven <something> in Seven Weeks series and have to say that I was thoroughly impressed. While seven weeks might seem like a big commitment, it is only three days a week and the information is presented in such a way that it is easily digestible.
Before reading this book there were three languages that I would even contemplate putting on my CV: Java, Python and JavaScript. That list has not changed since reading this book. But that’s fine. That is not the aim of Seven Languages. This book has given me the confidence to say, “f**k it”, and to not be so anxious before learning a new technology (not just a new language). Let’s face it, as developers we are going to be learning a lot of shit throughout our careers so we better get used to it.
There is a follow-up to Seven Languages — Seven More Languages in Seven Weeks. I’ve got no immediate plans to read this but I imagine it’ll be as eminently readable as the original. I’ve also recently obtained a copy of Seven Concurrency Models in Seven Weeks that I’ll be working my way through soon (this is an area of development I really need to improve on!).
Anyway, have you read Seven Languages? Did you like it? Did you hate it? Are there any other books in the Seven <something> in Seven Weeks series that you would recommend?
Thanks for reading.