Dusting Off

October 29, 2020

Keeping up with side projects

A core stereotype of Software Engineers is their love of starting and quickly abandoning side projects, something I am absolutely guilty of (cyril.coffee as a classic example). Engineers love to build something new and exciting, and unsurprisingly we sometimes don’t want to deal with the step beyond unveiling. Once we deliver that first round of cool features, we want to move onto the next exciting thing rather than continuing to develop and refine something that’s already out there. Obviously in the last few months, there’s been a lot of time at home to think about and work on side projects, but I still find myself drifting away from them after the first few glorious coding sessions. I wanted to write a bit about why I think that happens, and how I’m trying to lower the amount of side projects that I allow to go softly into the night.

My latest attempt

Earlier this year with the release of VALORANT, I developed a website that served as a quick-reference guide for one of the characters. At that point in time, my team at work was leaning towards adopting Material-UI as a React component library. Given this, it seemed obvious to build the new site using MUI as heavily as possible. I had a great time developing the first run at the website, and ended up with a reasonable tool that is usable, helpful, and had a clear set of new features I could add on… and that’s as far as it got. Once I got outside of the fun of “let’s build a website with Material-UI” I lost steam completely. Looking back now, I realized that’s because I never really wanted to build a fully-featured website that I would manage forever… I just wanted to build something neat with Material-UI and leave it at that. I didn’t really recognize what my stopping point would be for the side project naturally, and that was my core failing. What I needed to do was set a stopping point and only continue if I felt really excited about what I was building, rather than setting a checkpoint with the assumption that I would continue to develop this project. Based around this experience, something I want to do is set better goals when I set out into the wilds of my next side project.

Setting proper goals

When starting a side project, I think it can be helpful to ask ourselves a series of questions to make sure we understand what we want to get out of our project.

  1. What am I trying to learn with this?
  2. Is learning the focus?
  3. What is my first stopping point?

I want to talk a little bit about these questions and how they inform our goals when we start a new side projects.

What am I trying to learn with this?

When I start a side project it’s almost always to learn something new. Whether that’s a new language, library, or technology, I’m usually going into a side project with the intent of adding something new to my toolbelt. Sometimes this is obvious to us, and other times it might take some thought. In the case of my most recent project, my core learning goal was to become familiar with Material-UI.

Is learning the focus?

What we define as a “side project” can have a lot of different meanings. While I’m often looking to build something so I can learn, sometimes people start a side project with the direct intent of bolstering their résumé, and others might be fully-focused on a business opportunity. Asking this question helps us understand when we’re going to lose steam. Once I felt that I was comfortable with Material-UI, I lost the drive to continue working on my most recent project. Learning was the focus for me, and I just hadn’t made that clear to myself.

What is my first stopping point?

Determining a stopping point is important because it’s a place for you to check in and reassess how you’re feeling about the side project in question. From there, we can decide on continuing the work with a new stopping point in mind, or accepting that the side project is complete and in a ‘finished’ state. Determining a stopping point has the added benefit of helping us avoid setting an unreasonable scope that stops us from getting anywhere in the first place. Your answer to the first two questions should inform what you answer here. If the point of your side project is résumé-building, then you’ll want a level of polish that matches that. In my case with my most recent project, learning was the core goal and that should’ve told me early on that my first stopping point was a passable webpage built in Material-UI.

Okay neat, what’s the point?

Well, who knows! I started off writing this for myself as somebody who has a closet full of half-finished side projects. Something I want to work on personally is my ability to set an end goal for a side project, complete that chunk of work, and move on knowing that I completed something. Beyond that, I want to become better at assessing the goals of my side projects. This website sat with no updates for over a year, and coming back to this and recognizing that it’s something I want to maintain has been fun. Moving forward I’ll be sure to answer these questions myself when I dive into a side project, and hopefully this provides something to think about for other engineers who find themselves out of steam halfway to something worth putting up on Github.