Finding the balance between work, personal time, and side project time can be tough. Derw isn’t the first big side project I’ve had, nor the one I’ve devoted the most time to. But I’ve found some ways of managing these projects that don’t leave me overwhelmed.
When I had more free time, like during high school and university, it was easy to devote large chunks of time to an idea. I’d build frameworks and compiler just to put an idea into code and see how it worked out. But I often would look at existing frameworks, decide I could do it better, and rewrite what existed. If it was a game, then I’d make a new engine. If it was a blog, I’d make the CMS. Things that definitely could be done better than the existing alternatives, but only simply because everything can be done better at some point. My rewrites weren’t perfectly nor feature complete, but they’d serve my needs for the most part. The most common situation, though, was running out of energy by the time I had finished writing framework; I wouldn’t have the motivation to continue on the actual game or blog I had in mind.
These days, I take a much more pragmatic approach. Typically before starting on a project, I’ll think about the rough route to get to the end goal. I ask myself for each chunk: is there something I can learn from rewriting it myself? Is it worth the effort? If I think the ratio of the time to build vs amount gained/learnt is not high enough, I will skip those parts. To put in a real world example context, instead of using static site generators or writing my own, I opted to use substack for 3 of my current blogs. I have built many a static site generator in the past, and many a CMS. There is not much of interest in it for me currently, so cutting out that part let me focus on what I deemed important: actually writing the blog posts.
To lay out how I spend my time when I’m not working on side projects: I’m fairly busy with my work, what with a lot of new developments coming up all the time, so it takes a decent amount of energy to focus. I’m also on-call once every 5 weeks, but tend to check in on work a lot even when I’m not. I travel a lot, both domestically and abroad, and often have visitors when I’m not traveling. That being said, I fully acknowledge the privilege of being in this situation - I both love my job and have significant amount of free time. I find myself often working best on trains, planes, and cafes. So I try to use all of those for focus time.
One trick I have is to double up side project stuff with work, when I can. Need practice writing? Start a work blog. Want to test out a framework, your own or otherwise? Find a one off non-critical microservice and write it with the framework. There are some projects I have which have 0 overlap, like a game made in Pico-8. In those cases, I apply to same rule that I have for rewriting things - which features are core to the idea? Is it jumping? Or is it the sprint-slide mechanic I had in mind? I find Pico-8 magical for optimization, because the entire project is suited to minimalism. There’s no need nor space for complicated frameworks or compile chains. There’s no need to scour the internet for assets. I will often break games down into particular scenes as ideas, then combine them once I have them prototyped up.
My side project work tends to fall into three categories: 1) thinking time, 2) notes time, 3) implementation time. For thinking time, I do that in the background in the rest of my life. It’s aided through discussions I have with others, though often just falls down to me walking down the street with headphones one. Notes time is typically when I’ve figured out an implementation detail, so I make a quick note - during the work day or when I don’t have enough focus to directly implement it. Implementation time is when I get to actually turn things into code, after work, sometimes late at night if the idea catches me.
With Derw, I’m trying to do a little bit every day - either thinking, notes, or implementation. It seems to be working out well, but I am also holding myself accountable through these blogs. You know those conversations where you end up discussing a great idea, but never implement it, maybe never discuss it again? This blog is like having the great ideas then following up on it, so I can’t just forget it.
Note
Article picture taken from here
I find myself always postponing the things I want to work with because I value my free time too much. I find it hard it get home and just do more work instead of having quality time with family. This article inspired me to do better, or at least try harder to put those great ideas into practice.