Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Recovering a Project with ASP.NET MVC and Agile

I recently got brought on board to a new client where, true to form, a project was in a state of failure - everybody sort of knew it, but nobody would say it out loud.

What Was Going Wrong? 

After my initial assessment, I made a quick decision that the major thing holding everyone back was an early decision to use MOSS 2007 to host an external website, and as the primary content management system. This wouldn't have been a totally bad decision, if the team had a lot of good MOSS 2007 experience on board, but unfortunately they were learning as they went. If there is one thing that really doesn't work well in MOSS it is a "lets just start and change it as we learn and go along" approach. MOSS takes a fair amount of careful up front analysis and planning to get right, and has enough permeutations and "gotchas" to require some good experience on the team before starting. Otherwise you can rapidly end up with a big ball of mud.

So we took the decision that using MOSS was a major stumbling block, and this had to be removed from the equation. Of course it *could* have all been done in MOSS, but it wasn't going to happen in the time left. There was also a small "jedi mind trick" involved too ... people had become so focused on the SharePoint "way" that they could no longer see the bigger picture.

The decision was made to separate the public application away from MOSS, and to write it as a bespoke system. MOSS would still be used internally for document collaboration (which is where the strength of MOSS lies), and later on for publishing that information to the web site.

The Software Stack 

After some fast prototyping, some instinct based decisions, and a bit of faith, I finally decided on the following software stack to write the application:

Some of these were fairly safe choices, I have used them before, or they are tried and tested in the field. But obviously the major exception to that rule was ASP.NET MVC

I very briefly considered Monorail, but it does not have the tooling support or documentation support of ASP.NET MVC, and going forwards Monorail is likely to dwindle whilst ASP.NET MVC will only grow.

I also considered writing a Webforms application, and using MVP to split the UI from the logic, but this approach required a fair ramp up from the developers, and had too many possible variations to try and coax people into the right appraoch.

ASP.NET MVC therefore would provide a degree of familiarity to the ASP.NET developers we have in the team, whilst providing a clean separation of responsibilities. The only question was stability, which after asking around seemed not to be an issue, despite being only at preview stage (something MS haven't done before but is very welcome here) nobody reported any problems.

By changing pretty much every element of the software stack we were using the team has been revitalised, and has approached the project with renewed vigor and enthusiasm. They get to learn some new things for their CV (pretty much none of them have used any of the new comnponents), and due to the amount of "magic" that things like Rhino and Windsor introduce they could get on with writing real functionality almost from day one.

I am very impressed by how fast the developers have picked up MVC, here a large amount of credit goes to MS for making a very usable, approachable, and simple framework that does exactly what it needs to, and very little more.

Making it Build With Continuous Integration

When I arrived there was no project in place. Nothing, nada. I could not pull the project, build it and see it work. As everything was being done in MOSS people were writing projects for each small bit of fucntionality, and manually copying assemblies into a single MOSS deployment. And the only source control that existed was Visual Source Safe. To say the least, this was scary.

So the first thing I did here was to install VisualSVN and TeamCity and get a build server running. After setting up a single solution with all the relevant projects included, we now have a build that operates on every check in, and it automatically displays on a web site for everyone internally to see the progress. On the dev machines we installed Tortoise SVN and Ankh SVN, Ankh now seems a lot more stable in version 2, but has some irritating quirks still - it is however much better than any MS source control plugin, and falling back to Tortoise almost always fixes the problem.

We also installed the trial version of ReSharper on the dev machines. None of the people here had used it before, but within only a few days we were hearing a lot of "oh wow", "that's amazing", and "that used to take me so long to do" ... in a week or two we will have to buy licences, but I think it has more than justified itself to the development team.

The URL of the build site was distributed to the business users, and now they take an active interest in telling me the "walking skeleton" is a "pile of bones" when someone changes the DB loging details last thing at night :)

Changing the Process

Also evident was that the approach that was being taken to the project was classic waterfall, along with a mixture of daily constantly changing and fluctuating requests and requirements. Communication was good with daily meetings, but the same things seemed to be repeated at each.

