September 16, 2013

The 3 Ds of skill learning

Increasingly, the interesting problems in the world require computational approaches. I don’t have a computer science background but I have in the trenches experience with computational approaches, primarily in MATLAB. However, there are hard edges to MATLAB for the problems that I think are worth solving. Python has the horsepower and the wheels to solve those problems. I applied the 3 Ds of skill practice to my quest to learn Python.

One side note about study materials. I started with free high quality resources (e.g., Google’s Python Class, Learn Python The Hardway, and Think Python) but I wanted to be more than an Advanced Beginner. I was pleased with the in-depth coverage of Learning Python and Programming Python by the fine people at O’Reilly.

Deliberate

I always had clear, concrete goals to improve my ability. At first, it was working through specific chapters or sections. This worked well for the initial introduction to the language. Later in order to find objective benchmarks, I had to rely on testing.

Testing is critical, but often times lacking in self study. It highlights which material has been mastered and which material need more attention. This learning recalibration is needed to stay in the zone of proximal development.

The best method for testing programming skills are coding interviews, and the best coding interviews can be found at the req.

Deep

My success was correlated with the depth of my studying. At a coarse level that meant no TV, IM, or Twitter. At a more subtle level, I made sure nothing was on mind other than the current learning. A trusted system was helpful.

Distributed

This classic behavioral psychology trope works every time. The same amount of practice spread out will increase retention. I would review previous material before engaging with new material. Anki is my preferred method for stacking and tracking my learning corpus.

No comments:

Post a Comment