I previously discussed software feature scope in Quality, time, scope: pick any two.

scope

skōp

noun: scope; plural noun: scopes

the extent of the area or subject matter that something deals with or to which it is relevant.

“we widened the scope of our investigation”

Please keep in mind that we are addressing scope in a narrow sense of developing features for software distributed through the magical powers of the “zero additional” cost internet (after the recurring costs of connectivity, bandwidth, and access device).

More specifically, the software team is dreaming up of developing a new “killer” feature to an existing product, and that the users of the software product will love and pay for it.

Relaxing assumptions

Users do not understand the new feature, how it works, what will change as and when they use the new feature. They also only vaguely understand their problem, often in the context of a specific narrow workflow that they use.

The software team attempting to identify this gap and also attempting to solve it should be humble, and be ready to change their approach if users have a hard time using it effectively across different contexts.

Since the marginal cost of incremental delivery of software can essentially be zero (big assumption, see the section below), software teams can and should decompose their feature development into increasingly small pieces of functionality, and deliver it to users, seeking both active (opinions) and passive (usage metrics) feedback.

This helps validate the value generated for users.

Tightening constraints

It is important to choose users of the new software feature delivery increment very carefully. If we do not pay attention to this, we can get misled by user preference bias.

This helps maximize applicability of the new feature to a broad swathe of users.

Caution: managing iteration costs

Even for internet software, the discussion on relaxing assumptions and tightening constraints is rendered academic and ineffective if the cost of iterating (modifying, building, testing, delivering, monitoring, alerting, troubleshooting) of the software solution remains high.

The software team should have a well thought out, actively maintained continuous integration (CI) and continuous deployment (CD) process for their software delivery.