Agile is THE ONLY way to build SharePoint applications. Pure and simple. If you think otherwise, sorry. You are wrong.
Oh… you wanted an explanation? Okay - here you go.
I could bore you with a bunch of background on Agile and what’s good about it, what the process is, what the core concepts are, etc. But I won’t. If I did that we would just go back and forth forever on the benefits/shortcomings of Agile development. Instead I’ll get right to the point.
You do not know enough about SharePoint to fully spec a solution end-to-end.
Let me repeat that. YOU (yes you), DO NOT know enough about SharePoint. I know you think you do. I know you think you know how everything works, how everything fits together, but you don’t. And you know what? Nobody does.
There you go. Any application you want to build that has any level of complexity just cannot be fully designed up front. There are too many unknowns at every level in the product. Too many assumptions need to be made about what should work. And we all know that there are dozens of unanticipated gotchas waiting around every turn.
SharePoint 2007 is a huge product. It has a ton of little nooks and crannys each providing great functionality, but also hiding pure WTF, “why did they do it that way”, suprises. SharePoint is just too big and too new for anybody to know it intimately enough to fully define a solution end-to-end without actually doing some trial and error implementation. So if you’re doing trial and error implementation anyway, why not include the client and make them short iterations?
Okay - a few more quick benefits to this approach:
- Don’t have to spend time documenting out of the box functionality that you don’t have control over anyway
- Wireframes and UI designs are less critical because you can “design” on the fly using the out of the box UI - then identify the gaps where additional design elements or controls are needed
- End up with less code/customization because once users see it out of the box, they quickly reach a “good enough” point. You can focus your customizations where where adds real value.
- The very nature of letting the user touch and feel the solution will change their requirements. They will realize that certain things are less important than they thought while others are more important. This is true with any application development but the fact that you can do so much out of the box in SharePoint means you can get to this point very very quickly.
So there you go. Good luck. We have a tough fight ahead of us convincing people that SharePoint is different enough to warrant throwing old waterfall methodologies away and trying something new.
Henry | 20-Jun-07 at 4:05 pm | Permalink
Kudos Glen! Thanks for the insight.
Ricky | 09-Feb-08 at 1:47 pm | Permalink
Wow. I think this single post might just break us out of the analysis paralysis hole that we’re just starting to realize we’ve been digging. We have been waterfalling hard. We’ve started with trying to come up with every user/scenario/need permutation that “might” one day be requested, then trying to go through each part of the product to see what we would have to do to prepare for it, then figure out how to actually change it. And our case is even worse - we essentially can start with a blank slate; there’s really no solution or user requirements other then our (I.S.) best (non-user) guesses!
What we really should be doing is going with the defaults that have been defined for a good reason. If some thing’s not working, you then have to make the argument as to why the default won’t work for you and then implement the customization in the least invasive way to make them happy.
We’re spending a majority of our time in over-designing something that will handle all potential things for all potential people. In reality it’s pretty much there now, and for the things that do pop up there’s usually a solution with negligent impact.
Thank you!
Tim | 02-Jun-08 at 6:35 am | Permalink
Glen I take just about everything you said verbatim. The only point I have trouble with is point 2. in your benefits list “Wireframes and UI designs are less critical because you can “design” on the fly using the out of the box UI - then identify the gaps where additional design elements or controls are needed.”
Taking an Agile approach gives a designer more data to use in the design process but SP OOTB UI is not an Agile shortcut to UI design. Design is still required as UI design should not be driven by one UI view of the world. UI design criticality remains unchanged.