Developers build systems to solve problems. Business problems. In the planning of an application, we are, unfortunately, not immune to the forces of economics. When we consider a budget and a timeline, our primary concern is feasibility. That is, can we set expectations such that we will deliver what we and the client have agreed on?
Requirements discovery is hard, and it’s unrealistic to expect all requirements to be clear at the outset of a project. New information will be unearthed and new stakeholders will contribute their viewpoint down the line. In fact, it’s likely that the project you’ve scoped originally will change materially by the time you deliver it.