Alex Loukissas

Why you should build side projects

Posted on

As a software engineer, you are constantly creating, building, and maintaining software systems. But have you ever considered stepping outside of your daily work and embarking on a side project? In this post, we’ll explore the reasons why side projects are an essential aspect of a software engineer’s career.

What is a side project?

Before we dive into the reasons why you should build a side project, let’s define what a side project is.

A side project is a software project that you build outside of your day job. Side projects can be anything from a small web app to a full-fledged game. They can be built for fun, to learn a new technology, or to solve a problem you encounter in your day-to-day job. Side projects are a great way to explore new technologies, learn new skills, and build something that you can be proud of.

Why should you build a side project?

There are many reasons why you should build a side project. Here are some that I have found to be the most valuable, as a serial side project builder.

Skill development

Side projects provide an opportunity to expand your skill set. By working on projects that utilize new technologies, programming languages, and tools, you can broaden your expertise and become a more versatile software engineer. For instance, if you primarily work with one programming language, you can start a side project that uses a different language and learn its unique features. By exploring new tools, frameworks, and libraries, you can stay current and relevant in the field.

Just in the last year, I have build side projects that use the following tools:

This allowed me to learn about new technologies and frameworks, and potentially evaluate whether some of these tools could be used in my day job. For instance, I found Zod to be such an invaluable tool, that we now use it extensively.

Further, it gave me the opportunity to contrast some of these technologies with the ones I have been using with and evaluate their pros and cons. For instance, seeing how radically different Svelte’s approach for building web apps is from React’s approach was a great learning experience.

Creativity

Side projects are a great way to flex your creative muscles. By building something that you are passionate about, you can explore your interests and be creative in a way that you may not be able to in your day job. Without the constraints of a work environment, you have the freedom to experiment and try new things.

For instance, if you are a software engineer who primarily works on backend systems, you can build a side project that is a frontend-focused web app. Or if you are a frontend engineer, you can build a backend-focused API. By working on a project that is outside of your comfort zone, you can explore new areas of software development and expand your skill set. This environment fosters creativity and can lead to unique solutions for your main projects.

Career opportunities

Building a side project demonstrates your passion and dedication to the field, which can be attractive to future employers. It also gives you the chance to showcase your skills and portfolio, making you a more attractive candidate. Employers often look for engineers who have experience in various technologies and have a passion for the field.

In some cases this could be something you could link to on your resume, ideally with a link to the source code. In other cases, you may choose to contribute to an existing open source project. By doing so, you can show your commitment to the field and make yourself a more attractive candidate to future employers.

Problem-solving

Side projects are a training ground for problem-solving. They present unique challenges that require creative solutions, and by tackling these challenges, you improve your problem-solving skills. These skills are valuable in your professional life and can be applied to your main projects.

It could be the case that in your day job, you are working on a project that has had a lot of engineers that have worked on it and certain hard problems have already been solved. When you’re working on a side project, you may need to solve every problem from scratch. This can be a great opportunity to learn new skills and improve your problem-solving abilities.

Networking

Finally, side projects are an opportunity to network with other professionals in the field. By collaborating with other software engineers, designers, and stakeholders on a side project, you can expand your network and gain access to new resources, ideas, and people. Collaborating with others is also a great way to learn from their experiences and skills.

How to get started

Now that you know why you should build a side project, let’s explore how you can get started.

Find a problem to solve

The first step to building a side project is to find a problem to solve. This can be a problem that you encounter in your day job, or a problem that you encounter in your personal life. For instance, I started a side project just for the purpose of evaluating Turborepo, since it seemed like a tool that could be useful for my day job. I also started a side project to help my wife an I keep track of our household chores (yes, yet another TODO app 😂).

Choose a technology

Unless your side project’s goal is explicitly about exploring a new technology, I would caution against experimenting with new technologies when you’re building a side project. The last thing you need is to get bogged down in learning a new technology and not ship anything. Instead, I recommend using a technology that you are already familiar with (AKA your Boring Stack). This will allow you to ship something quickly and iterate on it.

Build it

Once you have a problem to solve and a technology to use, it’s time to build your side project. I recommend starting with a simple MVP (minimum viable product) and iterating on it. This will allow you to ship something quickly and get feedback from users. By iterating on your MVP, you can improve your product and build something that is useful.

If you’re short on time, what I found to be useful is breaking up the project into micro tasks and working on them in short bursts. This allows me to keep the momentum and ship something quickly. For instance, if I’m building a web app, I know I can build a simple login page in under 30 minutes. So I’ll start with that and then move on to the next task. You can use whatever tool you prefer, but I like to use Github issues for this, since I already use Github as as repo for my side projects.

Launch it

Once you have a working MVP, it’s time to launch your side project. Again, I recommend going with tools you already know. For instance, since most of my side projects are web apps, I use Vercel to host them.

When the project is live, I’ll try to share a link to my project (perhaps paired with a blog post) on a few channels (e.g. Twitter, Hacker News, Reddit, Indie Hackers etc.) to get some initial feedback. I’ll also try to get a few friends to try it out and provide feedback. This will help me identify any issues with the product and improve it.

Remember: the initial version of your side project should be something so raw that you are embarrassed to show it to anyone. But the quicker you launch and start iterating, the better.

Iterate on it

Once you have launched your side project, it’s time to iterate on it. This could be adding new features, fixing bugs, or improving the user experience. The goal is to improve your product and make it more useful for your users.

I recommend using the same process as you did when you were building your MVP. Break up your project into micro tasks and work on them in short bursts.

Conclusion

Building side projects as a software engineer is a great way to broaden your skill set, showcase your work, and improve your problem-solving skills. It’s also a great opportunity to network with other professionals in the field and contribute to open-source projects.

So, start thinking about your next project today!