Side Project — why you need to start one

This week I learned something about myself while chatting with an old colleague of mine. He asked “How do you know so much about developing apps?”. To shed some context to that question, my colleague and I have been working together for the past few weeks towards our final year project. As soon as he asked that, I paused and reflected. It was at that moment, I was able to see the progress that I have made in the past few years of learning how to code. I smiled and replied “by doing a lot of side projects”.

For me, the notion of having side projects seemed completely normal. It paved the way for me to learn something new and have fun at the same time. That’s why I never really stopped doing them. When one finished, another came into the scene. What I really love most of them is perfectly described in Zen Pencils comic below,

A side hustle really can change your life. When you build something for yourself. Even as you continue to work your day job, you become empowered. You gain confidence. You create security, both in the form of that extra cash and also in the fact that you’re opening up future opportunities for yourself”.

And as a student, that was all I needed. For the remainder of the blog post, I would like to outline my thought process of when I am taking on a new side project of making a new mobile application of some sort. In addition, I highly encourage you to check out the full comic below.

Step 1 — Overcome the excuses

I am more guilty of this than anyone else. When it came to starting my first Android project, it was the fear that convinced me to not try it out. But from my experience and constant effort to ward off those thoughts, I learned to fight my excuses and simply start building stuff. Here is what I think about each excuse that I have asked myself in the past.

What if I don’t have the time?

Not true. Everyone has been granted 24 hours a day to use it wisely in however way they like. Instead of taking a new project heads on, I started by committing 30 minutes each day. Ofcourse this scaled up as my interest in the project grew exponentially. Quite frankly, I believe to become more productive with my other tasks when I took on more side projects.

What if I don’t finish?

Think of your side project as a one-person startup. You are your own boss! Set an initial goal and continue to work towards each milestone one step at a time. Be sure to adapt your timeline accordingly if any hurdles come along your way.

What if no one uses it?

Well this is more for you than anyone else. The idea of construing this as a one-person startup allows you learn new things in development, project planning, designing and even testing. And pushes you to try out things in business such as marketing and promoting in a low-risk manner. Just remember that most startups started off as a side-project or an experiment.

Step 2— Find the inspiration

Everyone is inspired in various ways. For some, building an application might be a way for them to start a business. For others, it might be to just learn something new. Either one of them is a valid notation. Make sure you are true to yourself and ensure that you meet your goals that you intended to achieve. I have listed various modes of inspiration that one can set their mind to.

The learners — I want to work on this application to familiar myself with the tech stack and showcase it in my portfolio during interviews. The idea will revolve around on how I have used various native functionalities of existing libraries.

The innovators —I want to work on this application to learn how to build a production-ready app. I want to learn the tech stack and publish it on the app store to attain users. The idea will solve a real-world problem and provide a way for users to use the app to make a process easier.

The business-orientated —I want to work on this application to solve a real-world problem and a way to start creating revenue through my users. This will involve learning the tech stack, solving an innovative problem and distributing it on the app store. At one point, this could scale up to a large company providing services to either businesses or consumers.

Note that all of these inspirations are to be treated equally and there is no imbalance on which one is more correct. As with our projects, we all have different roadmaps to our milestones.

For the learners in the crowd, I came across a very interesting challenge if you are up for it. The challenge is 100 days of code, where you have to spend at least one hour on your craft and share your progress on GitHub. This can be a great initiative to keep track of your progress while working on your side-project. You can find more information below.

Step 3 — Generating ideas

Generating ideas, in fact, is one of the hardest task in starting a new side project. The idea must provide a balance between your passion, abilities and providing a potential solution that solves the problem. By this I mean is

  • Avoid doing anything that you have no interest in. You will quit very quickly.
  • Avoid doing anything that is too technically challenging. It is good to push oneself to learn something new but setting the standards too high could result into a burnout. Start small and iterate over time.
  • Avoid solving the problem incorrectly. Don’t jump into the solution right away. Ask people to validate your idea and see if it would solve their problems. Once you have a good idea on what to solve, only then start the implementation.

Question to ask yourself before finalizing on your side project idea

  1. What is the problem you are trying to solve? Identify the user’s pain point.
  2. How does your application solve that problem and provides a service to that user?
  3. Can you scale the application once it has been published?
  4. (Optional) Can you make money out of this?

One of my favourite quotes from Paul Graham is from one of his essay on how to get startup ideas. He simply puts it as,

“When you have an idea for a startup, ask yourself: who wants this right now? Who wants this so much that they’ll use it even when it’s a crappy version one made by a two-person startup they’ve never heard of? If you can’t answer that, the idea is probably bad.” — Paul Graham (How to Get Startup Ideas)

Step 4— Put it on paper

Get in the practice of writing down your ideas. Get a notebook and carry with you. I often find myself, when I am walking around campus or in a lecture, that I randomly get a new idea of a feature or a better way to solve a problem.

When the idea is on paper, the next step is to derive requirements that the application must do. Now there are two ways of doing this in my opinion.

Text-to-Wireframe: Create a list of features that the application will have and reference it to create the wireframes either on paper or using an online prototyping tool.

Wireframe-to-Text: Start with the prototyping tool and build the exact model from your mind and translate those into a list of requirements.

It may seem odd, but I found the second method to be work quite effectively if you prefer to think visually rather than a set of operations.

A good prototyping tool that I recently discovered is Figma. It’s fast and easy to use, but most importantly free.

Step 5— Development and Shipping

This is where all the magic happens! Before starting off your project, define all of the technologies you will be using to complete the task. Cross-off the main ones like GitHub or any services like Firebase and keep a lookout to search for other tools out there that would aid you in development. For all the learners, I highly encourage you to use GitHub. This way you can learn how to contribute to projects when working in a large Software Development teams as well as keep your contribution graph happy.

GitHub’s contribution graph for public and private repositories

When is the best time to ship?

In my opinion, the best time to ship is when you have a stable application that covers your main functionality. By main functionality I mean, two to three features that solve the problem enough. Avoid building the whole product and investing months into a development, only to realize that your solution is not fully correct or effective.

Once you launch your 1.0, try to get as much feedback as possible. Learn how your users are using the application, does it solve their problem and how can this application evolve to something much greater. Once you have these data points, you can implement new features and strive to complete your application. To promote your application, you can use websites like Facebook to target your friends, blogs that pertain to a certain user groups and Product Hunt.

Conclusion

Hopefully this provides a high-level strategy on taking on a side project. Most importantly, I cannot stress the importance of having one to promote your skills as well as look up to a new challenge. It even allows you to understand yourself and what type of problems that you are passionate about solving. And hopefully one day, this side hustle will bring forth a large range of opportunities.

List of projects to tackle

I have a bunch of ideas that I really wanted to work on, but due to time constraints I never got to them. However, if these ideas seem interesting to you, feel free to take them and let me know if you end up building those!

  • a scrum-style To-Do app with daily standups
  • an app that that allows your friends to vote on a question
  • an app that finds the perfect time to create events with your friends
  • an app that lets you pair up with hackers with similar interest in a hackathon