The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music.
Peter Norvig, Teach Yourself Programming in Ten Years
Norvig's recipe, paraphrased:
- get interested and program because it's fun and continues to be fun
- learn by doing
- talk with other programmers, read other programs ("This is more important than any book or training course")
- work with other programmers and after other programmers
- learn several languages with diverse capabilities and philosophies
- learn the "computer" in "computer science"
And here I am, twenty-five years in, wishing I'd practiced more 🤷🏻♂️😆