The points in the article are all valid.
Ideally one wants to design the back end data structure and programs to meet the needs. A great program and data design can quickly turn into a bad design when functionality changes and these are patched in fast.
I believe that a lot of large spec changes are preventable. The problem is finding good designers to pull out of the users the best possible design the first time. The notion that users know how to spec a system is just crazy. If they knew what they were doing they would not change their minds. We wind up paying enormous amounts of money to provide educational user experience in how to fail at designing systems.
Keep Up with TechRepublic