Just by reading the heading of this blog post won’t tell you anything about what kind of book I am writing a review on. The full title is actually The imposter’s Handbook – A CS Primer For Self-Taught Programmers, where CS is short for Computer Science.
The book is written by Rob Conery, a self-taught programmer without a CS degree. In 2014 Rob spent a year studying Computer Science fundamentals and wrote about the things he learned, which resulted in this book. When I heard the book being discussed on the Coding Blocks podcast I got interested and decided to order a copy of it for myself. Just like Rob I am (mostly) self-taught when it comes to Computer Science subjects. I do have a master’s degree, but in electrical engineering, so none of the courses I took on the University covered the subjects that Rob writes about.
CS subjects covered in the book
The book touches on many areas, and does not deep dive into any of them, so it is probably wrong to say that any of the subjects are ”covered”. However, the author introduces each subject and gives you enough understanding about them to cover the basics. And if you want to deep dive into anyone there are a lot of books out there that do cover the details.
Subjects discussed are:
- Lamdba Calculus
- Big O
- Data Structures
- Software Design Patterns
- Software Design Principles
- Functional Programming
- Essential Unix
As you understand, with these many subjects, you cannot dive into details and still have everything in a single book.
Is this book for me?
I would say that I depends. For me personally I enjoyed reading the first chapters, but from Big O and forward I pretty much already knew the things that the book brings up. However, I recognize that I am not the typical self-taught programmer. I read, a lot, of books on programming, I have taken Coursera courses on algorithms, and I do programming challenges on Codewars, Hackerrank, and Codility just for the fun of it, I listen to several programming podcasts, and subscribe to several programming newsletters. But if you look at the subjects listing above and feel that you don’t have a basic understanding on these subjects, this book is most certainly quite useful.
I would really like to give this book a high rating, since I know that the author has put a lot of effort into learning the things himself, as well as writing about them in a way that is useful for others. There are however some things that lowers the score. These are:
- Not correctly formatted for print
I have the printed version of the book, and it is obvious that the source needs to be looked over to avoid having pages where the last line on the page is a heading, and similar formatting errors.
- Questionable code quality
I found many of the code samples to be questionable in regards of code structure, naming of variables, etc. I expected the book to contain code samples that clearly showed the expected functionality.
- Questionable text quality
When I read a technical book I expect it have been proof read and reworked a couple of times. This book often feel more like an early draft than the finished book.
Taking the above into account I give this book a score of: 3/5. It can definitely be good to get a brief understand on some important CS subjects, but if you want to learn any of the subjects really well, I recommend complementing with some books from a well known publisher.