Imaginary Problems Are the Root of Bad Software
The problem is that you thought you requested a core product with a couple of extra features, if they were easy enough to implement. Meanwhile, the dev team heard something else. They heard about some exciting challenges they could tackle… and a slew of boring, basic features they couldn’t be bothered to test properly or care about.
Even worse, you didn’t communicate directly with the devs — you communicated through a game of Telephone. You spoke to a sales guy, who held a meeting with some middle management chap, who wrote some business specs and gave those to a PM, who wrote some technical specs and gave those to a team lead or architect, who then, at last, began to design the product with his team — each one of them putting a bit of his own twist on it along the way.