I've been learning Python for a while now and am pretty comfortable with object-oriented programming, functions, and the basics. However, I still struggle with how to think through and structure a complete project from concept to implementation. I want to reach a level where I can design systems, decide when to use classes versus functions, plan how data flows, and create projects that work well and can scale. I'm curious about how others made this leap. Were there specific books or courses that helped you understand design and architecture? Or did you mostly learn through real projects and refactoring? I'm looking for resources or advice that can teach me how to plan and structure actual applications, rather than just basic Python tutorials. Thanks for your help!
5 Answers
As a software architect, I've worked my way up over 17 years in larger projects. It takes time! I recommend looking at resources that allow you to plan your design before even writing code. Here's a blog I found useful: hosiaisluoma.fi/blog/archimate. It has great diagrams and information that could really help with your planning.
It's all about mindset. Get comfortable with experimenting. Some find themselves stuck in established patterns and might not want to learn new methods. Foster your curiosity and build projects just to improve your skills or even just for fun. The more you create, the more you'll understand the systems you're working with.
I learned through 25 years of trial and error in various languages, focusing on different design patterns. I observed how poorly designed production systems struggled with scaling issues and learned to address them. I'm actually considering creating a YouTube series to guide others through building projects from scratch to production. If I do, I’ll definitely share it here!
With 15 years in software, I can confirm there's no shortcut to becoming a great builder. However, I’ve found embracing programming principles significantly improves your code. Here are some tips:
1. Write code that’s easy to change.
2. Build applications repeatedly to get better at it.
3. Testability is key—design for it from day one.
4. Start small with a Minimum Viable Product (MVP).
5. Avoid deep inheritance chains; favor composition.
Work on personal projects you enjoy, that's where your skills will truly refine over time!
Making the jump isn't instantaneous, but a gradual process. Start writing larger programs and keep pushing beyond your comfort zone. Practice is essential—building real projects helps solidify your skills. Books can guide you, but nothing beats hands-on experience. Consider reading "Architecture Patterns with Python" and "Clean Architecture" for more insights while you build.

That sounds amazing! A series like that would be extremely helpful. Make sure you post it here when it's ready, I'd love to watch!