Sports generally have some fundamental skills that athletes drill endlessly. These fundamentals are the foundation for good execution. They must be committed to muscle memory if the athlete wants to focus on higher-level skills and strategy. In fencing, footwork is fundamental. What is the equivalent for software?

This idea was prompted by Dare to Lead, which uses the sports analogy to consider fundamental skills for leadership. Great book.

I can’t speak for developers at large, let alone other roles, but here are some of the skills I’ve invested long-term intentional practice into. I think they underpin most everything I do.

Several seasoned developers I respect write about intentionally practicing small increments of work. Some examples are

I’ve also found it worthwhile to be very familiar with my editor, but I don’t explicitly practice it regularly. Features like regex-based find and replace, multi-line editing, move line up/down, hot keys for various test run selections, and go to symbol are worth committing to muscle memory. These actions are so common that the time savings add up and they reduce breaks in flow.

Overall, I really like the fundamental, muscle-memory ingrained, skill analogy. Intentional practice is critical to forming expertise. Identifying and normalizing practice routines for software skills could be rocket fuel for team maturity. I know kata are somewhat meant for this, but many kata I’ve encountered are geared only toward algorithms or language syntax.

I’d be interested to hear what skills other people practice.