How much should you be programming outside of work?
This question came up in a book club meeting at my work recently. It often seems like you need to be programming in your free time to keep up with the industry, and to be competitive for promotions, new roles, and new jobs.
So do you need to spend time programming outside of work?
Shortly put: No. It’s not necessary.
Ok, there are few absolutes in software engineering. Sometimes it may have benefits, but for the vast majority of professional developers it’s not needed.
Personally, I have a few heuristics of when I want to ‘work outside of work.’
Does the work excite me?
If so, I’ll do it. If I see some new tool that looks neat, or a technique that seems like it would pay dividends at my work, then I’ll try it. If I have a problem that I need solved, then I’ll write a solution.
If it doesn’t excite me, then I table it. I make some allowances for pushing through challenging parts, or tedious interludes, but generally if I find my excitement wane it means that I’ve finished what I need to.
Yes, I have a github graveyard! As someone wisely once said, if you find you’re putting down side projects and not coming back to them, it might just mean you’ve learned what you needed to.
Am I learning something that makes sense at solo scale?
There are lots of cool new toys to play with, new ideas to try, things to build, that I can play around with in my free time. I’ve found great tools, like xstate
, svelte
, graphql
, and more this way.
Even so, I’ve never been able to understand them in the way that only comes with battle testing them in challenging environments. I brought graphql to work, and learned about benefits and drawbacks and thorny problems that I never would have encountered toying around with them at home. (I don’t know about you, but I don’t have even a multi-hundred user product on hand to test things.)
Working professionally puts you in a position to operate in complicated environments, with thousands or millions of users, with data that’s entrenched in an odd format, and codebases that have been worked on for years by tens to thousands of people. It often is difficult, but learning tools to conquer that complexity is transferrable anywhere, and is immensely valuable.
Do I have something to do that will better me as a human?
If so, I do that. I’ll go play soccer, or hike, or even play video games if it means I get to chat with friends on the other side of the country in the process. I’ll walk the dog, or spend time with my partner. I don’t have kids, but you might, and they’re probably the most important thing if you do.
Am I doing it out of curiosity, or out of anxiety?
This is slightly similar to being excited about it, but maybe looked at from the other side of the looking glass.
Some of the times where I wrote the most code were when I was stressed out about work. I’ve had managers who wrote code in their free time in order to stay sharp. Coworkers I talked to mentioned that they knew folks who were always hustling and talking about how much code they wrote last weekend.
Be careful about going down those rabbit holes.
For me, it was an outlet. It helped me vent. But I don’t know that I got much more out of it than that, and I probably spent more time on it than I should have. And I don’t know why anyone would brag about how much code they wrote–measuring software by lines of code is like measuring an airplane by weight.
Maybe those folks are working out of some anxiety themselves. Maybe they’re just excited, and want to try something fun for a weekend. You don’t have to let their choice be your choice, though.
Do these questions resonate with you? Is there a different way you look at it, or do you disagree entirely? I’d love to hear in the comments below, or at blog@jackanderson.dev