When deciding how a user's task is to be supported in our software, we often look at possible design solutions and select one that's best for the product and the user. As the project deadline approaches, however, we might choose to dismiss some features outright. In this column, Jeff Patton suggests we try keeping more features by adjusting their scale.
"Based on the number of features we've completed over the past couple of iterations, we just don't have enough time to finish all this work," the project manager says nervously to the project sponsor. "Can we talk about what features you'd like to cut?"
The sponsor groans. "Cut more features! We've already been through this. We've cut to the bone already. We absolutely need all the features in this release!"
Does this situation sound familiar? Maybe a little too familiar? The next time you find yourself in a situation where scope cutting seems like the only way to deliver on time, consider looking for opportunities to rescale. What do I mean by rescale?
I often see software requirements conveyed in terms of solutions to problems. By that, I mean a specific bundle of information including user interface design, expected application behavior, some business rules, etc. Together, those things make up the requirements for a feature. But behind that description of the software solution is a person with a problem—an end-user with a task or series of tasks to perform to accomplish some goal.
To illustrate my point, let's take a very simple task having nothing to do with software, like "swing from tree," which may have many possible solutions.
Illustration courtesy of ThoughtWorks