[under construction]
These are common patterns of reasons why technical workers can get very frustrated.
- Hit-and-run spaghetti - A prior technician/developer left you with a big ball of tangled yarn. You do your best to work with it, but it's still a tangle and there is no short-term fix. However, users and managers don't know this situation, and thus you get the blame for the problems it generates.
- Ignorant but willful users/managers - Users and/or managers may not know a lot about technology, but often have unrealistic expectations or incompatible/illogical/conflicting goals because they are "sure" they know what they are talking about based on their limited experience and don't want to listen to you and/or techies. (See JustMakeItRight.)
- Sales Job Afterbirth - Slick sales-people come in and show a fancy-dancy application with cutesy bells and whistles, and suddenly everybody wants the same thing, not understanding the maintenance or overhead some of those features cause.
- Rush-Job Cruft Buildup - Because so many projects end up being rushed into production, they grow into a big pile of maintenance headaches. You try to push back by requiring more planning or realistic schedules, but are out-voted and so the short-term crap keeps flooding into the system. Then you spend all your time putting out fires instead of doing meaningful work.
- Nap Killers - You are called into the office on Sunday afternoon to repair something that shouldn't have broke if built right (see above). Even worse is 2am calls.
- Obsessive Resource Wasters - Some users/managers obsess on some feature or characteristic that is "very important" to them, but nobody really cares about much compared to other issues.