The New Developer’s Guide to Learning Computer Science
Being a software engineer with a non-traditional background, I started with a large gap of knowledge that many other non-traditional devs have: a low level of computer science knowledge. Most of the time, this was not a big deal. I had a strong understanding of high-level items and had developed practical programming skills that made me valuable.
That said, there were concepts and knowledge that seemed to be universally known by everyone who went through a more traditional path that I didn’t know. I eventually compiled my own list of resources that helped me bridge that gap, and I thought I would share them with you.
The Imposter’s Handbook
The Imposter’s Handbook is a book written by Rob Connery and to quote from the book, “[This book is written for] self taught developers who have never taken the time to learn foundational concepts.” Rob Connery’s goal of the book is to help you develop a wide, but shallow lake of core computer science knowledge and avoids diving deep into any one of them. Rob’s goal is to teach just enough “…so you can have an intelligent conversation about a topic.”
The book is not a great book for those individuals who are still learning to code. It’s a distraction that will not provide real practical value at this stage of your learning. It is better once you have about a year or so under your belt. There is also a sequel book I would recommend as a follow up. It’s goal is much like the first, it widens your knowledge just a bit more and digs a little deeper without ever taking a deep dive on anything.
Basecs is a medium publication created by Vaidehi Joshi. Basecs originated as a way to deepen Vaidehi’s own CS understanding, and she would post what she learned weekly. This is great for everyone, especially those new to Computer Science since the explanations are given by someone freshly mastering the concepts so there is more empathy for the struggle to understand it. What results is a very approachable primer on all things Computer Science.
Her explanations are very accessible for anyone at any level in their career. Vaidehi does a great job of not just going over the theoretical parts of Computer science. She also has many great practical examples as well. Just check out her post on binary. Vaidehi also co-hosted a podcast of the same name that is based on the publication.
Every year at Harvard, David Malan teaches an intro to Computer Science course called CS50. David Malan took this same course as a freshmen, which sparked his path into the world of Computer Science. Inspired by this, when he took over as the course instructor many years later, he has evolved the course to so that it can reach as many people as possible, in our out of Harvard.
With these three resources you can make bridge that foundational gap that you have been lacking. Afterwards, if you feel so inclined, you can then take a deeper dive. Either way, you will have become a better developer for it.