Be it an O’Reilly book, or some of the Computer Science classics, many programming books can help you level up in your career as a Developer.
This can be especially important when you are getting started in Software Development, or in a programming language like Python.
These last months have been quite heavy and stressful for many of us, what with the Apocalypse taking place and all that.
So why not take advantage of the situation, and use our newfound free time to double down on our studies and read some programming books?
This may be the time to be twice as productive. As Paul Graham said:
“If it is possible to make yourself into a great hacker, the way to do it may be to make the following deal with yourself: you never have to work on boring projects (…), and in return, you’ll never allow yourself to do a half-assed job.”
Without further ado, let’s see book number 1.Would you help me decide what to write about next? Tell me what's troubling you in this 30 seconds survey!
Automate the Boring Stuff with Python
If you’re new to programming, there’s this very early stage when you’re still realizing the huge potential software can have, especially when applied to automation.
There’s a big difference between performing a simple task manually, and doing it a thousand times faster with a script.
There’s also a case to be made that Python is the best language to get started with Software Development, since its syntax and environments can be less daunting than C or Java. This way, you can spend less time doing this kind of “set up” things, freeing you up to focus on what’s important: solving actual problems.
I think Automate the Boring Stuff really sets itself apart from other programming books in this area: showing you from the get-go which typical day-to-day problems you can solve with Python scripts, or with code, really.
From basic program flow and logic to more advanced tasks like Web Scraping, this book walks with you all the way from beginner to proficient, without holding your hand too much.
My favorite project from that book is the one on the chapter Handle the Clipboard Content, which teaches you how to copy and paste text programmatically, eventually making a super-clipboard which stores more than one text.
I have a personal attachment to this book, as I used it to learn Python when I was still in high school, deciding on whether to study Computer Science or not.
If you work in an office and you’re thinking of pivoting into programming, this book is for you.
Here’s a link to Automate the Boring Stuff in Amazon.
Introduction to Algorithms (Cormen)
To every Computer Science student, Cormen et al.’s Introduction to Algorithms is our bible.
This book has been sitting on my shelf for years.
It has helped me prepare for many exams, or whenever I need to brush up on Data Structures before an interview.
Especially if you’re planning to get into Software Development without getting a college degree, this book is a definite must-read.
This Computer Science book is the most comprehensive study of basic Data Structures and Algorithms you will find.
- Algorithmic Complexity (with the best explanation of Big-O notation I’ve seen so far).
- Sorting Algorithms (many sorting algorithms).
- Graphs and Graph-related Algorithms (especially Binary trees).
- Hash tables and hashing algorithms.
- Dynamic Programming, Greedy Algorithms, Divide-and-Conquer Algorithms.
These topics and many others are explained in understandable terms, but with mathematical rigor and correctness. Not only that, but they often come up both in day-to-day work, and in interview problems.
Keep in mind this is a university level book, packed full with formal proofs and mathematical notation.
Even so, I think most developers will agree it is generally entertaining to read (if you don’t find Data Structures fun, make sure you’re picking the right career!), and explains most concepts really clearly and succinctly.
If you need to learn how a hash table works, or want to be able to build a binary search tree from scratch, or just need a quick brush up on sorting algorithms before an interview, this is the book for you.
As before, here’s a link to Cormen et al.’s Introduction to Algorithms in Amazon.
And, speaking of interviews…
Cracking the Code Interview
Ok, hear me out here. If you’re starting from scratch, I think Automate the Boring Stuff is the most practical way to start learning Python and programming.
And if you want to dive deeper and learn more advanced or theoretical Computer Science concepts, like Algorithms and Data Structures, then Cormen’s Introduction to Algorithms is the undisputed book to go.
However, when all is said and done, there is a craftsmanship that you can only learn by doing, and practicing.
As Charles Darwin once said:
“I have always maintained that, excepting fools, men did not differ much in intellect, only in zeal and hard work.”
If that’s the stage where you feel you’re at, then the best thing you can do is practice a lot, with many different problems.
That’s exactly what Cracking the Code Interview (CTCI, for friends) has to offer.
Sure, the first chapter deals more with the “soft” aspects of a Software Interview (which, again, if you plan to apply for a SWE job eventually, then you should master those too!).
But the rest of the book? Chapter after chapter of fun, challenging problems taken straight out of Google’s, Microsoft’s or Facebook’s interview processes. And, they are divided into categories so you can practice one subject at a time.
Feel like you need to polish your bit manipulation skills? CTCI has a chapter for you.
Want to practice thinking on your feet and deciding which Data Structures fit each kind of problem setup? CTCI has you covered, too.
I did feel my Software Interview skills improved after reading CTCI and going through all its exercises. However, that’s definitely not the most important part. The most valuable thing I got from CTCI, is practice: hands-on practice, solving many different problems through code.
To get started, be sure to check out Cracking the Code Interview on Amazon.
So far, I’ve made recommendations for:
- A very language-focused programming book for your first steps as a Developer.
- A more academic or broader book for the more theoretically-oriented readers.
- A last, very practical book with a lot of exercises for everyone, old and new to coding.
Each of these programming books has helped me learn a lot. Some have saved my skin on more than one occasion -or exam!-.
When I am preparing for an interview, or a tough exam, there are no other books I’d rather have (though, if you read this far and are thinking ‘hey, he didn’t mention <book_name>!’ this is your time to shine! Hit me up in the comments and I’ll make sure to add it to my reading list).
I hope at least some of these books will be as helpful to you or your programmer friends, too!
Have you already read any of these books? Are you reading any of them? Let me know what you think of them in the comments!
I’d love to know your opinion, both if you liked them or not. Especially if you can offer a recommendation for what you think is a better alternative!
If you want to get into Data Science or Machine Learning, check out my older post Machine Learning Books to Level Up as a Data Scientists.
(small disclaimer: all of these links are Amazon affiliate links. This means I get a small commission if you buy them. However, I’ll only review books I’ve actually read, and have genuinely recommended to people in real life)
I am sorry that this post was not useful for you!
Let us improve this post!
Would you tell me how I can improve this post?