Devlico.Us
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @devlicious

Casey Charlton - Insane World

Hang the code, and hang the rules. They're more like guidelines anyway


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!

 

 



Comments

DotNetKicks.com said:

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

# August 13, 2008 7:00 AM

Dew Drop - August 13, 2008 | Alvin Ashcraft's Morning Dew said:

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

# August 13, 2008 9:31 AM

ASP.NET MVC Archived Blog Posts, Page 1 said:

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

# August 13, 2008 9:59 AM

Troy DeMonbreun said:

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.

# August 13, 2008 12:20 PM

Peter Seale said:

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.

# August 13, 2008 2:02 PM

Steve Gentile said:

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.

# August 13, 2008 2:04 PM

Casey Charlton said:

@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)

# August 14, 2008 2:36 AM

Casey Charlton said:

@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.

# August 14, 2008 2:44 AM

Casey Charlton - Insane World said:

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

# August 14, 2008 3:28 AM

Community Blogs said:

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

# August 14, 2008 4:52 PM

Andrew Woodward said:

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

# August 26, 2008 8:52 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Casey Charlton

A somewhat passionate and opinionated developer, with occassional sparks of wisdom, and occasional useful information. Check out Devlicio.us!

Our Sponsors

Red-Gate!