
In the Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.
I wouldn't worry about this too much. As long as what you're doing seems to vaguely match whatever information about best practices you can find online, you're probably good. As long as you're not inventing your own security tech, using floating point values for financial data or reusing feature flags in a high frequency trading scenario, any bad decisions made along the way probably won't be catastrophic and are more likely to be learning experiences.
More eyes on code is a good thing, but can go too far where a person is cargo culting their beliefs and subjective experience as objective things, leading you to learn the wrong stuff, or at least to a degree where you have an irrational attachment to some practices (e.g. some people always lean towards EAV in DB design, even though that practice has a time and place, same for microservices vs monoliths vs modular monoliths etc.).
> ...and might be missing out on a lot of learning.
This is probably what you should focus on. See if you can attend industry events, watch some talks done by people who've been in the industry for a long time, there's actually lots of nice stuff on YouTube that's not just advertisement for the latest technology or practice. Here's some people whose content I enjoy:
Dylan Beattie
Venkat Subramaniam
Kevlin Henney
Maybe look at some of the better received books. Here's a starting point: A Philosophy of Software Design
Algorithms
Building Secure & Reliable Systems
Clean Architecture A Craftsman Guide to Software Structure and Design
Clean Code
Code Complete
Design Patterns Elements of Reusable Object-Oriented Software
Next-Level Database Techniques For Developers
Patterns of Enterprise Application Architecture
Peopleware
SQL Antipatterns
The Clean Coder
The Mythical Man Month
The Pragmatic Programmer
Working Effectively With Legacy Code
Again, take none of that as gospel, but maybe give them a passing glance.Also, props to whoever mentioned learning by doing in a low stakes environment (side projects) and online communities!
That book is a top three software book for me. It made me understand why OO is a thing and what concepts I should pretty much always use from that ecosystem.
The concept of interfaces (not just the programming construct, but the general idea) was massive and it changed my view on the testability of code.
Martin has some other good stuff related to professionalism as a programmer. He has a few talks and The Clean Coder and those are absolutely worth it as well.
1.) Understand the SOLID principles and WHY they matter: -Single Responsibility Principle -Open-Closed Principle -Liskov Substitution Principle -Interface Segregation Principle -Dependency Inversion Principle
2.) Understand the 4 principles of Object Oriented Design and WHY they matter: -Abstraction -Encapsulation -Inheritance -Polymorphism
3.) Understand the 3 types of design patterns: Creational, Structural, and Behavioral. Understand the problem each solves, their respective uses, and which principles they either implement or achieve.
4.) If you write web services (i.e. SOAP/REST), understand the 12 principles of Service Oriented Architecture (i.e. no God classes). Microservices have their own patterns you can explore like Strangler, Saga, orchestration, choreography, etc.
5.) Read "Refactoring" by Martin Fowler (1999) - great book that describes how to approach refactoring application logic safely with improved results, like how to approach a refactoring huge (hard to test and maintain) block of if/else's into a Strategy Pattern, as an example.
6.) Read books written by "Uncle Bob", Robert C Martin: a) Clean Code: A Handbook of Agile Software Craftsmanship (2009) b) Clean Coder: A Code Of Conduct For Professional Programmers (2011) c) Clean Architecture: A Craftsman's Guide to Software Structure and Design. (2017)
7.) READ "Design Patterns" by the "Gang of Four" (GoF) as they're known, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1995). THIS IS MINIMUM CRITICAL KNOWLEGE.
8.) Read "Domain Driven Design" by Eric Evans (2004).
I hope you don't view the reading this as punting the answer, but time spent reading any of those should help you in your quest to get better at software architecture.
* Extreme Programming Explained by Kent Beck
* Clean Code and The Clean Coder by Robert C. Martin
* Soft Skills by John Sonmez (1st edition)
* Pragmatic Programmer by Andrew Hunt and David Thomas
* Working Effectively with Legacy Code by Michael Feathers
* The Mythical Man-Month by Frederick Brooks
(Selfish plug) Additionally, I wrote my own book concerning the entire industry, from just starting out to becoming a self employed consultant when you get sick of fulltime work - all soft skills from my decade or so of the industry, as well - https://www.amazon.com/dp/B0B43V1JJW