There are two main reasons why anyone would build a side project - to learn new technologies, or to make something for others to use (and then hopefully monetize, and call it a startup). I think these two are drastically different goals, and under no circumstances should they be mixed together.
It is exciting to both build something new and also experiment with a new stack. Yet it is distracting to do both at the same time - it’s almost like sitting down to write some songs, while also learning a new instrument. It’s not as extreme for most people, but you get the point. I’m going to focus on side projects as products, because learning new technologies is different for different people.
If the goal is to make something for others then 99% of your brain power should go to the idea.
The reason why so many side projects never see the light of day, or you don’t want to even start one, is because of too much focus on technology. Think of it as technology fatigue. Servers, updates, deployments, containers, frameworks, scalability, etc. None of those things should be a headache, thus the goal is to figure out how to not have to think about them at all.
I remember seeing the “A blog in 15 minutes with Ruby on Rails” video and thinking wow, this is incredible. That video came out 7 years ago, and yet today most people would not be able to build a blog in 15 minutes.
You should be able to.
Everyone should have a set of favorite tools, frameworks and libraries ready. From domain registrars, to hosting, and from web frameworks to UI libraries. You might even choose to have a sandbox template with all of this setup, so all it takes to start a new project is copying the sandbox into a new folder.
Technology used won’t make the difference. For example, I think one of the biggest waste of time is servers. Renting servers, figuring out how to set them up, figuring out how to deploy, etc. None of this is exciting. Instead, I type
heroku create new-project and have it live instantly. Heroku is one of my toolbox gems. There are few dozen of those which all save time or allow quick bootstrapping. That’s the whole idea behind figuring out tools which work for you - all to allow you to focus on ideas, not figuring out for the 237th time how Ansible works.
The focus on shipping early and often is key. Common reason why projects fail to see the light of day is because they never end up getting deployed once. The longer they drag out for, the more it feels like things are not ready to be published. Avoid this anxiety - to be honest no one cares about it yet anyway - just make it live! Big part of this is creating deployable milestones, so as every small piece is complete the project can be made public and everything works.
When something is easy you do it more often.
When you figure out how to bootstrap new projects quick, and how to effortlessly make them live you do it more often. Doing it more often leads to less of them being thrown away because you didn’t have the time. Thus because you build more of them, it’s more likely one of them is going to work. The simple task of figuring out your toolbox, down the road, leads to so much more.
But before you even start, there needs to be a todo list. Or some kind of a plan what needs to happen. I write down all ideas I have in a simple text file, and keep adding related thoughts until I form some sort of a spec. Then I make those happen, but I don’t start working on anything new until I have time review what happened. Which usually involves asking others for feedback too. Even for side projects it’s healthy to use sprints instead of randomly coding features.
I write because I don’t know what I think until I read what I say.
― Flannery O’Connor
I recently saw this quote and I liked it because for me side projects and ideas are vague until I can see them implemented. Thus my focus on being able to see them live as soon as possible. And it’s only when they are done I can understand the idea I originally had in mind. At which point I review my notes, figure out new ideas, and keep at it.
Last month I was sitting in a coffee shop when I had an idea for something new. So before my laptop battery ran out I figured out what exactly needs to happen, purchased a domain, built a prototype, made it somewhat presentable and had it live. Done, shipped it. Technology is a distraction, it’s all about the focus on the idea.
The key to shipping side projects is to be able to build a blog in 15 minutes. And have it live accessible for everyone to see in 10 more minutes. If that sounds impossible, then technology is going to limit your creativity when building something bigger.
*all illustrations done by Frits from hikingartist.com