Software Design for Python Programmers: Principles and patterns

Add your review

$59.99

$59.99


Note: Prices may fluctuate as sellers adjust them regularly. You'll see the latest price at final checkout.
Add to wishlistAdded to wishlistRemoved from wishlist 0
Add to compare



Get a free eBook (PDF or ePub) from Manning as well as access to the online liveBook format (and its AI assistant that will answer your questions in any language) when you purchase the print book.
This book shows you how to level up from writing Python code to designing Python applications. Following intuitive “before” and “after” examples of improved code, you’ll learn to plan and execute Python applications effectively and avoid bugs associated with unmanaged state, poorly-formed classes, inflexible functions, and more.
Great applications take advantage of established design principles and patterns that maximize performance, maintainability, and reliability. This book helps you master the “Pythonic” approach to architectural principles, such as encapsulation, abstraction, method variation, and more. The examples are in Python, but the techniques will apply to any object-oriented language.
In Software Design for Python Programmers, you’ll learn to:
• Analyze requirements and plan application architecture
• Evolve designs through iterative development
• Shape Python classes with high cohesion and loose coupling
• Use decorators to introduce abstraction, enforce constraints, and enrich behavior
• Apply industry-standard design principles to keep code modular and maintainable
• Choose and implement the right design patterns for complex challenges
About the Technology
Great software starts with thoughtful design. You’ll be a more effective developer if you can decide how data will
flow through your applications, create a winning software architecture, and structure functions, classes, and modules before you write a line of code. This book will get you started!
About the Book
Software Design for Python Programmers is a practical guide for creating maintainable, well-structured software in Python. By investigating clear “before and after” examples, you’ll discover how even small design choices can have a huge impact on an application’s clarity and reliability. As you go, you’ll learn how to gather requirements, shape a program’s architecture iteratively, create clean and reusable abstractions, and select design patterns that solve the real problems you’ll face on the job.
What’s Inside
• Turn vague requirements into solid designs
• Python-specific software design techniques
• Create classes with high cohesion and loose coupling
About the Readers
For programmers comfortable with Python syntax.
About the Author
Ronald Mak is a former NASA senior scientist. Currently, he teaches data science and computer science at San Jose State University. He is the author of Object-Oriented Software Design in C++.
Table of Contents
Part 1
1 The path to well-designed software
2 Iterate to achieve good design
Part 2
3 Get requirements to build the right application
4 Good class design to build the application right
Part 3
5 Hide class implementations
6 Don’t surprise your users
7 Design subclasses right
Part 4
8 The Template Method and Strategy Design Patterns
9 The Factory Method and Abstract Factory Design Patterns
10 The Adapter and Façade Design Patterns
11 The Iterator and Visitor Design Patterns
12 The Observer Design Pattern
13 The State Design Pattern
14 The Singleton, Composite, and Decorator Design Patterns
Part 5
15 Designing solutions with recursion and backtracking
16 Designing multithreaded programs

From the Publisher

Software Design for Python Programmers headerSoftware Design for Python Programmers header

Software Design for Python Programmers quote 1Software Design for Python Programmers quote 1

“Highly informative—not just for beginners, but also for working professionals.”

Natasha Kulkarni, Oracle

Software Design for Python Programmers quote 2Software Design for Python Programmers quote 2

“Clear explanations, practical examples, and the focus on real-world application development.”

Shantanu Kumar, Amazon

Software Design for Python Programmers quote 3Software Design for Python Programmers quote 3

“Quite literally a career-changer.”

Robert Nicholson, Independent Consultant

Software Design for Python Programmers about the bookSoftware Design for Python Programmers about the book

why this book?

Software Design for Python Programmers teaches you how to apply solid object-oriented design principles and industry-proven patterns to your Python code, so your applications become easier to maintain, extend, and debug.

The book uses clear “before” and “after” code examples in plain Python to show how design decisions shape real software, making abstract concepts concrete and practical.

It bridges the gap between knowing Python syntax and thinking like a software architect, helping you write systems that stand up to real-world complexity and future changes.

about manningabout manning

about Manning

Manning helps developers and tech professionals stay ahead in a fast-moving industry with expert-led books, videos, and projects. Learning never stops, but it’s hard to keep up, so we focus on content that’s practical, clear, and trusted. As an independent publisher, we adapt quickly, from pioneering early-access books to offering DRM-free eBooks. Our series, like “In Action” and “In a Month of Lunches”, reflect a commitment to making complex topics accessible.

