The 30-Day Design Challenge
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.
Read more about the course
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.
Watch Online The 30-Day Design Challenge
# | Title | Duration |
---|---|---|
1 | Welcome! | 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 |