So not just practice, but practice at the things you suck at. For programming, I suck at working with Model-view-controller code, so in order to become an expert programmer I need to practice writing Model-view-controller code.
Programming suffers from lack of timely feedback. It takes a long time for bad design to cause adverse effects. So one can only become a good programmer if one acquires good values from some other source like religion and then one applies those values to one's code to generate one's own timely feedback.