> But hardly anybody in software does deliberate practice,
As a largely self-taught programmer, I've struggled for a long time with certain algorithms and certain data structures. I got sick of it about a year ago, and decided to do something about it.
Since that time, I've come a long way using a "kata" technique for algorithms and data structures. Each morning (at least, ideally each morning), I worked on a group of related algorithms: trees on Monday, sorting Tuesday, graphs Wednesday, etc. And by "worked", I specifically mean that I would memorize algorithms related to the topic I was working on, and then each day re-write it from scratch. Often, I didn't fully understand the algorithm in the beginning, but after multiple days of re-writing it, I'd begin to understand it. After several months of this, I'd gained a much better understanding of all the areas I was working on.
I got busy and stopped a few months ago, but when I was doing it daily, I found I was gaining significant insight into the algorithms, and was able to then apply them in new and innovative (to me) manners. In fact, I started doing them again a few weeks ago because I noticed I was losing some of the insight I had gained. Reading this article has only reinforced my resolve.
So these "katas" I do are really nothing more than deliberate practice. And I know that I'm far from the only one doing these. They seem to be quite popular among some programmers.
As a largely self-taught programmer, I've struggled for a long time with certain algorithms and certain data structures. I got sick of it about a year ago, and decided to do something about it.
Since that time, I've come a long way using a "kata" technique for algorithms and data structures. Each morning (at least, ideally each morning), I worked on a group of related algorithms: trees on Monday, sorting Tuesday, graphs Wednesday, etc. And by "worked", I specifically mean that I would memorize algorithms related to the topic I was working on, and then each day re-write it from scratch. Often, I didn't fully understand the algorithm in the beginning, but after multiple days of re-writing it, I'd begin to understand it. After several months of this, I'd gained a much better understanding of all the areas I was working on.
I got busy and stopped a few months ago, but when I was doing it daily, I found I was gaining significant insight into the algorithms, and was able to then apply them in new and innovative (to me) manners. In fact, I started doing them again a few weeks ago because I noticed I was losing some of the insight I had gained. Reading this article has only reinforced my resolve.
So these "katas" I do are really nothing more than deliberate practice. And I know that I'm far from the only one doing these. They seem to be quite popular among some programmers.