Monday, March 17, 2008 4:48:03 AM UTC #

I constantly encounter developers that just flat-out hate SharePoint. Which is totally okay, because it has warts, for sure. An easy comparison, as an example, is versioning your database. Let's do this:

  • SQL Server: you can use Red Gate's SQL Compare utility, or Microsoft's DBPro SKU in VSTS, to get a diff that you can run at the time of upgrade. Let's call this a "mechanical" solution to the problem.
  • SharePoint: any serious upgrade of your in-production content requires a full (manually performed or manually coded up) data migration.

To say the least, SharePoint provides some easy targets.

Developers always point out how much they hate SharePoint in hopes that I will be able to tell them why they're wrong, or at least be able to give them some extra perspective as to why I'm okay with SharePoint. We're not going to get into the full "why use SharePoint at all" question for now—I don't think I'm qualified to give the answer to an unknown audience in written form. What I will give instead is my throwaway response:

"You lose control with SharePoint."

Hopefully by the end of this post, you'll get an idea of what I mean by lose control.

From the mouths of Agilistas

I was most fascinated by this "Position of no power" presentation from the Agile Toolkit podcast series, apparently recorded at Agile 2006. Yes, 2006; that's not a typo.

Anyway, I was fascinated by a story told at 29:27 of the episode (transcribed below is 29:27 through 31:30):

[context: Q&A session; previous comment was about cutting features from a sprint]

"Just a quick comment, I'm with the same company…I witnessed a meeting on that note where developers and Lex got together. There were a whole bunch of storycards, and they added to more time than allowed, and yet—they were all needed.

Lex: About twice the time.

Yeah, about twice the time! It was a pretty big factor! And Lex—you talk about being stubborn—it was really cool to watch. Lex stubbornly said "We cannot cut business value. We must meet this business value at this time. We cannot do it. And, I don't want you guys killing yourselves working overtime, so let's get creative." Several of the newer developers kept coming back to "Well! Well! Time for you to cut scope!" And Lex stubbornly said, "Nope, we're not leaving this room until we get this into the time allotted!" And then, magic started happening, and it was really cool! And it took…it actually had to go through that stubborn phase. And then one of the developers said "ok fine", and picked up a card with a big estimate, and said "Okay, well, why do you need this?" And Lex explained it, and the developer said "well, wait a minute! But if that's why you need it, would this work instead?" and gave an example of a totally different feature, and Lex said "well, that would be so much better; I hadn't even thought that was possible. That would meet my need even better than I had asked for!" Developer said, "that will take a tenth of the time." And everybody wins! And we kept doing that, story after story! The team did. It was really cool. I think that is the heart of Agile, and especially for Agile developers, one of the things we as leaders can do, is to keep that strong focus on "it's not just about 'cut scope';" it's about finding the creative solution to get more need met in less time and cost. That is absolutely critical.

Lex: It works better, I've found, if you do it right before a meal, too. Timebox it with food.

 

What fascinated me most about this story is that a) following standard estimation practices, developers gave an estimate; b) customer declared we cannot cut business value; c) something magical happened, d) developers (legitimately!) reduced their estimates.

What happened in magical step c above? What does this have to do with anything? Let's roll onward and find out!

From the mouths of SharePoint experts

Let's go at this from another (more direct) angle. Check out DotNetRocks #268 with Vishwas Lele, and DotNetRocks #307 with Sahil Malik. They both start off by describing the fact that you get a great deal of value out of SharePoint if you are allowed to give an "80% solution". I.e., this may not be exactly what you wanted, but it gets 80% of the job done, and it took me three minutes to implement, while you were discussing who has the A for setting up teleconferencing for the next meeting. It's already done.

They both agree that this magical place is where you gain value out of SharePoint as an application development platform.

Take it from me

I'd like to draw together these two facts:

  • By default, developers will attempt to implement exactly what you ask for. By default, customers dictate precise technical solutions.
  • Developers and customers require something magical in order to get them to think creatively to craft solutions that solve the core business problem.

