How to sometimes complete your side projects

This blog post is a response to How to never complete anything by Ewan Valentine. I suggest that you head over and read his blog post first. 🙂

You are not alone

When I first read that blog post, the first thought that crossed my mind was that “Wow, this sounds utterly familiar”. Almost every developer that I know has experienced this at some stage in their career. Honestly, the name of my blog “Frontend Mayhem” is also rooted in this problem. With new frameworks popping up left & right, it’s easy to get distracted unless you treat your side projects with the same level of discipline as your code base at work.

Not all projects are equal

In my opinion, your side projects tend to fall into one of the three categories:

  1. Educational
  2. Product Oriented
  3. Best of both worlds

Educational

Learn

These side projects are purely meant for learning. Without these, your software development career may become stagnant. It’s important to keep with the new technologies in order make yourself more marketable and unlock new possibilities as you progress in your career.

What Ewan mentioned in his blog post might actually be the perfect way to go about educational side projects. In my opinion, educational side projects don’t need “completion”. The goal is to try something new, step out of our comfort zone & explore unchartered territories. The goal, however, isn’t to master this new tech or to ship something.

These side projects often involve a lot of research that’s accompanied by coding a throwaway side project to see your newfound knowledge in effect.

You need code, not a product

Product Oriented

You’ve identified a pain point of a user base & want to offer an elegant solution. In most cases, your user base doesn’t care how you get to the end goal.

This is where Ewan wants to get to. In my very first blog post, I wrote about using a tool that you have mastery in when facing a situation like this. If you want to get this project out of the door as soon as possible, you want to work in the best way possible. If that means not using the latest shiny tech that you know nothing about then so be it.

Execution matters more than trendiness.

Best of both worlds

Party

These side projects include both taking an education approach while also having the end goal of shipping a product.

These side projects are the most exciting but also get abandoned the most. It appears this is where Ewan has spent most of his time. Most developers want to learn something new but also have something meaningful to show for their labor. You must set realistic expectations before pursuing this option.

Expect delays & embrace the struggle - You will be learning on the job, and that comes with a cost. If you can stay disciplined & focused on your end goal, these will help you level up faster than anything else.

Expect to hit the wall – We tend to get very excited & motivated about new things. We start a new project with tons of enthusiasm. Over time, you will likely reach a point where your interest & motivation fizzles out. This is the stage where projects get abandoned. You just aren’t excited by the newness of the tech you’re working with, and there is something far brighter & more promising that you want to pursue.

I have abandoned several side projects at this stage. I’ve done this more times that I’d like to admit. It’s important to persevere through this phase. You’ll find that the other side of the wall has a burst of energy. Once you get over the wall, the excitement & motivation comes back as things start to fall into place.

How do you get over the wall?

Discipline, Structure, Schedule

If you are serious about completing your project, you want to set a schedule. Set aside a chunk of your time to work on your side project daily. Rain or shine, no matter how you feel, you will work on your project. When you hit that wall, this structure will help you push through & reach the other side.

I have had this structure in place for every almost every side project I’ve completed. Without this, I end up giving up once the excitement dies down.

This doesn’t just apply to programming. This approach helps with other aspects of life. I’ve always wanted to read more books. The problem? I’ll read the first few chapter of a book then hit the wall. I’ve spent over a year trying to finish this one book.

I start, hit the wall, stop. Repeat.

A couple of weeks ago I decided that no matter what happens I’ll spend 30 mins daily towards reading this book. Guess what? I am on the last chapter at the time of writing this blog post. This’ll be the first book I finish in a long time. Feels great!

Easier said than done

I’d be the first to admit that it’s easy to offer advice than actually doing it. I’ve abandoned more side projects than I’ve finished. That is something I’d like to change. But as software developers, we must help each other reach our goals.

Ewan has received tons of awesome advice from the entire community!

Have an opinion about this post? Feel free to leave a comment or get in touch with me on twitter.