Book Recommendation

Hello, all. I’m new to Mycroft and am very interested in the software side. Are there any recommended books for getting started? Books are my preferred way to learn.


I don’t wanna discourage you from picking up a book, if that’s your thing, but it’s worth mentioning that they don’t work for me. I, too, am a book learner, but that just isn’t how programming works.

As you proceed down the path toward writing great code, you’ll do most of your learning by reading, but it’ll be docs, example code, tutorials, StackExchange, and forums such as this.

The good news is that Python is very conducive to a learn-as-you-go approach!

All of that said, I leave you with an unorthodox suggestion in case you do want to start with a book. Don’t get a Python book. Get a C++ book. Learn Python “separately.”

I bring this up because, though not by prescription, this is how “all” North American undergraduates do it. Your college will teach you a C-style programming language, as part of a “bottom-up” approach to computer science, and the student will do their on-the-side work using a more abstract language such as Python, the “top-down” perspective.

C-style languages are hell on Earth by comparison, but if you get as far as Chapter 4 or 5 of whatever - until the phrase “child class” makes sense - will give you a baseline understanding of what the computer is actually doing when you type stuff.

Then, when you go to do similar things in Python, you’ll have an intuitive, if simplistic, sense of what is what. All concepts from C-style languages translate to Python. The reverse does not hold true. Python’s much easier and, I think, more effective to work in, but that’s because it abstracts away most of what the machine is doing.

I wouldn’t suggest any of this to the average newbie, but anytime someone says they prefer to learn from books, I read, “I prefer a comprehensive explanation,” and that includes the why of it all.

Anyway, you don’t need to understand the arcane garbage that comprises your typical low-level system file. Just enough C++, or Java, or even C# which might hurt less, just enough to really know the stuff you’d have learned in CS200: Introduction to Programming.