Functional frugality is a design pattern for avoiding features that provide no real value to end users. It starts during design: select only the capabilities users genuinely need, rather than building every requested possibility. section 8.4.1
Use the three Us to test whether a feature deserves to exist:
- Useful: answers a real end-user need or provides a clear benefit. section 8.4.1
- Usable: remains simple enough to understand and operate, including for less technically confident users. section 8.4.1
- Used: demonstrates practical value after release through observed usage. section 8.4.1
A feature that gathers dust
A team can spend countless hours building a client-requested feature only to discover that users never touch it. Functional frugality questions the feature before development, then uses actual usage after release to confirm its value. Removing unused or low-value functionality simplifies the interface and keeps the codebase smaller. section 8.4.1
The same discipline applies to product technology. An overengineered architecture built around fashionable frameworks can add code, dependencies, and components without meeting a real need. That extra weight consumes storage, bandwidth, CPU, and energy; it also increases maintenance cost and may expand the attack surface. section 8.4.1
Frugality is not blind optimization. Prefer the smallest solution that delivers genuine value, while preserving clarity and usability. Treat a feature as justified only when it is useful, usable, and actually used. section 8.4.1 section 8.5.2
