As counterintuitive as it may sound, one of the purposes of writing specs is to cause pain—or rather, to make poorly designed code painful. By surfacing the pain of a design problem early, specs allow you to fix it while it’s cheap and easy to do so.

