It is probably better not to think of yourself as a coder or a programmer; consider yourself a problem solver with mathematical skills and move on to there.
Always convince yourself that the problem you are trying to solve has a solution.
Experience, testing, formal methods, less fragile tools, and avoiding premature optimization.
Consider Haskell, Idris, Pony, Rust, and Clojure, but these are just some tools in a large toolbox.
Put aside insecurities and constantly look for techniques to minimize errors, maximize readability, and productivity.
Accumulate best practices and apply them with experienced "common" sense.
Consider coding like writing with many drafts. Throw some away and write it again.
You want programs to have the property that if someone wants to make a change, they need to understand only a small part of the program, and not worry about something breaking mysteriously in the parts they don't understand.
2.Go through existing projects and see if you can structure them differently and the benefits changing the structure will provide.
3.Buy and read The Fifth Discipline by Peter Senge https://amzn.to/30IKxdZ . It is one of the best books on systems thinking.
4.It takes time to build the systems thinking muscle so be patient with yourself.