I don't understand the difference between "normal" software and enterprise software. Even after reading these...


"Enterprise Software" on Wikipedia 
"Enterprise Software Is Sexy Again" on Techcrunch 
"The Great Enterprise Software Swindle" on Coding Horror


I can't really wrap my head around the real differences. Is there any difference at all between the two? Why do people say enterprise software sucks?

In short words, normal software would be the software made with individuals in mind, i.e. retail software or web applications targeting the general populace. Its success depends on how well it is received by users who in most part are offered a ready-made, 'standard issue' product. The development is an investment and the revenue comes from individual product or ad space sales.

On the other hand, enterprise software would be the software commissioned or developed internally by companies, either tailor-made from scratch or purchased from a third-party vendor and heavily customized for the company's business process.

The reason people say enterprise software sucks? I'd say there are three main reasons, heavily interconnected:


People who pay for it aren't the ones to use it - upper management / IT department makes the decisions. Ideally, they would consult the future users and make it imperative to adhere to what they have to say. The bad reputation comes from the cases where this is not so.
Systems like this are one-of-a-kind - retail software has to be well tested before putting it out on market, as the bugs may make it or break it in the view of its target users. Furthermore, it is used by dozens of people around the world on different machines, with different usage patterns, and so on, resulting in feedback useful for future releases. Enterprise software suffers from a small user base consisting mainly of people who have no choice but to use it regardless of user experience. As a result, less focus on user experience and less feedback to be gained from users (and often, no channel for such feedback when the work is being outsourced).
Companies who use the software are not software companies - they are using the software, it's critical for the business they are conducting, however it is secondary to their business objectives. As such, enterprise software will suffer from unreasonable deadlines, resources being under-allocated and being deemed 'good enough' while still being incomplete or under-tested.

