Robust non-functional requirements have a fundamental part to play in boosting the performance of IT services. Sadly but true, too many organizations ignore the importance of performance requirements and focus their efforts entirely on functional needs. After deployment on production, they realize shortcomings when new business applications do not fulfill customers' user experience requirements.
We built the wrong product. We are often tight in our features and oversee how our customers will use the end products. The best parts are worth nothing if they do not match a consumer's performance expectations. A slow but outstanding feature won't make your customer happy. It's simply the wrong product.
We waste our test budget. From an economic standpoint, skipping the entire performance test is better than spending days implementing tests based on vague requirements. Let's imagine that according to your NFRs, 300 concurrent users will use a system, and you validate the performance of these services by simulating 30,000 users.
We frustrate our customers. Research has shown that customers are more likely to return after they experience an outage than after performance slowdowns. Slow-loading applications destroy your reputation as a trustworthy provider. Whether you are developing systems for your employees or external customers, they will abandon using your services if performance is not within their expectations.
We spend all our time on firefighting. Nobody realized that performance was neglected during the whole software development phase. Several hours after the deployment of your brand new system on production, severe issues occur. The operational team returns to their default - let's restart procedure - and restart all services. The same trial-and-error scenario continues for a couple of hours. Business starts their escalation to IT management, and the hunt for the responsible engineer is on its way. Such situations are a daily business in many organizations. Their problem started on day one with neglected NFRs, but it will take them several times more to fix it in the firefighting mode.
A better way to avoid all the mentioned nightmares is
Create meaningful and correct performance requirements
Share your performance requirements with developers
Validate performance requirements during testing
Make performance a continuous effort
Keep up the great work! Happy Performance Engineering!