Skip to content

Software engineers don't typically practice and it's weird

Posted on:January 15, 2024

Here’s a take: software engineers don’t usually practice as part of their job, and that’s pretty strange. Imagine if athletes never practiced—no team walkthroughs or film sessions. No drills, stretching, or weightlifting. They’d just show up on game day and wing it. Maybe Allen Iverson would approve, but I doubt many others would.

I’m a firm believer in focused, deliberate practice. People like Cal Newport have written extensively on the subject, popularizing the work of Anders Ericsson. Undoubtedly some engineers (probably the really good ones) do spend a lot of time honing their skills through code kata, typing exercises, spaced repetition flashcards, small projects, or LeetCode challenges. If you’re building every day, you’ll naturally get better. But that may only cover what you’re currently working on, while other essential skills will atrophy.

In my experience, software organizations rarely set aside time for developers to work on their abilities. There’s such an emphasis on just getting things done that people often face unrealistic deadlines or commitments. Engineers, and often other disciplines too (ex: designers) aren’t truly practicing, which seems strangely disconnected from reality.

I have seen some fields incorporate practice into their work routine. Sales teams, for example, will often role-play before making calls. But it seems the only time developers deliberately practice is when they’re preparing for interviews. Wouldn’t it make more sense to treat it like athletics or music, setting aside regular practice time as part of your job? Writing code and building software is a creative endeavor, so why wouldn’t we treat it the same way?

I think it’s high time we rethink how software engineers approach skill development and practice in their day-to-day work lives. After all, even the best athletes never stop training—why should engineers be any different?

In trying to fix this, here are three things I recommend:

First, whenever I’m a founder or in a management position, I’ll aim to create environments where engineers can practice their craft. In you’re in that position, you should do it too. Second, if you’re job hunting, try to find those rare places where this is already happening. Third, if you can’t find a workplace that openly supports this kind of growth, don’t hesitate to take matters into your own hands. Maybe that means carving out 30 minutes to an hour every workday to practice, even if it has to be on your own time. It’s unfortunate that this seems to be the default for many people, but it doesn’t have to be that way.

If you happen to work in one of those exceptional places where this culture exists, I’d love to hear from you. What does it look like? How did it all come together? Please share your insights.