-
Book Overview & Buying
-
Table Of Contents
Hands-On Software Engineering with Python - Second Edition
By :
Writing a book about software engineering, in my experience, isn’t all that different from the discipline itself. Both can be frustrating — approaches don’t always work the way you expect. Both offer chances to experiment and explore, though often within constraints that force compromises. And both require anticipating problems, questioning assumptions, and revisiting your goals as the work unfolds. A conscientious author — which I’ve tried to be — looks for the questions readers might ask and tries to answer them before they’re asked.
That’s what I set out to do in this edition: re-evaluate the material from the first edition through the lens of everything I’ve learned since. The shift from server-based to cloud-native, serverless systems fundamentally changed how I think about software. So did the experience of mentoring other engineers — teaching revealed blind spots in my own thinking. These, among other experiences, pushed me to reexamine not just how we build systems, but why we make the decisions we do.
If there’s one idea I hope readers take away from this book, it’s that good engineering depends on deliberate, thoughtful decisions, not automatic ones. While The Zen of Python says “there should be one — and preferably only one — obvious way to do it,” system design rarely offers that kind of clarity. When faced with multiple viable paths, it’s usually more important to choose based on real needs and constraints than to default to whatever looks simplest.
That’s the lens I’ve tried to apply throughout the book: to present options, examine trade-offs, and explain the reasoning behind the choices made in the story behind the code. Some of the code in these pages may solve a problem you’re working on — and I hope that’s true. But more importantly, I hope you’ll engage with it critically: adapt it, extend it, or even discard it if it doesn’t suit your needs.
This book isn’t a cookbook. It’s a guidebook, meant to help you navigate, not hand you a recipe.
Writing this book has made me a better engineer, I feel. I hope reading it will do the same for you — not because you’ll follow every pattern or agree with every choice, but because you’ll ask better questions along the way.