This website introduces the AZ Problem: a generalization of the XY Problem. To wit, if we agree that the XY Problem is a problem, than the AZ Problem is a metaproblem. And while the XY Problem is often technical, the AZ Problem is procedural.
The AZ Problem is when business requirements are misunderstood or decontextualized. These requirements end up being the root cause of brittle, ill-suited, or frivolous features. An AZ Problem will often give rise to several XY Problems. Some telltale signs of an AZ Problem waiting to happen:
If you're wondering why the problem is much harder than it ought to be, we only need to consider the pseudocode for sending emails.
if day_of_month is 1: send_email()
if day_of_month is 31 and month in [ 'jan', 'march', 'may', 'july', 'aug', 'oct', 'dec' ]: send_email() if day_of_month is 30 and month in [ 'apr', 'jun', 'sep', 'nov' ]: send_email() if day_of_month is 28 and month in [ 'feb' ] and not leap_year: send_email() if day_of_month is 29 and month in [ 'feb' ] and leap_year: send_email()
Obviously not only is the latter more time-consuming to write, it's more bug-prone and more dangerous to deploy. The developers could have avoided releasing this code — instead opting for the much more straightforward version — had they known that the customer was indifferent to the exact day of the month when the email should be sent.