Print | posted on Sunday, October 21, 2007 3:03 AM
There's been a lot of posts recently about "SharePoint as a Development Platform". These posts have generated considerable feedback and the whole area is certainly an interesting conversation. Of course, the signal to noise ratio has been pretty low with the usual emotional blather and plenty of "SharePoint just sucks".
However irritating and inane many snippets are it is a good thing that the volume is being turned up on this particular discussion. The more noise, the more likely the vendor are to listen. Sad, but true nevertheless. Some of the noise is entertaining and after all these things can be taken too seriously. In the grand scheme of things it hardly matters that some developers don't like SharePoint. Being a billion dollar business, it's not that bothered! :)
Of course we all want SharePoint to be a better development platform and to wake up to the voice of developers and become a true rich platform across all the roles. Microsoft is a developer platform kinda company after all. We want a Team Suite SKU and proper lifecycle. But in the meantime, it's what it is, despite the missing pieces a pretty damn good one, that no other vendor got.
As expected many of the posts express frustrations with SharePoint in terms of "how difficult it makes simple things". This is of course true - but these posts are almost all from the point of view of a single developer experience as opposed to a development platform point of view.
There has been really no coverage of the benefits SharePoint offers a large organization with the desire to constrain and control the un-wieldy, hard to support and expensive bespoke "Line Of Business" applications in their estate. Many vendors like to suggest that their platform provides a solution in this space, but there really is only one viable option here. Sales pitches are one thing, the reality of a product offering is another one entirely!
Don't get me wrong, there are some real, big, nasty issues with SharePoint which make it inappropriate in various scenarios. These things (Accessibility, Payload, Content Deployment, Infrastructure Optimization and Developer Tool integration are some examples) need fixed in the core, not via some bolt on "band aid" widgets or CodePlex projects. But this is true of any platform and those expecting a nirvana or easy answers to difficult questions here are as likely to be as disappointed as those looking to deploy a single, shared "back end" storage and database system for their organization! :)
So here's some reasons why SharePoint 2007 is a kick ass platform for enterprise development.
- WSS v3 provides a really quite ridiculously large collection of core application framework services or infrastructure plumbing, all for free and all to an extremely high level of quality with respect to performance, scalability and extensibility. It leverages the ASP.NET 2.0 capability mostly in a clean way and provides so much stuff you would otherwise need to implement in custom code. SharePoint promotes a less custom code is better approach. I know quite a few developers who don't like that idea, but code for code's sake is hardly the goal of an enterprise information systems solution :)
- On top of WSS, MOSS provides a bunch more stuff all targeting one of six core business scenarios such as Enterprise Content Management, Enterprise Search or talking to external line of business applications from other vendors. Then there a bunch of additional products that also offer extended frameworks for other business scenarios like Project Management. With these you have a choice to use them as is to introduce new capability to your organization or extend them through extremely broad and complete integration points. All in .NET. It is entirely unreasonable to suggest that future MOSS offerings from Microsoft will not include more "business scenarios" built in the same way. I've seen pretty much all big enterprise app platforms, nobody got anything close and none make LOB integration so easy - even the ones that call themselves service orientated. :)
- There's a reason the most service orientated platform doesn't sell it's service orientation. It doesn't have to - the pitch is irrelevant. You definitely don't want to be putting your transactional data in a SharePoint list, and for sure we need SharePoint without the Web UI but that's not what being service orientated is about. Service Orientation is about, well being service orientated. :) You dig? Geared towards providing and consuming services - that's SharePoint that is. Suits you Mr CIO guy.
- MOSS also has a "business scenario" under the Portal space called My Sites. Some say My Sites are the Myspace or Facebook for the enterprise. That's MWS as me and my friends call it. They are not, nor should they ever be. You don't want Facebook or Myspace in your enterprise - they don't offer any business scenario except for wasting time not doing your job for which most CIOs don't like writing cheques. MOSS's My Sites are already an extremely powerful enterprise enabler and again the future will showcase their incredible power with even more features going forward. I don't see any other vendor offering anything interesting in this space whatsoever. Nobody else got it. You can code up against MySites just like any other SharePoint site.
- SharePoint has "small", "esoteric" features like Content Types which are so simple but which provide core services to pretty much everything in an elegant, manageable fashion. If used correctly these bad boys can underwrite an entire organization's information management requirements with zero lines of custom code and no requirement to purchase millions of dollars worth of "metadata framework" consulting from some dubious "big five" consultancy. Did I just say you could save millions of dollars by implementing Content Types? Yup. That's right.
- SharePoint implements a factored least privilege approach to code security across the board using Code Access Security. It does it properly, almost everywhere - there are some nasty exceptions. Even if there was SharePoint Developer Edition and you fired up the "New SharePoint Project" template that bad boy wouldn't have TrustLevel=Full in it's web.config. You don't got the ability to fiddle with the SharePoint APIs or touch the file system by default. You think an enterprise application platform deployment worth millions of dollars of capital cost and untold billions in business productivity can afford to allow full trust assemblies from the "development team" or CodePlex (or a dodgy 3rd party vendor) to roam free? I didn't think so. This is a real important issue for which SharePoint provides a integrated, manageable solution across an entire server estate. This is not a little deal. It's a huge one.
- SharePoint provides a multi logical tiered deployment model and functional decomposition which enable it to scale to some extra-ordinarily silly ass big numbers using far less physical hardware resources than any other enterprise application platform offering. If you can afford storage, you can do it with SharePoint. Yes really. I don't want to hear about search "limitations". You have to be crazy to suggest that SharePoint doesn't scale. That scale can be true for your additions/customizations as long as you follow the rules. Compare that to building a significant IIS Farm because you are too scared to run more than a couple different LOB apps on the same box. It's all about the money baby - Infrastructure Optimization is not a little deal for big companies and their senior IT staff. SharePoint shows the money, lots of it, from a scalability perspective.
- SharePoint promotes rules and governance. Destined to go down as one of the top ten things a average developer isn't interested in. But average developers isn't where it's at. Other things in the world have architects and are built. Things like nuclear power stations, bridges, airports and dams for example. They build them by following rules and enforcing governance. It will many years before the fledgling software development "industry" has appropriate certification, rules and governance (some say it never will) but it needs them. Any journey in this general direction is a good thing, regardless of how "painful" or "annoying" it might be in the early stages of the trek.
- It's just another SharePoint site. It don't matter what business scenario you are in, or which features you are using everything is a SharePoint site. Always. Not like some other vendors I could mention that are selling five or six acquisitions with silly new names under the banner of it's integrated application platform. You can code up a storm against all of them using the same tools, rules and governance, with the same process and predictable results. Predictable? Hmmm, I wonder if CIOs might like some predictability in their enterprise application projects.
- It's from Microsoft. Number 10. But a pretty big deal. You just bought Vista and Office 2007 for your company because they are the most appropriate general purpose operating system and productivity suite. You probably got some Exchange server because you need some email right? Not some crappy email, but real email, Exchange email. Maybe you got some Rights Management. I think you get the picture. You spent a bunch of cash, what you don't want is a hard life integrating all those things together you want bang for your buck. Is there another vendor offering an enterprise application platform that provides rich, end to end integration with the primary software tools used within the enterprise? Come on, if you got it, let me see ya! Nobody? I didn't think so.
So there you have it. There's a ton of stuff not on the list - we could be here for some time! Obviously I am an advocate for SharePoint and I earn my living doing SharePoint. However I never recommend using SharePoint when it's not the appropriate solution - that would be silly - I'm an architect, not a marketing guy. It would be bad for me, and the product.
The bottom line is that SharePoint is currently the only enterprise application platform of any worth in the marketplace. It is so utterly compelling in this space it makes the competition look extremely amateur even if some of them are much more mature.
SharePoint isn't simply a good enterprise application platform. It's the only real enterprise application platform. Suck it up! There is, after all, life outside Visual Studio.