There's something scary growing at the intersection of feature creep, technical debt, and your pet idea: snowball projects. You know the kind--the ones that make a mess of your workflow, frustrate your team, and confuse customers.
Writing on Medium, NetOutlet CTO Nico Hämäläinen walks us through how the beautiful snowflake of an idea can turn into a cabin-crushing snowball project. While he's speaking from a web development perspective, the blizzard of complexities will be familiar to anyone who's undertaken anything.
It begins innocently enough, he observes. Market research has been done, your sysadmin's adding packages to the server, and designers are tinkering with pixels. You start building the project in earnest. And then the snowballing begins.
"You might bump into a problem relating to one of the features," Hämäläinen writes, "which requires the help of another feature, but that feature is somewhere inaccessible from that first feature."
This leaves you with a tough choice. You can either reconsider the whole structure of the application, or you can settle for a workaround that lets the feature operate but doesn't fit into the original structure of the project. And then you add a few more workarounds. And more. And more.
"Your project has turned from a small, beautiful snowflake, into a huge snowball rolling down a mountain destroying everything in its way, " Hämäläinen writes. "I can tell you that it’s pretty hard to stop that ball, or even (change) its course a bit so it wouldn’t hit a skier on the way."
You can do a few things:
Forget about your ideas. Or, more precisely, when you have an idea for an improvement, write it down and forget about it. If you keep getting the signal improve in the same way, then the more likely the "improvement" actually needed.
Pull a 37Signals and have the discretion to say no to user requests for features.
If you're constantly putting out fires (and building workarounds), build a better framework.
[Image: Flickr user ff137]