Add to Cart

Add to Cart

Add to Cart

Add to Cart

Add to Cart

Add to Cart

Customer Reviews

5.0 out of 5 stars 14

3.9 out of 5 stars 5

4.3 out of 5 stars 17

4.5 out of 5 stars 24

5.0 out of 5 stars 7

4.8 out of 5 stars 12

Price

$47.49$47.49 $43.47$43.47 $41.99$41.99 $73.01$73.01 $53.21$53.21 $49.44$49.44

Level of proficiency
Intermediate Intermediate Intermediate Intermediate Intermediate Advanced

About the reader
For beginning to intermediate Python programmers. For developers who know Python. For beginning-intermediate programmers. For readers with intermediate Python skills. For Python programmers familiar with tools like pandas and NumPy, and the basics of statistics. For Python programmers and data analysts.

Special features
Includes liveBook with out built-in AI assistant. Includes liveBook with out built-in AI assistant. Includes liveBook with out built-in AI assistant. Includes liveBook with out built-in AI assistant. Includes liveBook with out built-in AI assistant. Includes liveBook with out built-in AI assistant.

Pages
240 376 384 648 560 440

Publisher ‏ : ‎ Manning Publications
Publication date ‏ : ‎ February 17, 2026
Language ‏ : ‎ English
Print length ‏ : ‎ 456 pages
ISBN-10 ‏ : ‎ 1633439496
ISBN-13 ‏ : ‎ 978-1633439498
Item Weight ‏ : ‎ 1.2 pounds
Dimensions ‏ : ‎ 7.38 x 1.14 x 9.25 inches
Best Sellers Rank: #263,267 in Books (See Top 100 in Books) #61 in Object-Oriented Design #74 in Computer Systems Analysis & Design (Books) #172 in Python Programming
Customer Reviews: 5.0 5.0 out of 5 stars (11) var dpAcrHasRegisteredArcLinkClickAction; P.when(‘A’, ‘ready’).execute(function(A) { if (dpAcrHasRegisteredArcLinkClickAction !== true) { dpAcrHasRegisteredArcLinkClickAction = true; A.declarative( ‘acrLink-click-metrics’, ‘click’, { “allowLinkDefault”: true }, function (event) { if (window.ue) { ue.count(“acrLinkClickCount”, (ue.count(“acrLinkClickCount”) || 0) + 1); } } ); } }); P.when(‘A’, ‘cf’).execute(function(A) { A.declarative(‘acrStarsLink-click-metrics’, ‘click’, { “allowLinkDefault” : true }, function(event){ if(window.ue) { ue.count(“acrStarsLinkWithPopoverClickCount”, (ue.count(“acrStarsLinkWithPopoverClickCount”) || 0) + 1); } }); });

3 reviews for Software Design for Python Programmers: Principles and patterns

