Essential Skills and Concepts For The Self-taught Programmer
You've had to learn on the job. New languages, new frameworks, new ways of doing things - a constant struggle just to stay current in the industry. This left no time to learn the foundational concepts and skills that come with a degree in Computer Science.
Like Rob Conery, I don't have a degree in Computer Science (CS), and despite decades of professional experience with software development, I sometimes feel overwhelmed by all that which I don't know; in fact, to a degree that I asked my almer mater whether they would accept me as a student on the CS degree. (Unfortunately, since I already have (another) degree, the answer was no.)
While I'm getting fed up with all the talk about impostor syndrome, I can definitely identify with the Dunning-Kruger effect to the degree that as I've learned more, I increasingly feel like Socrates. All I know is that I know nothing.
Thus, I can definitely sympathise with the project of this book: give the professional, but self-taught, programmer a crash course in CS topics. I don't think I'm the target audience, though.
Despite a lack of formal CS education, I've managed to pick up most of this stuff already. Some of it, like shortest-path algorithms, I haven't used for twenty years, so it was fun to re-reread it. Other parts were less interesting to me. In general, I found the book somewhat uneven, but that's understandable, as it covers much ground.
The only part where I felt that I could have used some education was the part about complexity analysis (with terminology like NP-Complete, NP-Hard, and so on), but after reading that section, unfortunately, I still don't understand it.
The part about design patterns left me puzzled, because most of the patterns (particularly Composite and Decorator) I couldn't recognise.
In general, I found it a bit odd to include chapters on design patterns and automated testing, which seems to me to belong to the realm of practical software development rather than academia.
Great book, it has a bit of everything for everybody, which is also its only drawback.
Because the chapters are nicely isolated, it's really easy to skip/skim through those about topics you already know. On the other hand, the chapters that interested me could've gone deeper on their subjects. It's easy to understand why, given the concept of the book.
Either way, this is a great book for self-taught programmers to tell you about parts of software development you didn't know you were interested in.
I deeply respect the courage Rob showed by writing a book on topics he is still learning. This book shows us that even a Rob Conery doesn’t get everything right the first time and that we mere mortal developers are not alone with our struggles to understand complex topics.
Unfortunately, the book isn’t advertised as this ongoing learning experience. Instead, it is marketed as a book to learn the fundamental concepts and skills that come with a degree in Computer Science. That is simply not what this book is about. In the middle of the book, Rob replaces this goal with all the things you should know to be a good programmer and only he knows how the last part on Unix tools fits in.
The book has great chapters where the talent of Rob shines. I enjoyed the explanation and comparison of the Bellman-Ford and Dijkstra algorithms to find the shortest path in a graph. His explanations combined with the illustrations made it super-simple to follow along and to understand the ideas. The same is true for the chapter on databases. However, there you can already spot the problem: So many topics are started but can’t be covered beyond a simple description: DataMart, Data Warehouse, Cube, Snowflake and many more. Are a few paragraphs per term enough to have an intelligent conversation about it? I don’t think so, but that should be the point of the book (according to the preface in the version I read).
The chapter on TDD is a poster example for this book: It is a well-written explanation on how TDD works and how it could guide the design of your application. Then it stops. All you get is the essence of the idea, nothing more. Why should you use TDD? What are the benefits? What could be a problem? You are left to figure it out on your own; again. All we get in the book is that it is controversial, most of the people Rob has asked don’t strictly do TDD and Rob needs to delete less code when he uses it. Really?
The missing Index at the end of the book is just another problem, but one that could be fixed without much effort. Without the Index, you need to search the whole book for a concept. The same problem is the missing changelog. A living book that is intended to change should at least have a list of those changes.
All in all, I’m disappointed and fear this book has a long way to go until it reaches the quality level we expect from a Rob Conery. Maybe the next iterations will get us there.
So, I liked this to an extent: It's well-written, moves generally fast, and there are videos to supplement the text. But.....I feel like the material is only really defined, and there's a lack of depth that can't really justify its hefty price tag. This is good material, but nothing you can't find just as well explained on the internet for free, or in other, more excellent books like Grokking Algorithms. I purchased both available "seasons", so I hope I feel differently about the 2nd one.
Great and easy to read book which with simple examples presents overall Computer Science subject. Topics are not covered in depth but really helps to memorise, get basic understanding or start learning about them. Despite my Software Engineering degree I still found some new important topics, explanations from different angles and the help to connect already known information. 👌
I didn't studied CS, but I'm a former EE graduate who moved to work in the Software engineering area. But this book lacks a lot of details and tries to cover to much topics with no followup or good explanation. I don't think this is a good starter book for people who want to learn CS fundamentals.
This book was recommended to me, when I was "suffering" from a strong impostor syndrome. I was very excited about this book and finally got my hands on a paper (not digital) copy.
Now I have a mixed feeling about it. It made me more confident, as most of the stuff was familiar to me, thus my impostor syndrome has lessened. It made me more keen to have some fun with unix shell of all things. I have found some more people to follow on github and youtube. And that was good.
However paper version seems to have some errors - for example there was a link named "here" but the link itself was not there (as it's a book :D). Sometimes there was no a picture where it should be. That somewhat degraded the experience.
I would however recommend this book for people who have never heard about Big-O notation, never seen (and implemented) a shortest path algorithm, or never heard about trees or graphs.
Until 70% of the book, I will totally recommend this book to a junior developer that want to know more about development, system administration and database. What drives me to this book was the "Comp Sci, Baby" chapter It is a good chapter, well writen, but not a life change *for me*. Before the 70% the book have some chapter about OO Patterns and 0ther patterns and this is the section that I really like, its easy to use for questions like: "How a composite/bridge pattern works?" I really enjoy the whole book, chapter about Linux, Docker and something that I already know I take a brief look in the headline and first paragraph.
This book gets updated from time-to-time, so some of my review may eventually become outdated.
First the praise: Rob Conery is an entertaining writer, the code samples are simple and short, and the entire book can be read without being in front of a computer. As promised, it covers a wide range of topics, most of which are likely to cover new ground for the reader. Aside from the chapter on Unix, there was nothing in here that was simply an "Introduction to..." write-up that's already been covered a hundred times in other books
My biggest problem with the book is that many of the topics are very, very obscure. The book's forward, written by a well-known Microsoft developer, refers to ""missing fundamentals. Like when you’re in a meeting and someone throws out “Oh, so like a Markov Chain?”"
I don't know if that actually happens when developers meet at Microsoft (the author also worked at Microsoft), but as a mainstream developer I find this laughable. I've never heard or read a fellow developer mention Markov chains. Or Lambda Calculus, or Dynamic Programming, or Carl Gauss or Richard Bellman or many of the other people that the author name-drops. Unfortunately this obscure content is mostly located in the 1st half of the book, which seems to suggest the author thinks its important to know. OK, well, I know it now, sorta, but I won't remember any of it in a year's time because I will never come across it again!
Overall, it's a book that has some good parts and some bizarrely high-brow content. If you have been in this field for awhile it will be obvious which is which and you can skip over the latter. (YAGNI, as the author preaches but doesn't practice.) I pity the young developer who slogs through Lambda Calculus early in the book and wonders if he's in the wrong profession.
I read this book as a refresher and to fill in a few knowledge gaps from my computer science education (e.g. I never took a course on compilers) even though the book really wasn't meant for someone like me.
Overall, it's clearly written with good examples that are easy to understand. My only complaint is I wish it had a bit more detail even though I know it's impossible to have a comprehensive computer science education in one book. So read this book as a jumping off point, I'm pretty sure Rob says that exact thing in the preface.
If your a programmer without a computer science degree and aren't already familiar with the topics in this book, it definitely won't prepare you for an interview at Amazon, Google or Microsoft. You'll still need to spend hours with external resources, practicing big-O and writing fundamental data structures and algorithms. Although, to be fair even someone with a computer science degree typically needs to do that before interviewing at big tech companies.
Since the book is such a quick and easy read I'll definitely use it as a refresher before my next set of interviews.
As someone that has been in the field for over 20 years my expectations about this book were a little bit different, considering how it is advertised("Fill the gaps in your career"?) and the cost. I understand that it is work in progress and to say the task at hand is HUGE is a severe understatement ,but, it's just too superficial and and broad at the current state. No depth at all. It might be a good reference list for a deeper study of our field, but nothing more.
The good stuff:
- There is some fairly decent and useful overview information, if your goal is to just skim trough different topics. - Fairly good overview of complexity etc. - Algorithms(the ones that are covered) were explained well.
The bad stuff:
- Too broad and horizontal(a lot of subject to cover) and as a result none of the topics are discussed in details. - In many of the subjects it just lacks definitions of the concepts the author is trying to cover, but it rather starts off with personal bias and opinions and different views which would make it really hard to follow by someone that is just starting out.
In general I think this is a good book, especially for people without formal CS education.
Lots of various topics are covered, however usually on a rather high level (which is understandable, as if one would want to deep dive into each topic, one could write a few books about each). I'd say this book is a good way for the reader to identify which areas need more study.
My main issues are: - the printed edition has some errors, sometimes rather annoying (incorrect code samples - ie. sth is described but the code sample shows sth different, lack of images which are referred to) - IMO the Lambda Calculus and Algorithms sections are a bit rushed (as in - end too quickly. Quality is good). It is hard to understand or remember them without rereading given chapters. Maybe more examples or summaries would make these topics more memorable?
To sum up - if you think you lack CS knowledge or just want to refresh some info, I would say that this is a good read.
E' stato un piacevole ripasso di argomenti studiati (anni fa ormai) all'università. L'autore chiaramente non approfondisce nulla, sono una serie di bullet point più o meno sviluppati per dare al lettore alcuni concetti di base fondamentali nel campo dell'informatica. Molto interessante la sezione iniziale storico/filosofica.
Ci sono delle scelte che non mi hanno convinto: il capitolo finale sulla Bash di UNIX l'ho trovato troppo "pratico", così come la parte relativa a TDD.
Per il resto lo consiglio senz'altro a chi NON ha alcuna conoscenza degli argomenti trattati, perchè può essere un ottimo punto di inizio per successivi studi. Per gli altri può essere un buon ripasso, ma non aspettatevi una full immersion.
If I had read it when I started my career as self-taught programmer I would have give it five stars. It is a good introduction to several topics that most professional programmers must know about IMHO. But the cover says it is a computer science primer for self-taught programmers and the problem is there are four chapters have nothing about computer science. Moreover the functional programming chapter is really shallow. I would prefer on shallow chapter on programming paradigms or an overview of other classical algorithms instead of the chapters on software design patters, software design principles, testing and Unix.
The rest of the chapters where quite useful so I'm going to read the season 2 anyway.
+ Very easy to read - was looking forward to continue reading as if this was some fictional book; + Inspirational - you get to see how excited a person can be about learning new things and technologies and how it is even possible to incorporate those into time with your family; + Has some nice practical advice - will definitely get back to the chapter about learning new language when I will finally start doing it; - Not detail enough to actually learn something directly from it. On the other hand I am not sure if that is the actual purpose of the book. I think it is more of a guide on the things that could be learnt and how that could be achieved.
It was pretty good, but not quite what I was hoping for. The range of topics was interesting, but I don't really feel much more confident in any of the them after having read this book. For a lot of the topics, it seemed to stop just short of actually explaining the thing before abruptly moving on. I think the author assumes the code examples to be more self-explanatory than they actually are.
The book also could have used more editing. I know grammar and punctuation aren't as important as the content itself, but the quality of editing does have an effect on how much I feel I can trust the author. Every author needs an editor.
This book was fantastic. 10/10. It helped me grasp a lot of concepts that I had missed as a self-taught programmer. Certainly, there is a lot more for me to learn, but this book helped me fill a lot of gaps. I liked the sections on BigO, graph theory, lambda calculus, algorithms, etc. The more I study these algorithms the quicker I can recognize them in the code that I'm writing at work everyday. I would recommend this to anyone that doesn't have a formal background in computer science.
Some chapters were boring and I skipped over them, but no worries.
This book is filled with less than introductory mentions of topics that require further research or studying from the reader; which is the intended purpose of the book. I was annoyed with the repeated plug to buy the video tutorials from the author's website. Felt like that didn't need to be repeated with every chapter.
The chapter dedicated to Software Design Principals were out of place and few of the principals were not accurate in my opinion.
The author's enthusiasm and excitement came through in each topic which kept me getting through the book.
This book does exactly what it preaches:give you a primer on the core concepts taught in a 4 year cs degree sans the academic tone of writing you'd find in most textbooks.
Rob Conery does a great job in making this book as accesible as possible. The writing is concise and isn't filled with complicated jargon who have to scratch your head with. There are almost zero required prerequisites (apart from an understanding in high school math which can be picked along the way. ) and everything is taught along the way.
I really wanted to like this book and the premise is awesome. Unfortunately the delivery is poor - very often more confusing (or even inaccurate) than many online resources on the same subject. Indeed if the author had spent more time attempting to source and copy (or link to) the best explanations this would have come out far better. Imposter Syndrome is very real (even with a CS degree) but I'd suggest spending your time on free resources like KhanAcademy, Stanford SEE, or MIT OCW.
As a new developer I quite enjoyed the books and the concepts that Rob talked about. I enjoyed that the topics were not in depth and that they were more general. This way I could do my own more in depth research on those topics and got some nice refreshers on topics that I already knew. Overall if from my experience I recommend the book as long as you go into it not expecting most topics to be covered in depth and use it more of a guide to see which knowledge you are missing.
I’d highly recommend this book, it does just what it says on the tin. You can read it like a book and take in the core ideas, then look up the details as and when you need them. If you are in the middle of a project that requires any of the concepts in the book, then it can also serve as a launch point into further study, it also provides some nice examples to work through to help drill the points home.
It's a nice book with a good round-up of computer science main theories. However, I sense some amateurism because it has a fair deal of spelling mistakes and placeholders in the text. There are also some passages that are repeated... I guess you should wait for new versions before spending 30$ on it.
Offers a good introduction to the topics of computer science that make up the foundations of computers and coding, but I have to say that I finished some chapters still feeling rather confused over what it is I was supposed to know. Perhaps it's just me, but I had to do lots of side Googling to follow along.
If you want to refresh your memory or take a deep dive into some developer content you probably have heard but you haven't paid too much attention, this book is for you. As the title says "Imposter", the author explains why he wrote the book, because of the Imposter Syndrome that affects most of the developers. This book is also highly recommended if you are going to have a job interview.
It has a rather good start, but author doesn't go deep into any topics, just giving some basics and / or random details per topic. Second part of the book is very subjective in selection of topics to discuss.