The reason most side projects never ship has nothing to do with talent or time. It is scope. The idea quietly grows in the dark, feature by feature, until it is too big to ever finish in the hours a real life leaves you. Scope cutting on side projects is the skill that separates the people with a graveyard of half-built repos from the people who actually put things in front of users, and almost nobody talks about it as a skill you train.
Why side-project scope balloons in the first place
Side projects have no client and no deadline, which sounds like freedom and is actually the trap. With nothing pushing back, the idea expands to fill all available imagination. You think of a feature, it sounds cool, there is no product manager to say no, so it goes on the pile. Multiply that by a few months of excited evenings and you have designed something a funded team of ten could not ship.
The other driver is that adding features is fun and finishing is not. Dreaming up a new mode or a slick settings panel feels like progress and costs nothing emotionally. Wiring up error states and writing the deploy script is grindy. So the natural drift of any unmanaged side project is toward more dreaming and less shipping, until it stalls.
Cut to a version that fits one sitting of attention
My first move on any side project now is to define the smallest version that is still worth existing. Not the version I want, the version I can actually finish and show someone. For a game that might be one mechanic and one screen. For a tool it might be one button that does one useful thing. Everything beyond that is a maybe-later, written on a list and explicitly out of the first release.
This hurts. You will feel like you are betraying the vision. You are not. A shipped tiny version teaches you more than a perfect unshipped vision, and it gives you something real to build the rest on if it turns out anyone cares. The grand version is allowed to exist, just not in version one.
Questions that force the cut
When I catch a project getting heavy, I run it through a few blunt questions:
- If I could only ship one feature, which one is the actual reason this project exists
- What can I fake or hardcode now and build properly only if people use it
- Which of these features am I adding because it is fun to build rather than because it is needed
- What would I cut if I had to ship this Friday no matter what
That last question is the sharpest. The honest answer to what would I cut to ship Friday is usually the same list of things you should cut anyway. The Friday deadline just gives you permission to admit it.
Faking it is a legitimate strategy
A lot of scope hides inside features that look essential but are not, yet. You do not need real accounts, you can hardcode one user. You do not need a settings system, you can pick sensible defaults. You do not need an admin panel, you can edit a config file. Each of these is hours or days of work you can defer until something proves the project deserves it.
This is the same instinct that makes good engineers good in production: build the thing that is needed now, not the thing that might be needed at scale you do not have. On a side project the discipline is even more important, because you are the only one enforcing it and the temptation to gold-plate is unchecked.
Cutting is not failure, it is the craft
There is a feeling that cutting scope is settling, that the real engineers build the full ambitious thing. I think the opposite is true. Anyone can pile features onto a wishlist. The harder and rarer skill is looking at a sprawling idea and finding the small sharp core that is actually worth shipping, then having the nerve to throw the rest overboard.
Game jams trained this into me harder than anything, because a jam is pure forced scope cutting. You start with a grand idea, reality hits by hour six, and the rest of the weekend is one continuous act of cutting until what remains is small enough to finish. The people who win jams are not the ones with the biggest ideas, they are the ones who cut best and shipped a small thing that works.
Finish something, then decide
My whole approach now is to cut hard, ship the tiny version, and only then decide whether to keep going. Most of the time the answer is no, and that is a clean, cheap outcome instead of a months-long slow death. Sometimes the answer is yes, and now you are building on something real that people have touched. Either way you finished, which is the one habit that compounds across an entire career of side projects.
Building something where this matters?
I am open to senior full-stack, Web3, or AI engineering roles, fully remote and any timezone. If the hard part of your product is fighting you, that is the work I like.
Get in touch →