neesh Inc.
Software ArchitectureDisciplineProduct Strategy

Why Version Two Gets Over-Built

Once a first version works, the plan for version two grows to fit every future anyone can imagine. Three questions keep it to what users need now, and it ships sooner.

Once a first version works, the plan for version two grows to fit every future anyone can imagine. Build it for the users you have, and it ships sooner.


Fred Brooks named this the second-system effect in The Mythical Man-Month (1975): after a successful first system, the team sets out to “do it right this time” and builds for futures that may never arrive. A firm replacing a system that has run for years meets the same pull.

Chronologiq is an AI product our founder, Shan Peiris, built before neesh Inc. The example below is from it, and the numbers are his rather than a client’s.

Chronologiq’s first version shipped in weeks with fourteen service classes, each doing one thing. The plan for version two had 47. It shipped sooner, with 22.

What the Plan Grew Into

The list grew from engineering ambition rather than from user requests. “While we’re in there” became the most expensive phrase in the project.

Shared base for all 22 services
One set of error types (9 classes)
Input checks on every request
Cached data on every screen
Charge credits only after success
Statistics before AI (6 algorithms)
Three checks per AI response
Service wiring framework
Plug-ins for custom data sources
Pipeline builder screen
Live admin dashboard
Per-customer workspaces
Custom themes per workspace
Outbound hooks to other systems
A second API layer
Full timeline history
AI pipeline as its own service
Drag-and-drop timeline editor
Offline editing with sync
Custom roles and permissions
20 planned → 7 shipped

Of twenty items, seven shipped. The thirteen struck out were reasonable ideas that nobody had asked for yet.


Three Questions Before Anything Goes In

Every item passed a technical review. Only seven passed these three questions.


What Version Two Became

Everything that shipped was there because users hit a wall without it, or because it made the next three features faster to build.

Version 1: 14 services, built in weeks
A flat structure. Errors handled differently in every route. No input checks. Database calls everywhere. Credits taken before the AI ran. AI responses taken as given.
Version 2: 22 services, shipped sooner
A shared base for every service. One set of error types. Input checked on every endpoint. Every threshold in one place. Credits charged after the work succeeds. Three checks on each AI response, with a fallback.

Each of the eight new services removed a category of bugs. Three of them:

  • CreditChargeService: no double charges, and no charges for work that failed
  • SummarizationService: no long documents overflowing the AI model’s input limit
  • LLMParsingService: one copy of the prompt logic instead of one per route

Where the Time Went

Features that shipped
Features that shipped 62%
Researching features later cut 12%
Deciding what to cut 14%
Reworking version 1 patterns 12%

Illustrative: Chronologiq version two. Not a time-tracking record.

About a seventh of the time went to deciding what not to build, and it was the most productive time on the project: every feature left out is maintenance nobody carries.


Applying It to Your Rebuild

The effect comes from good engineers deciding ambitiously at the wrong time, and the cure is sequence. Build what users need now, what makes the next piece faster, and what cannot be added later; everything else goes on a list with a date to look at it again. Chronologiq’s thirteen cut features are on that list, waiting for someone to need them.

What is on your rebuild’s wish list that no user has asked for?

Book Free Assessment