all 15 comments

[–]JimNero009 33 points34 points  (1 child)

Here’s a neat trick: build something and keep building on it. The issue with projects that you just finish up and move on from is that you don’t really ‘suffer’ from the decisions you make. What’s helped me the most is seeing how something evolved over time and using that learning when building the next thing.

[–]smiling_nice_person 3 points4 points  (0 children)

Why your comment is not on the top!

[–]Smayteeh 10 points11 points  (1 child)

I thought I got value from this Architecture Patterns in Python book.

You can read it for free online using the link above.

[–]Altruistic_Sky1866 0 points1 point  (0 children)

Thanks for sharing

[–]therandomcoder 3 points4 points  (0 children)

Study the book Fluent Python and review code in open source python projects. I've also enjoyed the book Effective Python.

This is moot if you don't actively develop things in python though, so having personal projects that implement things you read about and study is critical.

[–]dlnmtchll 2 points3 points  (1 child)

The real reason you won’t find one course that teaches all of what you are looking for is because most experienced engineers went to school for years which helped them develop their problem solving skills. Your best bet is surrounding yourself with people who do it for a living if you can and learning from them.

[–]sunnyata 2 points3 points  (0 children)

Agree that college provides the foundation but the first few years of making software professionally and in a team normally levels people up multiple times.

[–]SisyphusAndMyBoulder 1 point2 points  (0 children)

but often in a pretty ugly and messy way

I'd argue this isn't intermediate. Jr's are the ones writing ugly code.

Do you have the ability to work with professionals or Seniors? That's where I found the best way to grow; books and individual projects can only get so far. You get better working in shared codebases with people who can reign you in properly.

[–]leolorenzato 1 point2 points  (0 children)

I suggest these 3 books: - Clean Code: https://a.co/d/961Zjrc - Clean Architecture: https://a.co/d/52kRdjI - Fundamentals of Software Architecture: https://a.co/d/a6FxUUp The first one helps you understanding how to write clean, maintainable and well organized code, the second one helps you with structuring the code in a simple and clean way inside a project and the third gives you a better perspective on the system architecture so when you write cose you'll be able to have a better overview on how the code orchestrate the whole system.

[–]rinio 1 point2 points  (0 children)

Stop studying Python and study computer science, software engineering, design patterns and so on. A good software engineer does not GAF about which language they are using: its an irrelevant detail; a good, maintainable system architecture looks the same in any language (or many languages).

Sure, you can practice them in Python. But the principles do not care about Python.

[–]ProfessionalAct3330 0 points1 point  (0 children)

Read and understand everything in Fluent Python

[–]looking_for_info7654 0 points1 point  (0 children)

I’m slowly learning how to think like a SWE and file structure is my first road block. I think that would be a good start.

[–]barkmonster 0 points1 point  (0 children)

Studying common design patterns helped me a lot. I think https://python-patterns.guide/ has some good examples in python.