Make software by describing it

When to Stop Adding Features to a Side Project

Stop adding features when the tool does the one job you built it for, passes your tests and is safe to publish. With an AI assistant, each new feature costs only a sentence to request, so projects tend to grow past the point of usefulness. The fix is to decide what done means before you start, and to treat every new idea as a candidate for the next version.

A smaller tool that you finish and use beats a larger one that never ships.

Why features multiply

When adding a feature takes a minute, the natural thing is to keep going. Each addition feels small. But every feature adds code to test, behavior to maintain and ways for things to interact badly. After ten small additions, the tool may be harder to use and harder to fix than the simple version you started with.

Assistants contribute to the problem because they often propose extras: “Would you like me to add dark mode, an export option and animations?” Accepting out of politeness is how projects balloon.

Define done before you start

Write a short statement of what the tool must do, in a form you can check. For example:

When every line is true, the tool is done for now. Anything not on the list is optional.

Keep the statement at the top of your project log. When you feel pulled toward a new feature, read it and ask whether the feature supports the job or merely decorates it.

A test for new ideas

Before you add something, ask four questions:

  1. Will I or someone I know use it this month? If not, it is a guess.
  2. Does it fix a problem I have actually seen? Real annoyances beat imagined needs.
  3. How will I test it? If you cannot say, it is too vague.
  4. What might it break? Features that touch saving or calculations deserve extra care.

If an idea fails these tests, write it in a “later” list and move on. Many ideas look less appealing a week later, and the list costs nothing to keep.

Use the tool before you extend it

Real use shows what matters. Publish the simple version, use it yourself for a week, and note every moment of friction. You will find that some of your planned features never come up, and that others you never imagined become obvious.

If other people use it, ask one or two what they wish it did. Do not take every request, but look for the same one from more than one person.

Signs you are overbuilding

Notice these warnings:

If you recognize several, pause. Save a version, restore the simpler one if needed, and publish what you have.

Finishing is a skill

Finishing has its own steps: run the pre-launch checklist, publish, write the address and date in your log and tell someone about it. These steps feel less exciting than building, which is part of why people skip them. Make them the final milestone of each project, and treat them as part of the work.

After publishing, give the project a rest. Use it, collect notes and decide later whether a second version is warranted. Version two should be planned like a new small project, with its own definition of done.

When more features are right

Sometimes growth is justified. If the tool has regular users and they ask for the same thing repeatedly, or if the new feature removes a clear pain point, go ahead. The method does not change: define the feature, build it separately, test it and retest older behavior, and publish a new version. The difference is that the choice comes from evidence.

Also consider splitting. A tool that tries to do three jobs may be better as three small tools, each easy to understand and maintain.

Set a time box

A practical trick is a time box. Decide at the start that the first version gets, for example, two evenings. When time is up, you publish what works and list what is left. Deadlines force choices, and choices keep the project small.

If you reach the end and the core job is not done, do not extend automatically. Ask why. Maybe the scope was too large, a feature was harder than expected, or the idea needs rethinking. Cutting a feature is a legitimate answer. So is shelving the project for a while and writing down what you learned. Both beat drifting through weeks of small additions with no finish line.

Share your done statement with someone else if you can. Saying out loud that the project is finished when it does these four things makes it harder to quietly move the goalposts. A friend can also ask the useful question when you propose another addition: does the tool need that, or do you just enjoy building it? Both answers are fine, but you should know which one you are giving.

Next steps

Write your done statement for the project in front of you and put it at the top of your log. Move every unplanned idea to a “later” list. If the project already meets the statement, publish it this week. Then use it for seven days and review the later list with fresh eyes, picking at most one item for the next version.