How a side project can make you a better programmer — and how to choose the right side project.

David Johnston
Sep 2, 2018 · 4 min read

Early in my career, I found the common career advice for developers — to contribute to open source, have a side project, maintain a blog, etc — a little frustrating. I was of the opinion that forty hours a week in a paid job should be enough development, and that it’s better to maintain a healthy well rounded lifestyle than be an uber geek who lives and breathes code.

I still stand by this — I think that if a firm is looking to hire developers who contribute to opensource — they should be willing to have those developers contribute to opensource on work time, and it’s important to have a good work life balance.

However — the reality with commercial programming work, especially for a junior developer, is that typically you’ll end up slotting into a project with a fairly limited scope of responsibilities. The technical architecture and design patterns will have already been chosen, the deployment process will already be established. You’ll likely be continuing following the established ways of doing things, which is fine — you’ll still be learning, but perhaps in a limited way that isn’t as transferable if you leave the company.

After having made a few attempts at starting a side project (I had some quickly aborted attempts at making a bitcoin trading bot, playing with public transport type algorithms, and making a Panama Papers explorer. I also for a while hosted an online portfolio, but I found it so boring and unfun to work on.), — and finding it hard to maintain the motivation to work on it, when I could be playing board games with friends instead I eventually did stumble on a side project that stuck with me.

geoplanets.io is an interactive geometric art generator. It started with me seeing a gif on Facebook that purported to highlight the the beauty of the relationship between Earth and Venus:

I thought — ‘Yeah, that’s cool, but firstly, the orbits of Earth and Venus aren’t perfectly circular, and secondly, if you draw links and regular intervals between any two points orbiting a center, you’re going to get something neat looking’.

To demonstrate, I quickly built a demo using HTML5 canvas and JQuery, and allowed the user to modify the speed and the distance of the two orbits.

And then I thought ‘Hey, that’s kinda neat, what if I added a third orbit? What if they orbited each other? What if instead of a circular orbit, it was triangular?’. And the idea stuck, so I got onto fleshing out the idea as a fully fledged webapp.

At this point — while I was comfortable writing HTML and JavaScript, and deploying applications within the development environments at my work — I didn’t know how to deploy my own application from scratch, for the public to see.

In order to build the app — I needed to learn:

  • A frontend framework (I chose React).
  • Various hosting solutions — I looked at Heroku, AWS and GCP.
  • I wanted to allow people to share their creations to their own Facebook feeds, so I learned about social sharing meta tags.
  • I also started getting familiar with the Twitter API, (and working with public APIs in general), so I could automatically post images to my Twitter feed.
  • I learned how to set up DNS configuration to point my own domain name to my hosted website.
  • I learned how to publish NPM modules.

The point here I want to highlight — is that I didn’t set out thinking ‘I need to learn these things — what’s a side project that would suit?’ — the side project necessitated learning these things.

And that’s I think the most important thing for a side project — a side project has to be enjoyable and has to make you want to work on it.

To this end — I think what makes a good side project is something a little silly, and a bit simple. If you’re interested in being a web developer — then hosting your own website is a good idea — there’s a lot to learn. What’s on the website? I recommend against going for a conventional portfolio — though, that’s me — instead maybe make a small game, or a chatbot, something that you are going to find fun to work on.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade