This course is designed for those who want to go beyond theoretical knowledge and develop skills in working with production code. Regardless of your level of experience - whether you are a junior developer looking to improve your skills or a data specialist who wants to structure your code - the course will help you move on to more complex tasks.
The 30-Day Design Challenge
The course offers 30 engaging software design assignments that will unlock your potential in problem-solving and creative programming approaches. You will encounter tasks of varying complexity: from simple examples focusing on design principles to deep practical exercises, such as creating an API with FastAPI and SQLAlchemy, working with GUI code, functional and object-oriented programming, as well as detailed type annotations in Python.
About the Author: ArjanCodes (Arjan Egges)
ArjanCodes is the YouTube channel and paid-course brand of Arjan Egges, a Dutch software engineer and academic (formerly Utrecht University faculty) — one of the most cited independent voices on Python software design and architecture. The channel focuses on the engineering disciplines underneath maintainable Python codebases rather than language tutorials.
His CourseFlix listing carries three ArjanCodes courses: The Software Designer Mindset (COMPLETE), The Software Architect Mindset (COMPLETE), and The 30-Day Design Challenge. Together the courses cover the senior-engineer mental model — design patterns, architectural decisions, and the trade-offs that show up in real production codebases.
Material is paid and aimed at intermediate-and-up Python developers ready to think about software design as a deliberate professional skill. For broader content, see CourseFlix's Python and System Design & Architecture category pages.
Watch Online 53 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Welcome! Demo | 01:59 | |
| 2 | Solution: KISS | 02:14 | |
| 3 | Solution: Type Annotations | 09:34 | |
| 4 | 5 Tips To Achieve Low Coupling In Your Python Code | 18:30 | |
| 5 | Solution: Decoupling | 03:31 | |
| 6 | Solution: DRY | 03:42 | |
| 7 | F-strings In Python_ Everything You Need To Know | 23:29 | |
| 8 | Solution: String Formatting | 02:33 | |
| 9 | Solution: Law Of Demeter | 03:19 | |
| 10 | Solution: Better Discounts | 04:32 | |
| 11 | The Strategy Pattern_ Write BETTER PYTHON CODE Part 3 | 15:31 | |
| 12 | How to Implement the Strategy Design Pattern in Python | 27:20 | |
| 13 | Solution: Payment Strategy | 03:08 | |
| 14 | Why the Plugin Architecture Gives You CRAZY Flexibility | 24:06 | |
| 15 | Solution: Plugins | 05:52 | |
| 16 | Functions vs Classes_ When to Use Which and Why_ | 10:49 | |
| 17 | Solution: Object Oriented To Functional | 06:32 | |
| 18 | Cohesion and Coupling_ Write BETTER PYTHON CODE Part 1 | 26:14 | |
| 19 | Solution: Cohesion | 03:53 | |
| 20 | Which Software Architecture Should You Use_ MVC, MVP, or MVVM_ | 24:27 | |
| 21 | Solution: MVP | 05:18 | |
| 22 | Composition Is Better Than Inheritance in Python | 23:29 | |
| 23 | Solution: Inheritance | 03:39 | |
| 24 | Dependency INVERSION vs Dependency INJECTION in Python | 17:52 | |
| 25 | Solution: Abstraction | 02:26 | |
| 26 | You Can Do Really Cool Things With Functions In Python | 19:47 | |
| 27 | Solution: Higher-Order Functions | 03:12 | |
| 28 | Solution: Configuration | 02:59 | |
| 29 | Next-Level Concurrent Programming In Python With Asyncio | 19:19 | |
| 30 | How To Easily Do Asynchronous Programming With Asyncio In Python | 23:09 | |
| 31 | Solution: Concurrency | 08:18 | |
| 32 | Solution: Refactoring | 03:36 | |
| 33 | A Deep Dive Into Iterators and Itertools in Python | 21:01 | |
| 34 | Solution: Itertools | 02:10 | |
| 35 | Solution: Inappropriate Intimacy | 01:58 | |
| 36 | End of Part 1 | 00:32 | |
| 37 | Real-Life Case of the Command Design Pattern | 32:25 | |
| 38 | Solution: Undo/Redo | 03:32 | |
| 39 | Raw SQL, SQL Query Builder, or ORM? | 16:19 | |
| 40 | Solution: SQL to ORM | 04:29 | |
| 41 | Solution: Unit Tests (Basic) | 02:48 | |
| 42 | Solution: Unit Tests (Advanced) | 02:15 | |
| 43 | Solution: Operations Layer | 04:35 | |
| 44 | Solution: Ticket Cancellation | 03:32 | |
| 45 | Observer Pattern Tutorial: I NEVER Knew Events Were THIS Powerful | 15:17 | |
| 46 | Solution: Messaging | 04:30 | |
| 47 | Attrs, Pydantic, or Python Data Classes? | 17:10 | |
| 48 | Do We Still Need Dataclasses? // PYDANTIC Tutorial | 16:33 | |
| 49 | Solution: Validation | 02:30 | |
| 50 | Let's Take The Bridge Pattern To The Next Level | 17:13 | |
| 51 | Solution: Bridge | 04:52 | |
| 52 | Solution: Mixins | 03:33 | |
| 53 | Wrapping Things Up | 00:57 |
Get instant access to all 52 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionRelated courses
-
Updated 2y agoKickstart your UI/UX Design Career / DesignCourse UI/UX
By: Gary SimonJoin the most interactive course for learning UI/UX Design with Gary Simon. The DesignCourse UI/UX Curriculum is taught entirely with Figma. You will go from ab16h 33m -
Updated 1y agoThe UI/UX Playbook: Learn How To Design Beautiful UI Designs
By: UX PeakThis book is your indispensable guide to the world of UI/UX design, which will help you master the key principles and techniques for creating interfaces. -
Updated 3y agoShift Nudge – Interface Design Course (PRO packet)
By: Matt D. Smith (Shift Nudge)Shift Nudge is the systematic process to learn the visual skills of interface design, even if you don't have a design background, even if you're not an expert.105h 34m5/5