Throughout my career, I’ve always had at least one project on the go outside work - call this a personal, learning, or passion project - it all amounts to the same.

I’ve got a lot of benefit out of these projects - sometimes, I approach them deliberately to try out a new technique or tool. Sometimes, I just enjoy the process of starting a new app from scratch. Sometimes, I’ve got an idea to satisfy a problem I, or someone I know, is facing.

This post is mostly dwelling on how often I see these sorts of projects being undervalued - the point of these projects, in my mind, is that they don’t have to succeed. They don’t even need to make sense, but they also need to have a bit more thought and structure than a single-file code snippet or codepen. What they provide is a kind of sandbox - both from the point of view of providing a space to play around, but also from a stakes point of view - there’s no client getting invoiced here, there’s no startup running out of cash unless this project turns it around, or a board of directors to be presented to to secure ongoing funding. That’s a really fun and relaxing environment to work in.

This doesn’t mean that development or effort isn’t fast paced, but it doesn’t have to be. I’ve personally noticed a real difference in how I approach projects, when I have space to think. This means that if I face a problem, or something doesn’t work the way I expect - there’s no pressure. I can put that problem down for a little while, even a few days or weeks. I can come back to it from time to time, and try something out, see if it works or not. If something really doesn’t work out the way I want it to, I can walk away completely, or I can spend a couple of hours tidying it up enough to go on my Github, MIT license it, and leave it there, in case it’s useful to someone else. There’s no obigation to support it, keep it alive, or up to date.

This lack of urgency also helps pacing in other ways. I’ve found the working patterns for my passion projects tend to be really different when you already have professional and personal commitments. For me, this means that my ratio of planning to doing is very weighted towards planning - I’m spending less time actually at my desk, but much more time not at my desk thinking about the next move. I’ve found that this pattern of work has really helped me in my professional softwave development job as well, since it’s taught me the value of picking the right approach the first time, and how the right decision can continue to pay dividends throughout the life of a project. Sometimes spending 90% of the time thinking through the best approach means that the 10% of actually executing on that approach is more productive as if I’d spend 100% of the time fumbling for a working solution.

I’ve got a number of ‘completed’ projects that I personally use most days. I find the end state for these projects which are largely feature-complete (or at least feature complete for my needs) really interesting, because it turns out that the process of taking care of these projects is also really different from professional work. From my point of view, professional long term support tends to be focussed on security - patching packages, and upgrading frameworks, libraries and languages as they reach end of life. Personal projects can have this pressure, but it depends on priorities. I see these types of projects being more like taking care of a garden - sure, there will be a degree of chores, like mowing the lawn or weeding, but there will also be a degree of small, incremental tidy ups - pruning, and tidying up loose ends or rough patches you’ve noticed and now can’t unsee. Every now and then, there will even be a larger piece of work - maybe redoing part of the garden by creating a new feature or undertaking a refactor of some core code.

Regardless, I”ve got a lot of value out of creating projects with no particular end goal in mind. It’s a completely different working situation than professional work, and the lack of structure provides a great deal of space to explore technical, architectural, planning and project management skill development.

To check out passion projects I’ve done before, check out my repository history on Github.