When I was in college, I used Al Sweigart’s Automate the Boring Stuff to give myself a crash course in Python. For an inexperienced programmer like me at the time, I found it to be very helpful in getting me to think outside of the C++ box that my coursework up to that point had used. A sequel to this book–Beyond the Basic Stuff with Python–aimed at people looking to take the jump into intermediate Python programming came out late last year; I read it to see if it lived up to the author’s previous work.
One of the questions I had to ask myself when reading and writing a review of this book was how should “intermediate programming” be defined? There are a multitude of beginner tutorials for every commonly used programming language, which are great for getting started no matter how experienced you are. There are also great technical resources out there for people who have been programming long enough to grasp various paradigms quickly. What this book seeks to do is help bridge the gap between the two, turning novice programmers into more professional ones.
Diving into the book
The book itself is broken up into three parts:
- Getting Started;
- Best Practices, Tools, and Techniques; and
- Object-Oriented Python.
“Getting Started” is the shortest section; it offers an overview of etiquette when seeking programming help online and how to appropriately set up your Python environment. Of these, getting your Python environment set up correctly is the most essential, and it will save anyone new-ish to Python from future headaches.
The next two sections are where the meat of the book lies. The early chapters in “Best Practices, Tools, and Techniques” deal with writing code that other people can read easily, an important lesson for any collaborative project. The middle chapters cover some of Python’s oddities that may be difficult to recognize without prior knowledge. The final chapters of this part give an overview of more high level concepts, such as Big O notation, proper Git project organization, and writing good documentation.
The book closes with “Object-Oriented Python,” talking about programming in a way that is approachable for beginners–and it gives a few sample projects as well.
Reading this book brought back memories of a lot of the lessons I learned while studying computer science in college. I think it’s an excellent starting point for people who have picked up programming outside of a classroom; many of the topics covered fill in gaps someone might have missed if they are self-taught.
If you are not self-taught or if you have been programming professionally for a while, this book may be less useful. However, the book’s coverage of Python-specific paradigms were still informative and more thought-out than the tutorials I’ve encountered online. It would be a great book for novice programmers looking to become more professional in their programming as it does a good job covering some specifics of Python.