Smaller, Faster, Better.
Go Small, Or Go Home
The infamous “developer side project”. We’ve all had them. Some, more than others. An idea pops into your head. The excitement is palpable. You dive in, spending numerous nights and weekends working on it. Then, one day, realizing you haven’t touched it in weeks, the brainstorming cycle starts anew.
A few days ago an indie dev posted something to this effect:
It was impossible to resist laughing…because it’s TRUE! Some of us have a multitude of project ideas floating around the gray matter that simply must be done. Or…perhaps not.
Towards the end of 2021 I found myself drawing up plans to develop a 2D game engine. Full on, no holds barred. Editor, client runtime, server runtime, scripting system, and all the other table-stakes features that come along with a modern engine. For the first few months, code was flowing on the regular. But here’s the problem: I felt like there was some kind of deadline simply due to the volume of work that needed (needed?) to be done. The project turned into a point of stress, rather than a point of creativity.
Side projects are useful for many reasons:
- Creative outlet to pursue ideas that you simply can’t in your day-job
- Possible entrepreneurial venture
- Sandbox environment to learn new skills
- Helping someone else with their project
- Develop a solution for something in your own life (home automation, personal time tracking, whatever…)
For some items in that list (learning new skills), crossing the finish line with a completed project may not be the goal, or important to you. For others, “shipping” something is actually part of that process.
Getting to Done
Getting “done” (whatever that definition is for you) is important. It carries with it a sense of pride. The feeling of successfully completing a project is also part of an important feedback loop. The more projects you complete, the more you’ll be inclined to properly scope and accomplish your goals. Finishing is just as important as implementing.
Pulling the rip-cord
Let’s not fantasize that every project will reach a completed state. Sometimes, you’ve just got to abandon ship and cut your losses. That’s what I’m in the process of doing right now with the game engine project. After realizing it was a multi-year (going full speed, I might add) project that would leave me with little other precious time - it was time to call it quits. That doesn’t mean it was a complete failure. In fact, I’ll be taking a small part of that project (Hustle) and focusing on making it a bona-fide open source project.
Let’s not forget a little site I started called, Today I Learned. Thankfully, its structure will help keep projects right-sized and maximize the cycle of learning interesting new things.
Onward! 👨💻
~Zim