Engineering with Utsav

View Original

What makes a good side project?

Side projects are a great way to learn new tech stacks, keep your skills up-to-date, work on something you are passionate about, make your resume stand out or even possibly earn some side income. Working on side projects also shows initiative and drive for learning and growth. But the problem with most side projects I see on resumes is that they are either the same rinse-and-repeat projects over and over again, or some implementation of a highly technical white paper. While this is better than not having side projects at all, but we can definitely do better. So, let's look at what makes a side project good.

Video version of this article is available on YouTube.

So what makes a side project stand out?

My recommendation when choosing a side project, would be to try to cross as many of these boxes as possible.

  • Something that solves a real problem and doesn't look like you followed a tutorial from somewhere.

  • Something that touches the entire stack, and ideally something that utilizes the latest cloud offerings.

  • Something that has the potential to be used by a lot of people - a useful library or an app is a great example of this.

  • Something that is for charity of goodwill.

  • Something that can generate revenue.

  • Something that is innovative, unique or appropriate with the time period.

Let's look at a few examples.

Libraries make for great side projects.

Do you find yourself doing things repeatedly and can't find any existing libraries out there? Or have you found decent libraries, but they lack some features you'd wish they had? That's a great place to work on creating your own libraries. Libraries are great candidates for side projects because they can be applicable to literally anything, from logging to mocking to client-server communication, you name it. Not only that, libraries check off a lot points we talked about earlier — they solve a problem, they have the potential to be widely adopted, they can generate revenue in certain scenarios, and if you tie in things like ML, cloud compute and things like that to them, they can be innovative and unique as well. When Microsoft Teams just launched, there were no libraries to log into a teams channel. I had some projects where my telemetry was getting logged into a slack channel. It made it easy for me to monitor some critical events and get quick alerts on the fly. But since Teams did not have any such library, I wrote one so I could move my telemetry over to Teams. Sure, I could just have written one-off code to do that, but it was evident that other people would eventually run into the same problem. So I wrote a more generic library with that in mind. I also added a pub-sub model to give the ability to publish logs to a queue where other services could subscribe and consume the same logs. My library was downloaded by a lot of people and at one time was the most popular Teams logging library.

Extensions also make for great side projects.

They are very similar to libraries, but instead of packaging common, repeated steps together, they add functionality to existing tools and features. You can work on browser extensions or extensions for specific programs like Vs Code. You can also get quite creative with extensions. When I was preparing for my coding interviews, I wished that LeetCode had a built-in timer and I also did not want to see the difficulty of a problem before working on it since that can have a mental effect on your performance. So, I wrote a simple extension that did that for me. I also wanted to see my performance on a particular problem over time, so I added the ability to record some metadata about the problem in local storage. I am sure an extension like this already exists. But you could take this further by connecting the extension's back end to some form of cloud storage, add user management, and allow users the ability to track their progress over time. That then becomes a very decent side project that not only solves a common problem, is quite useful and also touches the entire stack. Not only that, it has the potential to be picked up by a lot of engineers prepping for their interviews.

IoT devices are also fun to work with.

I'll share a funny story. So my wife has a standing desk but keeps forgetting to stand. I ask her all the time to set reminders to switch to the standing position, but I've not had much success in getting her to do so. So as a prank, I decided to 3D-print an actuator and attach it to the button that makes the desk stand up, and then connect the actuator to an IoT wi-fi module, then over to an IoT hub so that I could set it up with an automatic timer that would raise her desk at random intervals. This may not be the greatest project, but it shows that you can get creative with technology to solve a problem at hand. And the context itself is funny, and shows that you have a good sense of humor. If I saw this in your resume, I'd definitely have a good laugh and it would definitely stand out. Resumes don't always have to be boring and mundane. So, feel free to get creative with your side projects and don't be afraid to include them in your resume. How do you think people like Mark Rober got so famous? Because they solved problems in unique, creative ways using technology, while also displaying a great deal of sense of humor, personality and character!

Projects that are time and context appropriate are also great to work on.

For example, applications to track the spread of COVID or visualizations to show vaccinations were great projects that were contextually appropriate since the COVID outbreak. They also show your initiative and willingness to step up to help during a global crisis. If you are into machine learning or data science, you could get creative with your data sets and try to uncover unique correlations and things like that. Of course, COVID is just one example that is relevant right now, but opportunities like these pop up all the time if you keep an eye out.

***

Well, these are just some examples, and I hope you get the basic idea. Don't just work on side projects because that's what is expected of you. Work on them because you've found a genuine problem you would like to solve. Get creative with your solution and don't be afraid to let some of your personality shine. And while at it, see if you can make something generic that can help others solve similar problems. These always make for great side projects.