So another bold decision I took was to approach this as a far more Agile project - using some elements of XP.

I threw out the gant chart - much to the dismay of the project manager - and started writing up story cards, which promptly got placed on a commandeered wall. The project manager now has these story cards listed in an Excel spreadsheet so that he and the people he reports to can see exaclty where things are in a palatable form, but the wall remains the "one true master"

We changed the 8.30am sit down meeting to a 9.30am stand up meeting, and have been trying to enforce a fast "what I did yesterday, what I will do today, what is holding me up" approach to stop us getting dragged down into details.

We now have a lot more communication between developers as a result of this, and the business representatives are feeling very involved. There is still a degree of trepidation around what will be delivered, my protests of "you can see it as it goes along" and "it will be done when it will be done" are proving quite hard to swallow, but I think everyone understands there is no magic pill here and we just have to judge it step by step.

The Proof Will Be in the Pudding

So some good early steps have been taken. I cannot say the project is back on track, but everyone is now far more involved, has far more enthusiasm, and can see something starting to take shape. The perceived deadline of a few weeks from now is unlikely to be met with a fully functional site, but as "fully functional" is only vaguely defined, we are aiming to have something that is "good enough" by then, and then to make it better as people feed back into the process.

So far a major success on the approach, now to see if we can turn that into a successfully delivered solution!

 

 


Posted 08-13-2008 7:35 AM by Jak Charlton

[Advertisement]

Comments

DotNetKicks.com wrote Recovering a Project with ASP.NET MVC and Agile
on 08-13-2008 7:00 AM

You've been kicked (a good thing) - Trackback from DotNetKicks.com

Dew Drop - August 13, 2008 | Alvin Ashcraft's Morning Dew wrote Dew Drop - August 13, 2008 | Alvin Ashcraft's Morning Dew
on 08-13-2008 9:31 AM

Pingback from  Dew Drop - August 13, 2008 | Alvin Ashcraft's Morning Dew

ASP.NET MVC Archived Blog Posts, Page 1 wrote ASP.NET MVC Archived Blog Posts, Page 1
on 08-13-2008 9:59 AM

Pingback from  ASP.NET MVC Archived Blog Posts, Page 1

Troy DeMonbreun wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-13-2008 12:20 PM

Congrats on the bold moves!

I also must say Congrats! to the company stakeholders for not throwing you out or saying, "No, you can't make all those changes, we'd like to keep our jobs."

A rare company, indeed.  If you didn't know they would agree coming into things, you are a lucky/presuasive man.

Peter Seale wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-13-2008 2:02 PM

Casey, I think your feedburner feed (feeds.feedburner.com/InsaneWorld-CaseyCharlton) is broken; I just subscribed in Google Reader and your last post is May 2. I got the feed from your blog homepage's feed flair in the address bar (or whatever feed flair is called).

Also since I'm here, I'll point out you may be interested in the 21apps.com blog, which has recently specialized on Agile SharePoint topics. They've steered clear of coding-specific topics so far, but we'll see.

Steve Gentile wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-13-2008 2:04 PM

Good choices - I'm having a very successful project with asp.net mvc and nhibernate.

Be sure to check out Billy McCafferty's 'Sharp Architecture' setup.

Jak Charlton wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-14-2008 2:36 AM

@Troy

I think there is a point that projects get to (and maybe it is just my luck/bad luck) where the project will either failm or you have to take fairly drastic action.  In this case the project had been going for 6+ months with no visible product or progress ... we have a largely functional site now with the majority of the legacy data inside one week this way. Of course the last 10% is going to take a lot longer ... but users can now see what is happening .... feedback is the most important tenant of Agile.

@Peter

Doh ... thanks for telling me ... fixed now

@Steve

Indeed Billy's stuff makes good reading ... with a first toe in the water with ASP.NET MVC I am *very* impressed so far with it ... possibly the biggest step forward in development for me since Webforms first appeared (when they were totally amazing compared to ASP)

