Discover more from Refactoring
How to Build Side Projects 🕹️
How to stick with them, and why you should start them in the first place. A chat with Vic Vijayakumar.
My longest professional experiences have been, respectively:
CTO at Wanderio — my former startup, for 10 years, and
Writer (?!) at Refactoring, for 3 years and counting.
Both were born as side projects.
When I started Wanderio I was a PhD student, and when I started Refactoring I was a manager at Translated. In both cases, I stayed for one more year and then I left to turn that side project into a full time gig.
I may also give a shout-out to other, less successful projects from the past:
In 2018 I created a mobile app called Fuorigioco (Italian for offside) to play fantasy football with friends.
In 2020, during lockdown, I created an app called Trovaspesa to help people in Rome buy groceries online.
Both apps kind of bombed, but taught me solid lessons:
With Fuorigioco I learned React Native + Expo, which then I used a lot in Wanderio.
With Trovaspesa I had to do sales by talking with tens of local shops over the phone. I had never done this in my life and I learned a lot.
This was supposed to be just a short intro before I tell you more about my recent chat with Vic Vijayakumar, principal engineer and side project master. But I got sidetracked, which is just fitting given today’s theme.
When I prepared for the chat, I figured out Vic has a lot on his plate:
He has a happy family with three young kids.
He is Principal Engineer at Twilio.
He runs multiple small SaaS apps.
He runs a podcast about engineering leadership.
He has a great online presence, with 13K+ followers on Twitter.
My whole idea was to inquire him about how he manages to do it all, but the conversation ended up being about much more than this. We covered a lot of ground, from how side projects saved him from burnout, to what productivity truly means.
So here is what we discussed, and what we will cover today:
🕹️ Why you should have a side project — there is more to it than just money or tech chops.
🔄 How to work on side projects — process, mindset, friction, and goals.
🔋 Productivity, constraints, and… kids — the counterintuitive rules that govern our energy.
⚖️ Tech choices for side projects — should you use what you know best, or the new shiny thing?
💪 Building is a muscle — a final recap with lessons learned and some parting advice.
Let’s dive in!
🕹️ Why you should have a side project
As an indie hacker myself, I have talked over the years with many people who run side projects.
A side project can be anything, really, but for the sake of this conversation let’s stick with stuff that has some relation to your work — say, if you are an engineer, some web or mobile app.
In many cases, people I talk with would take these things extremely seriously. They hustle to grow users and MRR, with the dream of quitting their job and do that full-time.
And there is nothing wrong, of course. I did that too 🙋♂️
But this is not the only reason why you may run projects on the side, even though threadbois want to convince you otherwise. When I spoke with Vic, in fact, I didn’t feel such a tension between his full-time job and his other projects. He loves his job! And he loves his projects, too.
So what’s the deal?
Let’s cover the main reasons why you should have a side project.
1) Skills 🎓
Side projects create excellent chances to practice new skills. Two examples:
Vic used to be a PHP developer, then he started using Next.js in a side project, eventually building the confidence to use it at work, and gradually became more of a JS developer.
I learned React Native + Expo to create a small app to play fantasy football with friends. The experience was awesome, and we later decided to use React Native for our Android app at work.
This doesn’t only apply to tech skills.
In general, you may want to look for skills that are complementary to your day job. Are you a backend developer? Try some frontend. Are you an IC? Do some project management, prioritize features of your small app, talk with users.
If your project is a small business—however small—it will make you practice marketing, product, design, and develop a proactive attitude that pays dividends on your regular job, too.
Speaking of jobs and dividends, let’s talk about money 👇
2) Money 💰
When you hear money discussions about side projects, these are usually about the revenues that your project generates. Projects, however, can also seriously accelerate your career, which also means more money down the line.
Not only, in fact, skills equal money — good projects look great on your resume, too. They make for great interview topics, and display the kind of attitude companies hire for.
3) Impact ❤️
If you feel like a cog in the wheel at work, a side project can boost your morale by solving real problems for real people.
One of Vic’s main projects is a SaaS that helps with preschool paperwork. It doesn’t make crazy money, nor is it particularly complex on the technical side — but Vic says it just feels good that it helps some real businesses.
4) Mind space 🌱
Speaking of impact and feeling good, a side project can — counterintuitively — help with your work-life balance.
In fact, I have found that such a balance is often not much about pure time, but rather mind space. You may technically have free time, but still feel like using it for work, because “you have to”, right? And when you don’t have a strong alternative, it may be hard to resist the temptation of working all the time.
So, a side project can work as a creative outlet that just puts you in a different mindset. Your brain gets into the sort of creative problem solving mode that rescues you from working, or even thinking about work.
So, how do you get started?
🔄 How to work on side projects
I have found that finding the right idea is not what usually stops people from starting a project.
People have plenty of ideas.
So, the typical conversation is more something like: “aaah if I just had the time I would do this”.
But time is always a matter of priorities, so when someone tells you “I don’t have the time for this” what they are really saying is: “look, I have all these other things going on and they are all more important than this”.
That’s why, in Refactoring articles, I spend a lot of time talking about why you should do this or that. I have found that if people are positive about the why, they can usually figure out the how by themselves.
Still, here is some general advice that worked for me and Vic:
1) Find your golden hours ✨
My definition of golden hours is some time of the day where you are 1) productive (i.e. not exhausted), and 2) not likely to be interrupted by something else.
For some people this is early in the morning, for others it is at the end of the day, and so on. In some cases you may need to fabricate this time as it doesn’t exist otherwise — e.g. you get up a bit earlier.
2) Do it often ⏲️
Working on a project requires loading some context into your brain. The more often you work on it, the easier the work becomes because you retain such a context.
Conversely, when you work on something only e.g. once a week, I have found it hard to remember what I was even doing — and then I skip one week and the project is lost altogether.
3) Remove friction ⛵
Make it as easy as possible to work on your project. Treat yourself with good DX, avoid chores, and use tools that you know.
4) Goals or not? 🎯
Some people are motivated by setting goals for their projects, like revenue targets or number of users. Others, instead, avoid doing this because it would feel like work otherwise.
Finding the right attitude towards your project is important: you can be more serious or more laid back, and both modes can work based on what triggers your motivation, and what you want to get out of the project itself.
If you are unsure, just experiment a bit. Does creating OKRs for your project get you anxious? Does it give you energy?
🔋 Productivity, constraints, and… kids
Vic has three small kids, so at some point we naturally gravitated towards how this affects his work and how he manages to juggle all the things.
This is not the first time I have had this kind of chat — I have various friends who have kids and yet manage to stay productive. Maybe this is obvious to you, but I can tell you that, for many, it is not: many people resist having kids in fear of the total disruption these would bring to their lives, including their work and projects.
The good news is, smart new parents always give me the same answer: my output didn’t change much, because constraints increased my productivity. What does this mean? And can we take away something for non-parents, too?
🎨 Constraints and creativity
I don’t read a book at night, I read a book when I am walking the dog
— Vic Vijayakumar
Performance and creativity are enabled by constraints. As per Parkinson’s law, work without constraints tends to fill up all the available time, like a gas with its container.
Conversely, working backwards from constraints forces us to find clever solutions. This is true both in work and in life.
In a previous chat with James Cowling, former Principal Engineer at Dropbox, we talked about moving from the “I can’t make it in one day” mindset, to “What can I make in one day?” mindset. Deadlines work best when you work backwards from them: you set your appetite first, and define the scope later.
Constraints not only force you to be creative — they make you literally more productive.
I think of myself as a disciplined person; I write the newsletter the same time everyday, I have all my set of ceremonies, and I just follow a predictable routine. However, every week, the time where I am the most productive — where I literally write the most — is the day before publishing. Every single week! I am just more focused and I seem to have more energy, because I am driven by a real constraint.
So, I believe peak performance is about finding a sweet spot where:
You are not frustrated by having too little time, and
You are not sluggish because you have too much.
And, I can tell you, the optimal amount of time is always going to be less than you think.
⚖️ Tech choices for side projects
The ideal tech choices for your project depend on your goal.
Is your goal learning? Try some new shiny stuff.
Is your goal shipping an MVP asap and making some money? Use the stack you are most comfortable with.
Not rocket science, of course, but it is still easy to fuck this up when you start a project with conflicting goals in mind, like: “I want to create a good SaaS and also learn some new tech”.
While doing both is not impossible and can even be good for your motivation, think about McFunley’s innovation tokens and choose wisely where to use proven tech, and where to take some calculated risks 👇
To accelerate development, then, consider two things:
🍱 Keep a boilerplate of your favorite stack — Vic maintains a Github repo with everything he needs to start a new SaaS instantly, complete with payments, auth, backoffice, and UI scaffolding.
🪄 Use no/low-code tools — there exist plenty of handy tools to lift coding weight from your shoulders. I wrote a full article about them a while back 👇
Feel free to read the full article, but I am also going to give you a hot take: if you are serious about shipping fast, the #1 component to low-codify is probably your database, by replacing it with something like Airtable or Google Sheets.
I know, this looks insane, and it also goes against everything I have written in the past about choosing boring / exciting tech 👇
However, consider this:
Data needs to be edited, and with Airtable/GS you get an awesome admin UI for free.
Data needs permanent, paid hosting (as opposed to functions and frontend these days) — which you get for free on Airtable/GS.
Airtable/GS can express an awful lot of business logic via formulas and references, all of which you should code otherwise.
Airtable/GS give you CRUD API for free.
Airtable/GS play nicely with plenty of other tools out there, including workflow ones like Zapier, for even more automation.
So think about it!
📌 Bottom line
At the end of our chat, Vic and I agreed that building is a muscle: the more you build, the more you get better at building, in many ways:
🔨 Skills — you just get more skilled. You learn more tools, languages, and you get faster overall.
🧠 Mindset — You get used to spending time building ideas on the side. You develop discipline, and it just becomes a habit. Like going to the gym.
👓 Sensitivity — You start looking at things with new lenses, through which every problem is an opportunity to build something. The more you build, the more you find things to build.
So, if you are just getting started, here is my bottom line advice:
🩹 Scratch your own itch — find a problem you personally have and you think you can solve with tech. You may eventually find others who have the same problems, but even if you don’t, hey, it’s one less problem anyway!
🌶️ Use the tech you know + some interesting new bits — use 80% of stuff you are familiar with, but spice things a bit by adding some pieces you want to learn. This will work as an extra motivation, while not putting the whole project at risk.
☀️ Enjoy the journey — find ways to work on your project that don’t disrupt your life, and always pay attention to how you feel. It should feel good. Optimize for enjoying the process, rather than getting to a specific destination (e.g. I’ll make a ton of money!).
And that’s it for today! If you are finding this newsletter valuable, consider doing any of these:
1) ✉️ Subscribe to the newsletter — if you aren’t already, consider becoming a paid subscriber. You can learn more about the benefits of the paid plan here.
2) 🍻 Read with your friends — Refactoring lives thanks to word of mouth. Share the article with your with someone who would like it, and get a free membership through the new referral program.
I wish you a great week! ☀️