Enterprise-quality. Enterprise-level. These days the word “Enterprise” has a lot of cachet, and it has nothing to do with the reputation of a certain starship, either.
Once upon a time, “enterprise solutions” were industrial-strength, scalable, highly reliable solutions for the largest organizations. Lately, though, “enterprise solutions” have, in my mind, come to mirror the worst features of large corporations, rather than the best. In short, they’ve become bloated, slow, clumsy, bureaucratic and needlessly complex. Not to mention “if you’ve got to ask you can’t afford it” expensive.
Slap the word “enterprise” in front of something and it becomes an instant calmative for worried managers who are looking for “guidance” and “best practices”. But so often it’s nothing more than a word.
A tip o’ the hat to Ayande Rahien for having the guts to point out today that the stuff that comes out of Microsoft’s Patterns and Practices (P&P) group is mostly over-abstracted, over-architected crap. He said it nicer than that, and he rightly pointed out that it’s not that the P&P folks produce bad code as such. It’s just that they dream up everything you could potentially need, in a sort of broad but thin layer atop the CLR, and present it to the world with the words “Microsoft” and “enterprise” on it, so it must be coding goodness, right?
Forget that it’s supposedly best practices and actually look at the code sometime. In most cases it’s not particularly impressive stuff. As one of Ayende’s commenters said, “they aren’t based in reality and are more subject to YAGNI issues”. At least the Enterprise Library code lacks one of the anti-attributes of most enterprise software: it’s free, so the price is right. It’s worth what you pay for it.
The situation is somewhat better in VS 2005, but remember the first time you looked at the generated form code in VS 2003 and ran screaming from its unutterable ugliness? P&P Enterprise Library code is often like that. It works, but it would not be a pleasure to maintain. I think these libraries are an effort to give big corporations the sort of Mack Truck they feel they need, but there are so many nimble little Ferraris out there, who needs this stuff?
I’ll take brilliant code such as that which comes out of Umbraco or SubSonic, for instance, over this dowdy stuff from P&P any day.
Don’t be glammed by enterprise software!
Update: Ayande stirred up quite a hornet’s nest with his comments and he and various other bloggers spent a number of days debating these issues through their posts. I think Ayande’s clarifying post here says it well: libraries like this are best grown organically, “dog fooded” by the library developers, and should not be structured in ways that even proponents of the library confess it’s “difficult” and may take months to master. That’s not something I’m going to embrace in the real world, a world in which there is generally a gun to my head. Libraries like this appeal, IMO, to two groups: trainers who can turn it into classes and books, and large, risk-adverse corporations like banks who want large, monolithic, do-all libraries to move as many decisions as possible away from application developers. –Bob
{ 1 comment… read it below or add one }
Couldn’t agree more about P&P. We started using it for the logging aspect as a toe in the water exercise and gave up very quickly when we realised log4net was head and shoulders above in functionality and simplicity of use. Have never gone back to P&P, rather we look for other solutions which are usually free. Unfortunately the ‘everything you need’ approach is (IMHO) affecting C# 3.0 to its detriment.