We took Howdy, our own little app, from an idea to a fully published SaaS application entirely in our spare time. During its development, we learned just how hard it can be to keep up momentum on projects that aren’t part of the day job. We’ve reflected on this and have distilled our experience into 5 tips to actually shipping a side project:
1. Have fun
If nothing else comes of it, your side project should at least be enjoyable. You’ll find yourself working on it at awkward times of the day when you could be doing other fun things such as going our for a drink with friends, watching the latest box set release on Netflix, or perhaps playing with your kids. So, if you’re going to work on your project, it’ll have to be something you’d choose to be doing anyway for at least some of your free time.
If you’re not sure what a fun programming project feels like, try solving a problem you already deal with or picking something that lets you work with a new technology you’re interested in. A fun project will help shorten the time to feeling good about what you’ve built, and you’re more likely to be motivated to continue with it as a result.
2. Ship immediately
Not putting your app out to a production server is a slippery slope to something that works on your machine, but nowhere else. In doing this, you’re setting yourself up for a huge final hurdle in getting what you’ve built deployable, which can often be enough to kill your motivation for what you’re building.
Instead, get your app running in production as soon as you can. Include version control as standard and preferably use a decent continuous integration setup. This way, all the while you’re developing on it you can avoid that deployment hurdle by automatically deploying as you go. You can also share your work around and gather valuable feedback and motivating praise from others.
3. Never skip tests
It can be tempting to skip over tests to focus on the fun stuff when building a side project, but before you go that route, consider this… There will be periods of downtime on your side project where you simply don’t have free time. These may be weeks or even months long. You’ll find that when you get back to your project after one of these periods of downtime, things look pretty alien. It won’t be obvious to you how your code works, why it works the way it does, or what you were thinking when you wrote it.
Solid test coverage will keep you sane here. Coming back to your app after a long period and being able to tell in seconds whether everything is working, how it works and verify that “past you” knew what they were doing will fast-track you back into the context of your work.
With a side project you never really know when you’re going to be pulled away onto other things. Have confidence in your tests to ease the process of hopping into and out of your codebase at a moment’s notice.
4. Developer experience is key
We aim to kill repetitive tasks during our normal work day, but it can be tempting just to put up with them on a side project because nobody’s watching. Don’t — they can be a death sentence for your project. Repetitive tasks include:
- Juggling test/production API keys every time you want to test different environments.
- Commenting out lines of code to prevent your app from doing something you only want to happen in production.
- Feeling the need to manually verify things are working correctly after every commit.
- Having an arcane concoction of commands and environment variables for project installation, running, testing and deploying.
- Generally speaking, anything that feels like hassle that you find yourself doing a lot.
Odd jobs like these will both slow you down, but also kill your passion for your work, especially when you’re tired, which you often will be.
Simply put, automate these little frustrations out of the equation aggressively, and double down on developer experience. Make your codebase a joy to work on. You should aim to impress yourself with how easy it is to install, start, deploy and test your work, and how magically your codebase does the right thing in development, test, staging and production environments.
5. Run a marathon, not a sprint
There will be days when you just don’t feel like working on your side project. When this happens, remember it’s ok not to work on your side project. Go do whatever it is you’d rather be doing instead. If you find that you never want to work on your side project then it’s ok to scrap your side project too.
Remember, at least initially, your side project will give you nothing. However, it may well cost you your hard earned cash, your free time and missed opportunities with friends and family. So, if it doesn’t seem like something you want to be doing in that particular moment, don’t feel bad about skipping time spent on your side project. It’s really not that important.
Howdy is a simple contact form handling SaaS app, but it still took us several months on the side to get in front of customers. We’ve now bought it out of the realm of side-project and have made its development and maintenance part of our work day, but if we hadn’t taken the steps above it’d probably still just be an idea on one of our home machines and it wouldn’t be helping real customers and paying us back with real money.