Move Your Goalposts

I have a friend who is constantly exploring the world of programming. He’s created iOS games, iOS non-games, visual projects with Processing, and music. Sometimes those projects become something and sometimes they don’t, but they start small. He’s not trying to make something huge. I’ve always envied that because when I look at my project ideas, I think “Well, that would take a month to get to something that I feel comfortable calling Officially Finished.”

That was before I read Darius Kazemi’s Thoughts on small projects. One of Darius’ key lessons is that a project is “finished” whenever you want it to be:

When I start building something, I often want it to do things A, B, C, and D. But if I’ve worked on it for a little while and it does A and B, and it’s pretty good, I immediately stop doing any creative work on it, and I switch into “ship it” mode.

In other words: if you don’t like where the goal is, move the goalposts.

For example, I thought Honorifics would have many more features. But I built a little at a time, and when it got boring, I just changed my goals. It’s crazy, but I still feel guilty for not “finishing” the project. I should have just powered through the boring parts, right? But that kind of thinking is toxic. Once a side project stops being interesting enough to power through the boring parts, stop.

I recently built a Chrome extension. It doesn’t do much, and parts of it were a struggle, but I was learning and engaged so I powered through. Then I discovered that the “main” feature of the app would take a lot more time than I thought, and wouldn’t be fun at all. So I moved the goalposts and declared the project done. I learned a lot about building Chrome extensions even without doing that last boring 10%.

Start small. If you don’t like what you’re doing, stop. Move on to the next project.