0.0 out of 5
0
0
0
0
0
Write a review
Show all Most Helpful Highest Rating Lowest Rating
  1. Black family

    Software engineering in the age of vibe coding
    This book was very different than what I expected, as I read lots of books on software design, but in the age of vibe coding how can this one stand out. A couple thoughts, first, that the author acknowledges that AI can be used for development and for simple applications it may be appropriate, but, if you want to write a more complex application then software engineering comes in handy. They also mention that with experience the design can be shortened.The book starts off with are you writing the correct solution. So they go through how do you collect requirements, as a starting point, and why it is important to have dates for when freezing the gathering. They talk about functional and non-functional requirements, as all of these are important, with discussion as to why.So, once you have come up with what you are actually building, then you should be looking at documenting the design, and there is a long discussion about UML diagrams. These are old-school but can be very useful. Personally I find flow charts, data flow and sequence diagrams enough, but there is a reason why so many people use the various diagrams. To be more complete, as they didn’t just write it for me, they do a great job discussing various diagrams.Ok, so now we need to take into account design patterns, and they go through most of the Gang of Four patterns, in great detail, which can be helpful, and they help give ideas as to when you may want to pick one pattern or another. This will be useful for anyone using object oriented programming languages, and if you don’t know how to use OOP in python this book will give you the knowledge on how to take your python skills to another level, rather than just writing simple programs.The author also give a great deal of experience on expecting to start going down one path, then realize it isn’t ideal, so going back and trying a different path, until the design is deemed ideal for the requirements and expectations.I loved the spiral design methodology while in college and in a scrum approach it can still be useful. While reading the book I was thinking about the importance of knowledgable architects, to help with keeping good design, and the importance of having a coding standard.I also found the section on programming to contract to be very helpful to newer developers/architects and they discuss recursion and multithreading in detail.For people that want to design applications that are maintainable, expandable and meet the expectations of the stakeholders this book will prepare you to do that.This is purely for Object Oriented programming, and I realize functional programming would be another book, though I do miss it, and it doesn’t take into account of the dynamic properties of Python, which I think is a miss, but that is just my thoughts. In python you can dynamically add functions and properties but that is harder to design well for and to use with large groups without a great deal more documentation.

    Helpful(0) Unhelpful(0)You have already voted this
  2. Jonathan Reeves

    From “Coder” to “Architect” – The Missing Link for Pythonistas
    If you’ve ever looked at a massive Python script you wrote six months ago and thought, “I have no idea how to change this without breaking everything,” buy this book immediately.Why This Book Stands OutMost Python resources focus on syntax—how to write a list comprehension or use a dictionary. Software Design for Python Programmers is different. It’s for the developer who knows the “how” but struggles with the “why.” Ronald Mak (a former NASA scientist, which shows in his precision) bridges the gap between hacking together a script and engineering a robust application.What I Loved:The “Before and After” Examples: This is the book’s greatest strength. Instead of just theorizing about “loose coupling” or “high cohesion,” it shows you messy, brittle code and walks you through the iterative process of refactoring it into something elegant.Practical Design Patterns: Design patterns can often feel academic or overly tied to Java/C++. This book makes them feel native to Python. The chapters on the Factory Method, Observer, and Strategy patterns are worth the price of admission alone.Focus on Requirements: I really appreciated Part 2. It reminds us that good design starts with understanding the user’s needs, not just writing clever code.Beyond Just Python: While the examples are in Python, the lessons on encapsulation and abstraction are universal. I’ve already found myself applying these concepts to my TypeScript projects.The Bottom LineThis isn’t a book you read once; it’s a manual you keep on your desk. It teaches you how to manage state, avoid “god classes,” and build software that won’t fall over the moment requirements change.Perfect for: Intermediate developers ready to take the next step in their careers or anyone tired of maintaining “spaghetti code.”

    Helpful(0) Unhelpful(0)You have already voted this
  3. John C. Gunvaldson

    A Serious Python Architectural Playbook – Developers Moving to Python
    As a developer with 30+ years in SQL, Java, and .NET, I picked up Software Design for Python Programmers to see whether it treats Python as a serious engineering platform rather than just a scripting language. I’ve only skimmed the chapters so far, so this is a preliminary impression—but the direction is strong.The material reads as intermediate to advanced. The emphasis is clearly on architecture, design principles, and the disciplined application of the full software development lifecycle—from requirements through deployment. This is not a lightweight “Python tips and tricks” book; it approaches Python from a professional, structured engineering perspective.What stood out immediately is how recognizable the design patterns and core principles are to someone from a Java or .NET background. The book appears to focus on applying established OO and architectural concepts directly within Python, which is exactly what experienced developers transitioning to the language are looking for.There are many examples and clear diagrams, and the author uses an ongoing dialogue between a developer and a manager to reinforce key concepts. It’s a distinctive instructional device that helps ground abstract ideas in practical conversation.The author, Ronald Mak, brings decades of experience across C++, Java, and Python, and that background is evident in the very, very professional tone and structure. The approach feels authoritative and grounded in long teaching and professional experience. Because I’ve only skimmed the book, and with an initial assessment, it appears to be a serious and thoughtful architectural guide.Who should read it? For one, experienced developers transitioning to Python —especially those coming from statically typed ecosystems (like Java and C++) —who want to apply solid OO principles and structured design practices to Python.

    Helpful(0) Unhelpful(0)You have already voted this

    Add a review

    Your email address will not be published. Required fields are marked *

    Software Design for Python Programmers: Principles and patterns
    Software Design for Python Programmers: Principles and patterns

    $59.99

    bestdealsavvy.com
    Logo
    Register New Account
    Compare items
    • Total (0)
    Compare
    0
    Shopping cart