🔙 How I avoid the side project frustration
I just don't do them anymore.
Okay, seriously now...
How many repositories of unfinished side projects do you have? I have a lot of them. There is no secret sauce in this post, but I realised that some methods that I already know could push me to be more productive and happy. So I'm sharing them here. 🤗
From excitement to frustration
Many times I get excited about new technologies and get in that hacker mood, I cannot rest until I try that out. Maybe I am looking into practice some skill that will be useful in the future. Or that project might be just for fun!
No matter what the trigger is, we may get motivated about an idea and want to turn that into a real thing. However, it is not extraordinary to get frustrated about that. That is very common it and happens to me quite often.
I was frustrated about the side project frustration 🤣. I started thinking more and more about that, and I decided to focus on the problems behind that occurring so often to me. Then I managed to narrow down and classify some of the issues that contribute to that feeling.
The friction of setting up a new project
We create a repository, install the dependencies, play around with the configs, then we have to wrap up for the day, never to come back to it. Or worse, we go back to it only to find out all that initial excitement was gone and we would not even know the next step anyway.
Setting up a new project is time-consuming, and I dropped various projects at this stage.
Hard to quickly get feedback on something
Given that I would have everything set up, another painful part was sharing progress with someone. How do I deploy my project? Everybody is using JAMStack now... or maybe AWS... I used Heroku before... Damn, I just wanted to show that to a friend. 😕
Sharing work in progress can be overwhelming, indeed, from choosing the "right" option to configuring everything properly. There is a lot to cover.
The undefined scope
Most of the times, I start the project without much of a plan. Frequently I would find myself doing a lot at the same time (frontend, backend, hosting) without a clear strategy and boundaries around it. So I always felt I was not getting any closer to the "end".
The point is: there is no "end" unless you define it.
Speeding up the setup and feedback loop
When I have a short time to try out something I do not want to bother that much about the settings and the infrastructure unless those are the targets of my study. I'll be probably interested in application code.
One thing that is helping me a lot is to use CodeSandBox more and more. Whenever I have an idea that I can try out by creating a sandbox, I do. I open up a new tab in the browser, select a template and start coding.
The app is fantastic, and you can choose from a wide variety of templates from GraphQL Apollo Server to Svelte. It optimises my time, so I get to focus on coding. I've been way more productive that way. 😊
- I do not lose time creating the repository, installing dependencies, opening an editor, tweaking configs. It's all already there in a minute.
- I can share the sandbox links with anyone 🎉. There is both the editor and the app view available to share. I got rid off thinking about deploying.
Plus it has a lot of other benefits:
- Connect to GitHub and create a repository from the sandbox.
- Deploy to Netlify and Vercel.
- Invite others to edit a sandbox live with you.
If your side project cannot live in a Codesandbox, you can still leverage tools and services. Maybe there are boilerplates that you could use. You may expose your localhost application with Ngrok. Perhaps deploy to Heroku using its cli. You can even deploy to Netlify or Vercel using their GitHub integrations. And many more.
Defining the undefined scope
Done is better than perfect. Although it may sound a bit cliche, it is true. Getting something working helps you to build a sense of fulfilment, happiness, and why not relief about achieving the goal.
If I'm working on something in the sandbox or not, it does not matter. I realised I needed to plan to get more things done. Then I started to figure out the necessary work and set specific objectives.
In my method, I write down small enough pieces of work that I could tackle at once. They may require half an hour, an hour, or more, as long as I can understand the time they might take it's okay. That way, whenever I have spare time to work on something, I try to pick the piece of work that fits.
It's not always easy to understand the chunks of work, and that is precisely why it is so important to plan. You have the opportunity to search first, look for tutorials, read docs, and you get to learn before doing it!
I've been using a todo-list at the moment (on Notion), and the best part is that it is working! The way you decide to organise that list is always up to you. You may use a Trello board, notepads, post-its in your workstation, or even nothing at all if that's not your style. Find the tool that you are comfortable using, and that can do the job.
It all narrows down to planning. Although it may sound too much for a side project, if you can spend some time thinking about it before doing it, you will probably be more productive.
I've noticed some improvements after applying these techniques:
- I'm happier because I'm always moving forward.
- I know things that I could do in 10min if I want to.
- I have a clear picture of all projects in progress and their next steps.
- I got to practice more breaking things down into smaller units of work.
- I now realise ahead of time if the project is what I actually want to do.
Conclusions
Being more intentional in planning and using tools that I am comfortable with is what is making the difference to me. The way I look and approach my side projects is different now. The techniques I use to tackle them can help you too, but you may find your unique routines as well! 🥳
So, what are your big frustrations with side projects? How are you overcoming them? Thoughts, ideas and suggestions are always welcome.
Cover by Matt Duncan on Unsplash
Let me know what you think about this post on twitter!