I observe that numerous blog posts about getting good are secretly about the author rationalizing why what it is that they do is valuable. I will try and avoid that trap but still write down some of the things that I was thinking about when I was waiting for the computer to compile my code today.
How to get good:
Firstly, have some kind of critical reflective practice. I make no pretense of knowing how to do this as learning reflective practice is a kind of Wicked Problem.
Secondly, "Listen louder than you sing". Which when applying to software development can be said as, "Read more code than you write". This specifically pertains to making sure that you investigate how the code that you intend to be changing is used and what its responsibilities are before you change it.
Thirdly, have mutable opinions. That is, have a model for how you think everything fits together and be prepared to graciously change your model when it is wrong (rather than imposing your model on reality).