The book is not bad, but since it is labeled as Introduction and no prior knowledge required, I will review it as such. Firstly, I don't think this is an introductory book - truly it starts with the basics, which is great, but it concerns itself with some topics that I believe are not very beginner friendly. Not that you should stray away from them - quite the contrary! But the exercises for some of them are insufficient - approximately 3-4 exercises per chapter, which feels rushed. I believe the book could really benefit from more (and better) examples. For instance, one chapter I read there was this boolean matrix or array used in statistics and the author used the formula and the maths to explain a concept unrelated to statistics - he just chose this for his example. To me it was interesting and I learnt something new, however I found it enjoyable mostly because I was already familiar with the concept. Generally, when you are teaching new skills, you want to eliminate foreign factors that cloud the person's understanding of the new concepts as much as possible. Introducing complexities such as statistics formula, when this could be completely avoided and substituted with a more natural example, is in my opinion a cruel joke to real beginners. Some of the examples are humorous yes, but in the asynchronous programming chapter the author uses the premise that crows are in a symbiotic relationship with termite-like insects, using them to construct advanced computers with reflective objects and exchanging information between the nests, and then continued to build on the chapter using this as the base for his example construction. It is so forced that it caused me pain just to read it. Then, a big chunk of the chapter revolves around that. So instead of thinking in terms of actual practicality and situations that could occur in an actual job, I had to think about crows sending those requests from nest to nest, etc. Some probably found it funny, I found it to be an extremely annoying and unpleasant metaphor for HTTP requests. Maybe I am being too harsh, but trying to find any sense in the example should not have to take me more time than the actual programming concept being taught. Lastly, in my estimation, the author gets fixated on some complex topics that a beginner most likely has no use for, while neglecting other more fundamental ones. I don't have experience in professional programming or huge projects, so he definitely knows what is required betten than me, but when a beginner doesn't see the uses and applications of what he's learning, he would probably neglect it, which is why I believe that these topics should either get more practice problems and examples, or just get scrapped altogether and get a separate section such as "More on.../For the curious once/Advanced/Side notes" etc.