howangduc

What selling taught me about scoping software

A quote is a promise about the future. Sales taught me to price uncertainty out loud instead of hiding it inside an estimate.

I sold before I built. That order matters, because it means I learned to write a number on a page and then live with it. An estimate is not a guess you revise later. It is a promise, and the client heard it as one.

The habit that carried over is simple: before I talk about how long something takes, I make the client say out loud what they want it to change. Not the feature. The change. More orders, fewer support messages, a shorter time from photo to live product page. If nobody can finish that sentence, the project is not ready to be scoped, and no amount of technical detail will rescue it.

Once the change is named, most of the feature list falls over on its own. A client asked me for a loyalty system. Points, tiers, a dashboard, the whole thing. What she actually wanted was for her top forty customers to reorder without being nagged. That is a saved cart, a reorder button, and one email. Two days instead of two months. I would not have found that by taking requirements; I found it by asking who she was thinking about when she asked for the feature.

The second habit is pricing uncertainty out loud. In sales you learn quickly that a client is not upset by risk, they are upset by surprise. So I split a quote into the part I have built before and the part I have not. The known part gets a fixed price. The unknown part gets a small paid discovery block with a real deliverable at the end: a working slice, not a document. Clients accept this almost every time, because it is the first honest thing anyone has told them about a build. Developers who refuse to do it end up eating the overrun themselves and calling the client unreasonable.

The third thing is less comfortable. Sales taught me that scope creep is usually a symptom of a weak close. When a client keeps adding, it is normally because they were never confident the original thing solved their problem, so they are buying insurance one feature at a time. The fix is not a stricter change-control process. The fix is going back and settling the question you skipped.

I still get scope wrong. But I get it wrong on the record now, in front of the person paying, which is a much cheaper way to be wrong.