by Shem Magnezi

The Ultimate Guide for Working with Side Projects

Over the last ten years or so, I’ve made a habit of maintaining at least one side project at any given moment.

Those side projects have served a couple of purposes:

  1. Learn new things: Trying out a new technology, a new field, or learning a new skill.
  2. Build something: It’s nice and fulfilling when you can show your product to others, or take a look at something and know you’re the one that created it.
  3. Refreshing: It’s a great way to get out of your comfort zone and do something different from your day job.

I’ve listed these reasons in order of importance to me. Personally, most of the times my primary goal was to learn something new, but this can be different for you.

There are a lot of articles about why side projects are important. You can read about them here or here.

Here are some of my the side projects I’ve worked with:

  • 3D house model: Building a 3D model of my house back in the day. I even thought about applying for a job at Pixar. So to increase my chances of getting a job as a software engineer there, I decided to learn how to work with Maya.
  • Bill splitting app: I built a bill splitting app while exploring new fields I wanted to experience, like developing a user interface product. That’s why I created the Bill Splitter - Tip Calculator app, which later helped me get hired by a mobile startup.
  • Decorate my children’s room: When I was young I loved drawing, but I never had the time to do that when I grew up. So, I used the opportunity to learn how to draw with acrylic colors and sketch some stuff in our children’s room before my older daughter came into the world. Later, I did the same for our baby boy.
  • Write a blog: To practice my English, I started to publish content regularly. I might have written stuff that went viral, but my English is still not as good as I wish it was.

Those are just a few representative examples to give you a sense of what a side project can look like and what you can achieve.

Some side projects can help you learn something new that may be relevant to your role (For example, Android, Kotlin, Gatsby.js, etc.). Other projects can give you an opportunity to touch aspects of your job that you don’t regularly have time for (For example, product, marketing, design, etc.). And some projects just let you do something entirely new (write a blog, give a talk).

After years of maintaining side projects, I understand that there are certain elements to every useful and effective side project. If in the past I could work 10+ hours a week on a side project, now, with two small children I have only around 4 hours to work on it.

So I want to share with you some principles to get the most out of your time. So let’s start:

1. Decide what you want to learn

Before you start building something, think of what you want to achieve from the project. What do you want to learn? What do you want to practice?

This should be one thing and one thing only. Sure, you might get other things along the way as well, but focus on one thing at first.

Setting one single goal will later help you during the project with all kinds of decisions you’ll have to make. For example, should you write tests? If your primary goal is to practice responsive design, it may not be so relevant.

Remember, we want to get the most out of it in as little time as possible. We want to pay attention to what we’re working on, and more precisely, ignore what’s not relevant.

2. Choose a product that you would use

Next, we need to decide what we want to build. There are plenty of resources out there for side project ideas that you can create. Go over them to get a sense of the options you have and then ignore them altogether.

Your side project should be something you (theoretically) would use.

There are two reasons for working on a side project that you’d use:

  1. There are going to be ups and downs along the way. You will have days when you’ll be extremely excited about the project (especially at the start), but there will be times when you’ll need to find the energy to skip this new Netflix show and fix some weird bug in your project. If you aren’t really passionate about the project, it’ll be difficult to stick with it.
  2. Most of the time you’ll be alone. You don’t have a product manager or boss to tell you what to do. You’ll need to figure out what to do on your own, and the best way to do that is to build something for yourself.

3. Not too hard but not too easy

Now when it comes to building a side project, it’s important to aim at the right level. In other words, don’t build something that’s too hard for you — but it also shouldn’t be too easy.

That way you’ll stay motivated during the project. Whenever you cross a hurdle, you’ll feel a sense of achievement. It’s called the Goldilocks Rule, and you can read more about it here.

4. Break it into a small deliverable chunks

Before you start doing the thing, you should sit and plan.

As boring and tedious as it sounds, building a rough roadmap for the side project will help you later. The roadmap you define should not be comprised of only significant milestones, but it should have very small checkpoints that you can achieve in every “sprint” (usually a week or so).

Here is an example for one that I can think of for a simple chat web app:

  • Set up the environment
  • Make one client work locally
  • Sync data with the server
  • Make the remote client work
  • Styling
  • Deploy

Here is another one for a blog post:

  • Write an Outline
  • Write Section I
  • Write Section II
  • Write Section III
  • Introduction and summary
  • Add relevant links
  • Layout and image
  • Publish and share

Again, developing a rough roadmap serves two main purposes:

  1. Focus: As I mentioned before, you probably won’t have much time during the side project and every minute counts. You need to know exactly what you need to do and enter the zone as quickly as possible.
  2. Getting in and out of context: Since it might be days or even weeks since you last worked on the side project, it will be very hard for you to create a seamless continuing workflow. Continuing from the exact point you stopped, and understanding the context might take an hour or two. That’s why it’s better to close every session so you’ll have a fresh start in the next round.

5. Make it a habit

Over the years, I’ve learned that consistency is the name of the game. It’s more important to work on a side project consistently, a few hours a day, for a couple of weeks than trying to squeeze it into a 12 hour marathon and never come back.

That’s why, personally, I find it beneficial to make the whole thing into a habit. I know exactly what I’m doing every Friday when the clock strikes 10 AM. I open my Mac and continue working from the last point I stopped last week.

Since I’m doing the project at home, and working from home is not something that I’m doing in my day job, I also put my self into a working state of mind — sitting in a specific place, with a particular setup.

That way I enter work mode easily without really thinking what should I do now or whether this is the right time or place to work on the side project.
I also try to keep that habit for as many straight weeks as possible, even for just an hour. I’ve realized that when I miss even one session, it’s a slippery road from there, and I tend to skip many more sessions for many weeks. You can read more about it here.

6. Perfection is your enemy.

When the times goes by, it’ll be easy sometimes to go down the rabbit hole because you want to change some text font or waste your time chasing a small bug. Don’t let that happen!

Remember that we want to achieve as much as we can in as little time possible, so always remind yourself what you’re here for and focus on the important stuff.

Done is better than perfect, and you should keep the wheel spinning.

It’ll help you with the sense of accomplishment. The worst thing that can happen to you is to wake up after a 5 hour session to realize you just spent the whole day yak shaving without really making any progress.

Side projects are an excellent opportunity to acquire new skills and gain experience with stuff that you don’t usually have the chance to do in your day-to-day job.

As with anything new, it’s probably easier to keep up when you’re still excited. The secret is how you maintain this feeling and make this excitement last even when you feel tired.

I hope these tips will motivate you to build great products and learn something new.

If you enjoyed this post, please hit the “recommend” button below and share this story with your friends. I’ll also love hearing about any other tips that you may have or any cool side project that you’re currently working on. Thank you!

Originally published at shem8.github.io on June 8, 2018.