The blame lies with LAZY system designers and LAZY developers.
Since we're spreading blame, then don't forget the lazy QA department for not testing that, and the lazy BA for not writing sufficient specs, or the data architect who thinks that a CustomerID should only be an INT.
I believe that the root of these issues arises from poor specs that the developer and QA consume to produce code / unit tests that ultimately fail in the end product. I've worked for many companies throughout my career and almost every time this issue occurs it can be pointed to the BA producing the original spec. Most times the BA is over worked / inexperienced and management isn't interested in spending more time on the front of projects to get things done right, or the end users don't want to invest time in working with the BA to get things right. I've seen it all.
Lots of blame to go around, just don't pile it on the developers.
Our version 2.0 system includes a small amount of absorbent material woven into teh seat bottom that can hold 50X it's weight in liquid.
We've moved onto version 2.1 where the absorbent material was replaced with a catheter.
In the family plot?
More like in the in-laws plot.
In every non-trivial program there is at least one bug.