On intentional practice

On intentional practice

Tags
Coding
Published
Dec 4, 2020

Context

For senior people, for managers, for leads leads, ...make it really clear that you're learning and that you're learning at work.

Tanya Reilly, Being Glue

Seeing the above quote resonated with me. It reminded me of this doc that I was inspired to put together a while back by one of my mentees. I felt that it was important to make it clear that learning how to learn and continuous learning are how you stay adaptable for the long haul.

Philosophy

One of the secrets to accelerating your growth as a software engineer is intentional practice. The article Kata, Kumite, Koan, and Dreyfus by Dave Thomas does an excellent job of explaining the philosophy. From the article,

...as developers we need to spend more time just practicing: writing throwaway code just to get the experience of writing it.

Key Terms

Kata

The answer without the question. Japanese for "form", as in a known and repeatable set of moves. From the article, katas are "are an exercise where the novice repeatedly tries to emulate a master. In karate, these kata are a sequence of basic moves (kicks, blocks, punches, and so on)... You’ll never be attacked in such a way that you could repeat a kata to defend yourself: that isn’t the idea. Instead the idea is to practice the feel and to internalize the moves."

Koan

The question without the answer. From the article, "Koans are questions without absolute answers which are used to break down assumptions and reveal underlying truths. The goal of a koan is not the answer, but thinking about the question."

In practice

Search

When I want to learn a new language, framework, or technology, my next step after reading the docs is often to Google, "{{foo technology}} koans", e.g. "react koans" or "lisp koans". Then there is stuff like https://github.com/kareemf/ruby-study/tree/master/spec, where I'm just implementing known algorithms for practice.

Code Retreats

A concept that I first became acquainted with Code Retreats at work, but they are part of a larger global community. In fact, you may be able to find or organize one in your area. Code Retreats are awesome whole-day workshops that have learners form rotating pairs to practice test driven development.

Doing code katas with a mentor was instrumental to helping me to grasp TDD. Code Retreats are essentially like doing code katas with my mentor, but with a rotating set peers instead.

From one of my coworkers,

“Doing [coding exercises] with other people is more fun”

Advent Of Code

AOC is an annual, holiday themed set of programming challenges that are released one day at a time starting in December and ending on Christmas. 2020 will be my first year participating. Here’s a “live blog” of my attempts:

Advent of Code 2020

HackerRank

A good repository of practice problems. In fact, if you do enough of them, you’ll probably eventually run into one of the questions during an interview, which is almost the point - to be able to frame one question in terms of another.