A thing or two about side projects | /var/log/share

A thing or two about side projects

I’ve been getting more time to focus on some side-projects now that I am working from home due to COVID-19. Around a month back, I had an idea about building an iOS app for something I cared about. This made me wonder about the countless side-projects I have abandoned in the past and if you are like me - here are some things that are helping me out right now.

Focus on the problem

This is by far the most important aspect you want to get right. Most side-project ideas are fleeting and you want to hold on to the core problem and write it down somewhere. This should be a single statement or a simple enough description that you can keep coming back to. Doing this has particularly helped me in making sure I don’t introduce any scope creep into my problem and start digressing.

Though, this is not everything here - it’s also worth searching the web to figure out if this has been done or not. Some side-projects would have the potential to be of real value and you want to make sure you notice this so you can prioritize among your ideas. Once, you have a clear sense of what you want to solve - it’s time to pen down your plan.

Plan before implementing

I find software projects easy to approach - because you write something and can see it in action within a few minutes. So, it’s easy to give in to your excitement and dive into implementation without planning things out. Countless times when I have faced this - I’ve come back to the drawing board to figure out what I was solving! This will waste a lot of your time and is a rabbit hole you don’t want to get into. How about fleshing out the problem statement from the previous step more ? A good template I have found that has worked for me is something of this sort:

Objective: Around 3-4 lines. Something you can come back to that will continue to make sense

Motivation & Rationale: Briefly describes the need and logic behind going from thought to implementation

Existing Solutions: This is good to note down because you have prior art to refer to when you are stuck.

Specification: Briefly describing how you are going to get there for implementation. Ideally, you would want to write down technologies and tool selection.

Gannt chart: Timeline and milestones to achieve as you build out your project.

This should be just enough information to help you get organized.

Read, read & do more of it

As you build out your project - continue to invest time reading about best practices and how others are doing the same. This is helpful when you’re debugging software that you have no clue about. I have no idea about iOS development and a lot of time went into reading about Swift and tools available to get things bootstrapped quickly. Invest as much time as possible educating yourself with the technologies you selected in the planning phase. This goes on to pay a lot of dividends in the future when you’re organizing and maintaining your software.

Build a schedule and follow it

Time management is of the essence when building out side-projects. If this is your first time doing it - make sure the time you invest in it is bounded and there are clear milestones. A project without an ending goal is not something you want to pursue at starts. Execution builds happiness and increases morale. The better you plan your problem into short achievable goals - the higher is your chances of seeing it through. Milestones should be short and the time you spend on each should continue to increase gradually. Shorter milestones at the start will give you the necessary endorphins to chug along. If you find yourself missing a target - update your deadline and note down the reason. This is important when you retrospect and improve upon the process.

Final thoughts

Take breaks in between. This will help you stay motivated and not feel the burnout. Discuss your approach with friends and ask for feedback early on. This will help you build empathy for your users and improve your project. Hopefully, this helps you - so far things are looking good for me. The next few posts are going to be about swift and some opinions of mine around a few tools I’ve been using in the past few weeks.