Enterprise software is bad because the people that takes decisions and the people that're going to actually use the program are different and in many ways they have opposite interests.
If any of you are considering building your own enterprisey-ish system, just beware of what extensibility points you provide your customer. Once you provide an extensibility point, you're responsible to maintain it as-is, and unable to change that piece of your product. Provide extension points to every piece of your product, and you've completely frozen its architecture.
This helps explain why new products like Wave are so much better than established enterprise products, and why enterprise software ends up the way it does.
The real problem is that once you get past very common sorts of things (e-mail, IM, word processing) the needs of different customers start to become different enough that building a single product with no extensibility/customizability becomes incredibly difficult. For example, say you created a point of sale app: would that really be suitable for video rental places and for fast food franchises out of the box? No chance. If you don't make it extensible, you're guaranteeing the software won't be fit for the very, very specific purpose it needs to be put to. If you do make it extensible . . . well, writing extensible software is about 10x harder than writing non-extensible software, and as you say it leads to architecture lock-in that makes it hard to innovate in the future. Plus, the group doing the extensing is probably either in-house IT or outside consultants, neither of which are really going to have the vision/skills/motivation to make something with a truly great user experience. So by making the software extensible, you're guaranteeing it's not going to be highly polished and that progress on it will be much slower. But if you don't do that, you're restricted to incredibly small niche markets where people do things similarly enough that you don't need any extensibility (i.e. your market might be about 10 potential customers). And even then, you have to worry about integration with a gazillion other purpose-built systems, which can still make the user experience suck if they have to switch between 10 different apps, even if one of them is really, really good.
The "badness" of enterprise software is something that I've recently been brainstorming a lot about.
I think there are two fundamental reasons for the "badness" of enterprise software.
1) Too many cooks spoil the broth. Most enterprise software packages cater to be everything to everyone. Most absolutely great products are the vision of a small team (see: most of apple products, OS X, iPod, etc. in other marketplaces: the dyson vacuum, amazon, zappos, etc.)
Unfortunately, some of the worst products are also the result of a small team. (apple hi-fi, apple tv, newton) It's funny how when these products fail, pundits blame it on their inability to listen to the marketplace; however, when they succeed, pundits say that "they stuck with their convictions to make a winning product".
It's simply safer for big companies to develop a product that's "everything for everybody". Windows, SAP, etc., can push these products through b/c they have an awesome salesforce. It's amazing to me how easy it is for big companies to sell inferior products, simply because of their existing mindshare. If it's one thing big companies know how to do, it's leverage this.
Additionally, developer hours are expensive. It's easier to make a profit by "customizing" a product to a user (which you can bill for), rather than create a whole new product (this product doesn't exist yet, but we can make it and maybe they'll buy it vs. "oh yeah, our product can already do that, we just need to tweak it to your needs")
As a startup, it's easy to fail developing "everything for everybody". Actually, since you're small and the big players are really big, the odds are stacked against you- you're almost guaranteed to fail.
I feel like the only way to succeed is if you aim high- push for the real innovation. Throw out everything, and re-think everything from the ground up. These ideas will probably also fail- for every iPod, there's an Apple TV. For every google search, there's a google youtube (which is very neat, but doesn't make any money).
Still, I feel like this model is the best opportunity at creating something revolutionary, instead of being just another ho-hum also ran.
The only two startup companies that I've seen attack the enterprise market really well are 37 Signals and Fog Creek. For most of their products, they threw out everything and started from scratch- they created their vision. They've both been wildy successful, but even with this approach, they have some mediocre products (CityDesk, for example).
Basically he says Google innovates better: not because it has lots of engineers, but because it allows (encourages) them to innovate without worrying about competing with existing inhouse software:
“There's a very good reason that Google innovated Wave, and not, for example, IBM. Google has no incumbent enterprise products to which it must pay obeisance."
And, yes, MS, Oracle, IBM do have legacy enterprise software market share to protect.
There's a very good reason that Google innovated Wave...Google has no incumbent enterprise products to which it must pay obeisance.
Non-software companies should heed the lesson: No obeisance to software. Big companies should have protocols and standards, which can act as a backplane for multiple applications. Competition will yield better applications.
A few things left out of this still-good article, which take the blame off Enterprise Software Companies (somewhat):
1. Google runs its own servers, and has been quietly building a cloud. ESCs have traditionally installed their systems on corporate networks by necessity. It would probably not be easy for Google to offer 'Wave in a Box' and stick on shelves at Office Depot, or come in, install it, and then walk away. If I had suggested to a corporate client in the 90s that they put their mission-critical enterprise software on an IBM or MS server somewhere in Montana they'd have asked what I was smoking.
My current non-tech boss still wants everything emailed as a Word document because he 'owns' MS office and the hardware it sits on. He simply doesn't get the concept of Google Docs and is hostile to the idea of not knowing 'where his files are'. Because it's free, in his mind that means it lacks value.
2. Enterprises are about work. Wave is innovative, but as with many other net things, 3rd party innovation will play a key role - and the 3rd party innovation comes from people playing with freely accessible tools, and re-purposing them in unforeseen ways. Now if you work at MegaCorp and you've just installed Softosaurus across your enterprise, with all the huge deployment and training costs, the last thing you are going to do is say 'play around with it - it's OK if it breaks, as long as it does so in an interesting way'.
If you find a way to set up Notes such that it allows you to play Tetris, this is more likely to get you fired than to earn you a personal espresso machine and a pat on the back. Innovation within the enterprise is disruptive of the enterprise's goals, and looked on with extreme suspicion. When I was still working for multinationals, I got disciplined more than once for over-customising my workstation because my increase in productivity came at the expense of the standard build...
3. and violating the standard build is an intensely political act, because it implies that someone in a decision making role was wrong. This is client-side politics: deviating from the decisions of the IT strategists is looked on as hostility to their goals, and thus towards those of the organization. Of course, when I was in tech support I regularly moaned about users who wouldn't do what was good for them, so I'm guilty too.
The bottom line is that enterprise clients do not reward experimentation or innovation until they see the resulting productivity elsewhere. Curiosity is not a valuable trait, what they want is focus and diligence. You can't really blame enterprise suppliers for choosing to cater to this primary demand of their customers.
I think the fact that Google allowed a very small core team to design and develop the application has more to do with innovation than their lack of enterprise software influencing the final product.
Innovation seems to stem more from the vision of a individual (or brothers, in this case) than from the "design by committee" approach which seems to be adopted at enterprise software companies.
I don't have time to wade through all the text here right now, but in my experience, enterprise software fails because/when politics and politicians control the product. The politicians may wear different guises -- Senior this-and-that or whatever -- but they achieved and hold their positions through politics. Just because it's corporate politics instead of public politics, doesn't make the political aspect less valid.
Politically led projects often end up as an example of "designed (and implemented) by committee". To add to the trouble, committee membership is often restricted and distorted. The effective "committee" does not even have a balanced representation of the interested parties.
I realize this sounds a bit vague, but I find it is a key/controlling factor in such environments. Your foremost problems are not technical, they are political. And before I sound too judgmental, it's apparent to me that it is simply a part of human nature.
If such a system is getting in your way, sometimes the only solution is to not play its game. Sounds like that's what happened, here. In Google's case, they could afford to do so, and have the moxie to push the result.
A little old but relevant:
http://www.jwz.org/doc/groupware.html