Lots of developers have side projects, but if you ask about them, they’ll probably say, “I’ve got a bunch of ideas and a few things in progress, but nothing I’ve finished.”
It seems to be a common theme. Lots of interesting problems and big ideas, but not enough follow-through. A lot has been written about how to break through this barrier—how to manage your time, how to hold yourself accountable, how to maintain motivation and interest… It all starts to sound an awful lot like work.
Then, in the next breath, we talk about the problem of burnout and how we can stop overworking ourselves. Maybe if we stop trying to structure our free time the same way we structure our work time, we can have more fun and get more done without burning ourselves out.
So how should we manage side projects without stressing out? I’ve got a few ideas.
1. There’s Nothing Wrong with Not Finishing
The first thing to know about side projects is that it’s okay to leave them incomplete. Even if you only scratch the surface of an idea, you’ll probably learn something in the process, and you shouldn’t beat yourself up over not finishing something that you started doing for fun.
Do you get mad at yourself for not finishing a video game, giving up on a TV series halfway through, or liberally skipping tracks on Spotify? Maybe, but you probably don’t post on the internet asking for help with your chronic inability to finish TV shows.
If you look at any community of developers, there are always plenty of us asking for help diagnosing our inability to finish side projects. Why should this be any different?
If you give up on something, instead of feeling bad about it, ask yourself what you learned in the process. Then remind yourself that “chance favors the prepared mind.”
2. Rewrite Something
You know that side project you started six years ago, haven’t touched in five years, but still think is a great idea? Pick it up and start rewriting it. Use a modern tech stack and see how much easier it is to solve the problem with today’s tools than it was only a few short years ago.
You might get some of the things that felt impossible during your original run for free, or at least with much less effort. You will remember struggling for weeks with something that seems to fall into place instantly. We all know technology moves quickly, but having these kinds of experiences first-hand is priceless.
3. Keep It Interesting
When you’re working on serious software, it’s important to pick the best tool for the job, even if it’s not very glamorous or interesting.
However, when you’re working on a side project, you don’t have to pick the best tool for the job. Take advantage of this fact. If you’re interested in a certain language, framework, or technology, you should use it, even if you think it’s the worst tool for the job. Even if you know that this week’s hot new JavaScript framework is a bad fit for your project, has bad tooling, isn’t mature enough, or has absentee leadership, you can use it anyway.
Why? The obvious reason is that if you’re using something that you find interesting, you’re going to be more inclined to stick with it for a longer period of time. A less obvious benefit is that having personal experience dealing with the shortcomings of some piece of technology will strengthen your decision-making abilities the next time you have to make an important decision.
It’s one thing to look at a list of bullet points and decide that something isn’t a good fit for your project. It’s another thing entirely to actually experience how a piece of software breaks down in certain situations. You might also figure out a nice way to fix some of these shortcomings and find yourself contributing to the project.
4. Make Something Small, and Release It
Try and identify a small piece of functionality that will be key to the development of your overall project. Then make it and release it. Some very successful open-source projects got their start this way. You might not finish your original project, but at least you’ll finish something and give it to the community.
Design your solution in such a way that it can be plugged into a variety of different projects in a variety of different stacks. When you rewrite your main project a few years from now, you’re going to want to plug it in without too much effort.
5. Have Fun
If you’re not having fun, you’re not going to get very far. Always keep in mind how much you’re learning as you go through the process. Follow your interests, and don’t be afraid to trash something and start over with a different stack.
Stop treating your side projects the same way you would treat a work project, and you will learn a lot of interesting things without burning yourself out. You just might finish something, too.