If I could teach my younger self: 1. Stop theorizing. 2. Write lots of software. 3. Learn from your mistakes. https://blog.codinghorror.com/quantity-always-trumps-quality... Success comes when there is nothing left to learn from failure. Fail faster to learn this sooner.
I spent years slowly learning how to be a better developer, on my own. If someone had been there early on to tell me: "this is bad because X", I would have progressed twice as fast.
Programming at its core is very easy, building maintainable software is much harder. Knowing what to avoid only comes with experience, but much of that experience can be quickly transferred to you from someone who already has it.