| This is a good question, and one that I've been thinking a lot about as well. I think the problem is that A) there's a LOT more people using computers now than ever before, and B) the entry point into "computing" has lowered, which means that users come to a piece of software with a wide range of expectations of both what it should do, and how it should do it, and C) the complexity matrix of the form factors that people expect to use software has also grown in size, and D) software grows in complexity in response to the needs of the users (B) and the devices it runs on (C) E) tack onto the above is that you really have to handle N+10 things nowadays to have a proper piece of software (ie. i10n, security, UX, performance, etc.) It's a bit of a cop out to just blame complexity, but it's almost impossible to have a small team write a (sufficiently complicated) program that does all the above, but companies want single-software solutions (runs on everything for everyone from new users to veterans) and users also expect it. So as a result, developers are overworked, users complain the software doesn't do what they expect (often for good reasons), and devs often end up resenting users because despite their best intentions, it's simply not possible (a lot of the time) to make something that satisfies everyone. |