// TODO: write actual code

The Weekend Side Project Curse

2023-04-22 | Alex Kucherenko | 3 min read

I have a folder on my hard drive called "Projects." It contains forty-seven subdirectories. Three of them are finished. The rest are monuments to enthusiasm -- ambitious starts, creative sparks, and weekend afternoons spent setting up build tools for applications that never got built. Each project has a moment of conception I remember vividly and a moment of abandonment I can't pinpoint. They didn't die. They just stopped being worked on, which is the project equivalent of a cold case file.

The pattern is always the same. Friday evening: a brilliant idea strikes. This will be the one. A game engine in Rust, a markdown editor with AI integration, a budgeting app that actually works. Saturday morning: you set up the repository, choose the tech stack, configure linting, write a comprehensive README for a project that doesn't exist yet. Saturday afternoon: you build the core feature and it works. The dopamine hits. You're a genius. Sunday: you start on the second feature and realize the architecture you chose on Saturday doesn't support it. You'd need to refactor. Refactoring isn't fun. You open Twitter. Monday: back to your day job. The side project joins the graveyard.

The Real Problem

The real problem isn't lack of time or discipline. It's that starting a project and finishing a project require completely different skills, and developers are disproportionately good at starting. Starting is creative, exploratory, and full of possibilities. Finishing is administrative, tedious, and full of edge cases. Starting is choosing a color palette. Finishing is making sure the color palette works for colorblind users in dark mode on a 4K display with browser zoom set to 125%.

My game projects are the worst offenders. I've started at least five games and finished exactly one -- and that one only because it was for a game jam with a hard deadline. Without external pressure, every game reaches the 70% point where it's playable but not polished, functional but not fun, and the remaining 30% is pure slog: menu screens, save systems, sound effects, and that one collision detection bug that only happens when you approach an obstacle from the northeast at exactly 7.3 pixels per frame.

Making Peace

I've stopped feeling guilty about unfinished side projects. Each one taught me something. The Rust game engine taught me about memory management. The markdown editor taught me about text rendering. The budgeting app taught me that I don't actually want to track my spending, I just wanted to build a budgeting app. The journey was the destination, which is a cliche, but cliches become cliches because they're true enough to survive repetition.

Besides, folder forty-eight is looking really promising. It's a static site generator for a personal blog. I've set up the repository, chosen the tech stack, and written a comprehensive README. This time will be different. I can feel it.