It’s no secret that finishing a side project is hard.
I’ve struggled with some side projects and had success with others. In this post, I’ll focus on the actions and adjustments that have worked for me.
It’s possible to work on and finish side projects even with a busy schedule, the key is to optimize for interruptability. You will be interrupted so instead of counting on having hours of deep work available, it’s better to be realistic and make some adjustments to use available time in a better way and reducing the cost of interruptions by having tricks to switch context fast.
Maybe you are familiar with a similar situation
At the beginning:
After some time:
I believe you can set yourself for failure from the start if the goal is not clear.
I’ve been excited about ideas but later found that I was not really invested in the idea and just wanted to explore a cool feature/tool. It’s good to go deeper to your true motivation.
Feeling overwhelmed can also contribute to abandoning the project, I’ll talk about small steps and why it’s key.
If your track record includes lots of ambitious projects and none of them finished, then starting with something smaller seems like the logical approach.
Pick a small battle, maybe just the key feature first, maybe support for just one platform. Cut off features for the first version, remember that there’s a lot of forces against you completing your project so reducing load is important.
Now that you have a clear idea of what you want to finish, there’s some actions and adjustments to your process that will increase the chance of winning the battle (shipping).
I like the idea of not having too many open boxes at the same time, where each box is a task/feature or something that you started but haven’t finished yet.
It’s demoralizing to wait weeks or months for a win. Small steps give you small wins, it keeps the journey fun. There’s less change of feeling stuck.
Geepaw Hill shares excellent resources on the topic of small steps in software.
Before starting actual work, write about what would be good to achieve in the session. I find this ritual valuable as it helps me figure out the next small step. Writing the project goal (high level) every session is also a good way to switch context and reminding yourself what’s it all about.
I’ll talk about having a “context” log, where you write the current progress, and what to do next. If you have this file, reading the previous session log let’s you resume your work faster.
With the limited amount of mental energy, is crucial to reduce the number of setup tasks required to do a working session on your project. The goal here is reducing the number of small decisions you have to make to have a working environment.
This is one of the most important things for me, and the way I approach it is:
These have been valuable tools for me, let me explain why:
By creating a separate user, you automatically have all the operative system tools (calendar/notes/reminders , etc.) available ONLY for your project.
All the files on your desktop will have a relation to your project. This may not seem impressive but think about all the small distractions you find if you use the same user for your personal/work tasks:
I think it was Seth Godin who recommended having a separate laptop for a side project like writing a book. This is an alternative too.
You can add more extreme measures like redirecting distracting sites like news or reddit. If you need to login to one of those sites, it’s better to switch user accounts. Try to keep your project user clean.
I’m a fan of email as a note taking tool, it’s available everywhere, the UI is simple. Having a separate email account lets you capture related notes/ideas/links from any device. This has been useful for me when I’m doing something else and have an idea, or find a resource that can be used to do something I want to incorporate into the project.
Later, when I log in to my project environment I’ll get the emails with relevant information, no chance of getting distracted with other stuff.
A context file is just a text file where you add a short summary of the current project status and what’s on your mind at the time.
This has been valuable to me, because the act of writing it down helps me have a clear idea of things I could do next and next time I have time to work on my project I’ll have a starting point and it reduces the cognitive load which maximizes the session efficiency.
Going to a library or café (when possible) or event to another room and have a dedicated space for your current side project will make a difference.
Not sure about why, but using the same desk for different work and side projects is not ideal for me. If you can I recommend having a different place that helps you switch context quickly.
Some abandoned projects end up being an inspiration to create something else years later. Maybe you learned something new, explored an idea, or found a problem not possible to solve with the knowledge and resources you had at the time.
It’s good to have an open mind and be ok with finding dead-ends, they are powerful teachers.
However, shipping projects is awesome and by reducing scope and anticipating interruptions you will be able to complete your project and release it to the world.
For more information about the benefits of a “small step” approach to software development check the excellent resources from Geepaw Hill
Illustration by Angelica Delvalle (In case you need art for your company products contact her, she does awesome stuff!)