Jak Charlton wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-14-2008 2:44 AM

@Peter & 21apps.com

21apps.com looks interesting, I will keep an eye on it. My only slight niggle is the focus on SharePoint as though it is a special case.

I develop applications, that may or may not have SharePoint components or interactions ... to me SharePoint is just another bit of software in the stack.

The majority of SharePoint work I have come across in the field looks at SharePoint as thought it is a total development and application solution, and largely I guess this is why I have seen so many instances where it is really causing problems. In this case, it had been sold as a web portal, a collaboration platform, a content management system, a web development platform, and a number of other things to boot ... and in reality it only solved a very small part of that equation elegantly, for the rest it was the wrong tool for the job. Microsoft and their agents commonly sell MOSS2007 as though it is the silver bullet for all IT problems.

For me the key to good development in and around SharePoint is understanding what it is good at, what it is not good at, and how to make it play nicely with the other components in an architecture.

So I hope for, and look forward to, 21apps.com trying to cover that aspect of SharePoint work, and not seeing it as a specialist area that lives on it's own.

Casey Charlton - Insane World wrote Rare Company or a Persuasive Man?
on 08-14-2008 3:28 AM

Troy mentioned in a comment on my previous post on ASP.NET MVC and Agile that I must be in a rare company

Community Blogs wrote Rare Company or a Persuasive Man?
on 08-14-2008 4:52 PM

Troy mentioned in a comment on my previous post on ASP.NET MVC and Agile that I must be in a rare company

Andrew Woodward wrote re: Recovering a Project with ASP.NET MVC and Agile
on 08-26-2008 8:52 AM

Casey,

I totally agree with SharePoint not being a special case, after all it' is really just a .Net application albeit a complex one.   The reason we have tried to focus on SharePoint is because there are lots of sites out there that are looking at agile .Net development and people who do SharePoint seem to think it is too hard, or just different.  

We have a few white papers coming out soon that will hopefully show that SharePoint is not a special case and you can adopt good development practices.  One of our aims is to help people who live in that SharePoint only world to get started and make those first steps.

SharePoint will (at least for now) remain behind the curve regarding things like ASP.Net MVC but that is no reason for it to be treated in isolation or as a special case.

As for you hope that 21apps.com will try to cover aspects of SharePoint work and not  see it as a specialist area that lives on it's own,  I am confident we will fulfil this.

Andrew Woodward

Websites tagged "ankhsvn" on Postsaver wrote Websites tagged "ankhsvn" on Postsaver
on 12-16-2008 8:47 AM

Pingback from  Websites tagged "ankhsvn" on Postsaver

Recent Faves Tagged With "visualsvn" : MyNetFaves wrote Recent Faves Tagged With "visualsvn" : MyNetFaves
on 12-28-2008 11:35 AM

Pingback from  Recent Faves Tagged With "visualsvn" : MyNetFaves

bullet proof vest wrote re: Recovering a Project with ASP.NET MVC and Agile
on 01-07-2010 4:42 AM

Please feel free to include this on your website. Recovering a Project with ASP.NET MVC and Agile is great. I don't know what else to say. It's just amazing.

Blue Ray Plus - Latest Technology News wrote Recovering a Project with ASP.NET MVC and Agile - Jak Charlton - Insane World - Devlicio.us - Just the Tasty Bits
on 04-27-2012 7:32 AM

Thank you for submitting this cool story - Trackback from Blue Ray Plus - Latest Technology News

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Subscribe
Google Reader or Homepage

del.icio.us CodeBetter.com Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl CodeBetter.com Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of Devlicio.us
Red-Gate Tools For SQL and .NET

NDepend

SlickEdit
 
SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
LiteAccounting.Com
DevExpress
Fixx
NHibernate Profiler
Unfuddle
Balsamiq Mockups
Scrumy
JetBrains - ReSharper
Umbraco
NServiceBus
RavenDb
Web Sequence Diagrams
Ducksboard<-- NEW Friend!

 



Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers

 

Community Server (Commercial Edition)