Pythonic Patterns
Explore design patterns and how to apply them in Python.
Go from making code work to confidently designing software you understand, can change, and can defend.
Money-back guarantee: 7 days on monthly plans, 30 days on yearly and lifetime plans.
AI has made developers more productive than ever.
You can generate features in seconds, fix errors without knowing exactly what caused them, and build applications that would once have required far more experience.
That's incredibly powerful. But it creates a new problem.
At first, you may not notice it. The application works. Features ship. AI fixes the errors.
Then the codebase grows.
A change in one place breaks something somewhere else. You're hesitant to refactor because you don't know what depends on what. AI gives you three different solutions, and you're not sure which one actually belongs in your system.
Eventually, you hit a ceiling.
And generating more code — or getting better at prompting — won't get you through it.
As AI helps you produce more code, you need better skills to understand and shape the systems you're building.
If you stay dependent on AI or more experienced developers to tell you how things should be structured, larger codebases become harder to understand and change.
You struggle to explain why one design is better than another.
And while your coding output improves, the engineering judgment expected from senior developers doesn't develop at the same pace.
That's the gap Software Design Mastery is designed to close.
Imagine opening a codebase and knowing what to look for.
You can see where responsibilities are mixed. You recognize dependencies that will cause problems later. You know when an abstraction helps — and when it's just adding complexity.
When AI generates a solution, you know what to look for.
You can judge how well it fits your system.
When another developer proposes a different architecture, you can discuss the trade-offs and explain which approach suits your requirements.
When requirements change, you know how to reshape the system without tearing everything apart.
And when someone asks why you designed something a certain way, you can explain your reasoning.
That's the transition Software Design Mastery is built around: from someone who can make software work to someone who understands how software should be designed.
Work through real design decisions and learn to recognize which patterns fit your problem, how to weigh the trade-offs, and why a solution works.
Recognize coupling, poor boundaries, misplaced responsibilities and fragile abstractions before they become expensive.
Stop searching for the “correct” architecture and learn how to choose between competing options.
Guide AI toward better designs and evaluate how well its output fits your system.
Work through design decisions yourself with exercises, quizzes and realistic examples.
Learn principles that remain useful across frameworks, languages, projects and tools.
I taught software design at university for 25 years. My courses have been followed by thousands of students , and my YouTube content has helped millions of developers worldwide.
Over the years, I've learned what actually works when teaching developers: in the classroom, online, and at scale. This program is the result of all that experience. It's my definitive take on how software design should be taught today.
I wish I'd had access to this when I was learning.
Learn to balance competing needs and design software that holds up over time. You'll apply the same judgment whether you write the code yourself or collaborate with AI.
See problems → Design systems → Make judgments
Level 01
Learn to see what experienced developers see.
You already know how to write code. Now you'll learn to recognize the structural problems that make software difficult to maintain — and how to fix them deliberately.
Learn to see what's wrong before trying to fix it.
Level 02
Learn to think beyond the code in front of you.
Move from individual functions and classes to entire applications. Learn how dependencies, state, boundaries and infrastructure shape the long-term health of a system.
Level 03
Develop engineering judgment.
Senior engineers know that architecture is rarely about finding one correct answer. You'll learn to compare alternatives, reason about competing forces, and make decisions you can explain and defend.
Throughout the program, you'll also learn how to use AI as a tool, while you stay in control of structure, decisions, and long-term quality.
Included in Complete and Complete Lifetime
Build on the core pathway with additional courses and practical design examples. Revisit the topics you need as new challenges come up in your projects.
Explore design patterns and how to apply them in Python.
Learn to model your domain with clear concepts and boundaries.
Deepen your Python skills with more advanced techniques.
See software design decisions in action through practical examples.
You'll also get workshop and live-session recordings, with new material added to the library over time.
“It works, so I guess it’s fine.”
“I can evaluate whether this design will hold up.”
Letting AI decide the structure
Giving AI clear architectural constraints
Copying patterns from tutorials
Choosing patterns because they fit the problem
Being nervous about refactoring
Understanding what can safely change
Looking for the “correct” architecture
Comparing trade-offs intentionally
Explaining what the code does
Explaining why it is designed that way
You'll learn to reason through design decisions for yourself, with the confidence to adapt principles to the problem in front of you.
Arjan delivers complex concepts in a an easy to understand way. His courses are full of good examples and ready-to-apply cases, which makes them totally recommended.
Methodology and common sense combined. These courses are really excellent and have enabled me to look at code in an intelligent and structured way. Wikipython man has provided us with a wealth of content that I won't tire of revisiting over time. The youtube channel is a delight, these courses are a nectar. Thank you Arjan!
I very much enjoyed Arjan's courses (the 30-day challenge and Software design mindset)! I hope to see and learn from more great content from him in the future and would recommend his courses to anyone who's starting out in programming and want a more holistic view of how to write clean, extensible, and maintainable code!
Start with the pathway or get everything. Upgrade at any time.
Build the core design judgment every developer needs.
All 3 levels of Software Design Mastery
30+ lessons, exercises and quizzes
Student community
All updates to the core program
Go deeper with additional courses, case studies and workshops.
Everything in Basic, plus:
Full Mastery Content Library, including:
New library content added over time
Make Mastery your permanent software design reference.
Everything in Complete, plus:
Lifetime access
All future Mastery updates
All future additions to the Content Library
No recurring payment
Prices in EUR. Buying for your team? Team seats and invoicing .
Software Design Mastery is built to change how you think about software. I've put everything I know about teaching design into it.
All plans come with a 100% money-back guarantee: 7 days for monthly plans and 30 days for yearly and lifetime plans.
Work through the program, apply what you learn, and if you don't find it valuable, send me an email within your plan's guarantee period. I'll refund you, no questions asked.
You can also cancel your subscription at any time to prevent the next renewal.
If it's not the right fit, I'd rather you put your time and energy where it serves you best.
Team seats with central billing and invoicing, so your whole team learns to design software the same way.
Learn to understand it, shape it, and make the decisions behind it.