Shedding Extra Complexity and Shipping Side Projects

4 min read Original article ↗

Before you know it, you've gone from an evening or weekend project to something that seems like it's never going to be done.

Keeping a project in its lane is... hard. Getting excited about something and adding little bits and pieces to it here and there is all too easy - and before you know it, you've gone from a evening or weekend project to something that seems like it's never going to be done.

And when something seems like it's never going to be done, motivation to finish it drops off fast. Which makes sense! Who wants to put a load of effort into something that's never going to be ready to see the light of day?

I love doing little side projects - from the spark and the idea of a problem I want to solve, to planning an approach and the execution of that plan, the whole thing is a lovely passtime. That said, it needs to end. The goal of a side project is, and has always been, to end up with something that is usable and functional.

We all lead busy lives. I'm no exception - I'm in the thick of it at Uni, and often I'll find myself stretched thin with only an hour or two here or there, slotted in-between going climbing with friends and sorting out dinner. That's not a lot of time to do work on projects, but I still want to see whatever I'm working to completion.

But if the scope of my project is going to keep growing... is it actually going to get done? Is the scope, perhaps, growing even faster than I can keep pace with? Often, if you've got a core idea, that's all that you need. Your project probably isn't going to be greatly improved by a JavaScript doodad or a fun little widget or a magical-but-niche little flag and the chances are, your project might not suffer for keeping it out.

Motivation is a finite resource - so even if you keep adding things to a project's scope, if your motivation is proportionally decreasing with the size of your to-do list, your project is probably doomed. After all, if you have a skeleton project that works and does the core thing, you can circle back in a month or so, when you've got some fresh excitement about it, and tweak it to add some extras. You can't do that with a loose ball of code that only half works and is bit-rotting away on a hard drive.

My most recent example of this is my new photo film developing price comparison page. This was scope creeping pretty badly.

  • First, it was a simple page with a scraper to compare the rates different photo labs are charging
  • Then, it needed to auto-update
  • Then, it needed to factor in postage
  • Then, it needed to take different combinations of films and combine postage (but not if you're not dropping your film off in-person!) and tell you how much it'd cost
  • Then, it needed to support different types and formats of film
  • Then, it needed historical data
  • Then, it needed to include not just one, but all the possible shipping options
  • Then... I started not wanting to work on it.

For once, I recognised that I was starting to be bored by my little website. My brain did not see the benefit of the effort to get it done. Of course, I still wanted to see it done, but I didn't want to do it.

Then it hit me - what value do each of these extra things actually add? Actually, lots less than I originally thought. These little indie businesses don't change their prices often. And people can look at a table and work out if they need to mentally add the postage number or not. And people can use a calculator. And other people might not even look at your page, so why add different formats of film that you don't often use?

And that's how I ended up with my more barebones, but online, website that you can click through to and browse. I have my comparison page, and that's ab-so-lute-ly great - I can use it to solve the problem I had, I can update it manually every now and then and if I want to, I can tweak it and improve in in the future.

Next time you find yourself getting bored by a side project, take a critical think and ask yourself what you can get rid of.

Shed some complexity. Finish your side projects.