From the Agile 2006 presentation above, in order to reach this magical state we need what amounts to a pressure cooker: squeeze, and eventually you'll get toothpaste. But as she mentioned, they had to go through the stubborn phase first. This sort of thing did not occur naturally.

And now for SharePoint. It is my proposal that with SharePoint's wealth of built-in features, we are constantly attempting to fit the customer's "first pass at requirements" into SharePoint's existing featureset. If we don't find a fit, and if we don't find a solution, then we haggle—maybe they can change their human process, just a little? Maybe the formatting of that email alert doesn't matter so much? Maybe we don't need to format the web part precisely the way they asked? Maybe it's okay if the SharePoint site looks like a SharePoint site?

With SharePoint, we (both we the developers and we the customers) are forced to think creatively, and as such, are given a great competitive advantage over slimmer frameworks ("slim" like vanilla ASP.NET; yes, I know how ridiculous that sounds). This is my perspective. With SharePoint, you lose precise control over your technical solution, but you gain a different type of flexibility—you are thinking creatively, "out of the box."

Categories: SharePoint
Technorati:
Monday, March 17, 2008 4:48:03 AM UTC  #     |  Comments [2]  |  Trackback
Monday, March 17, 2008 1:23:18 PM UTC
For the sake of completeness, the people in the podcast were Lex Bowers and Brian Robertson from Ternary software. I interviewed with them a few years ago, and they are *way* beyond most of the industry in terms of culture.

I think the MAGICAL MOMENT was the open communication between "customer" (or product owner) and developer. This emphasizes the importance for developers to *understand* business value for features. Developers are in a unique position to offer these alternative suggestions that serve 80% need for 20% effort.

The problem that I see with going SharePoint is that it can heed your productivity / ability later on. I would be terrified to modify a complicated list to accomodate new features. To me it's an opaque box that magically works when the stars align, but it really requires dedicated learners (like you) who are patient and can truly understand how it works. The notion that your secretary is going to be creating lists is utter bullshit :).

One thing that I love about NHibernate (for the sake of giving a COMPLETELY UNRELATED EXAMPLE -- yep I just DID that) is that is serves a great need both for the uber simple applications to the insanely complex.

The difference: flexibility.

So there you have it- NHibernate != Sharepoint. You heard it here first folks.
Monday, March 17, 2008 5:39:36 PM UTC
It is my ultimate goal to figure out whether learning SharePoint will be worth it. The jury is still out, and will probably remain out until sometime after vNext is released (late 2009?). I.e., until it's too late.

But I totally agree that you can have TRUE flexibility if you have full control over your frameworks. The problem is, the only way to have full control over your frameworks is to be a contributor to all of them. Check out this post to see what I mean:
http://www.ayende.com/Blog/archive/2008/01/24/You-need-to-control-the-stack.aspx (Summary: Oren Eine made several edits to Castle, NHibernate and Rhino Tools while implementing Rhino Security; without which he would have had to make compromises. Read the full post).

If you don't have full control, you end up fighting the frameworks (ala SharePoint, though I wouldn't go as far to say you would be fighting the framework AS MUCH AS you would fight SharePoint).

...

So the NHibernate example is not a bad one. It's a big framework to learn, like SharePoint, but it's a big framework you can control to a great degree, UNLIKE SharePoint. Also unlike SharePoint, you can use NHibernate for complex apps.

...

I think I'm rambling now. The point is: I agree. If you can do the magical step outside of SharePoint, SharePoint's competitive advantage that I listed above no longer applies. And even WORSE, if you ARE using SharePoint, and you're NOT given this sort of flexibility...you're in big time trouble.

Peter Seale
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview
Syndication

Search
Posts on this page
Categories
Sites I visit regularly
About

Powered by: newtelligence dasBlog 2.2.8279.16125

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008, Peter Seale

Send mail to the author(s) E-mail



Sign In