If you haven’t been following it over the last couple of months, we’ve been running a series of articles about brownfield development – authored by James Kovacs, Kyle Baley, and Donald Belcham.  The big idea here is that rather than have yet another article or set of articles about implementing some new technology from the ground up (and usually in some kind of contrived scenario), we wanted to show how you can drive incremental improvements into existing codebases (hence the term “brownfield” as opposed to “greenfield”). 

For the first of these series’, we wanted to address Web development – traditional ASP.NET development to be more specific.  Therefore, we have taken an existing open source project, ScrewturnWiki, and have systematically refactored it along a bunch of different dimensions to produce the following.

Getting Your House in Order  This is part one of a multipart article series about improving an existing "classic" ASP.NET Web application. This first part helps to get your house in order with good development practices on an existing codebase, including version control, issue tracking, and automated self-contained build scripts. ASP / ASP.NET; Test / Debug; Web
Testing This is part two of a multipart article series about improving an existing "classic" ASP.NET Web application. This second part focuses on automated testing. ASP / ASP.NET; Test / Debug
XHTML and CSS Improvements  This is Part 3 of a multipart article series about improving an existing "classic" ASP.NET Web application. This third part focuses on XHTML and CSS. XML / XSL; Web; ASP / ASP.NET
JavaScript improvements  This article will focus on refactoring ScrewTurn Wiki’s JavaScript using jQuery, and testing it with QUnit.
Improvements Using jQuery and jQuery UI  This is part 5 of a multipart article series about improving an existing "classic" ASP.NET Web application. This fifth part focuses on jQuery and jQuery UI. ASP / ASP.NET; Web
Separation of Concerns  This is part 6 of a multipart article series about improving an existing "classic" ASP.NET Web application. This installment focuses on improving separation of concerns in Web applications.
Death of a Singleton  In part 6, we moved away from the UI a little and worked more in the code behind the pages. In this article, we’ll continue that work and focus on a specific pattern that is used through the codebase: the Singleton. ASP / ASP.NET
Disentangling Our Tangled Web   This is part 8 of a multipart article series about improving an existing "classic" ASP.NET Web application. This installment focuses on better ways to wire together loosely-coupled applications using dependency injection and an inversion of control container.

So as we bring this particular series to a close, I have 2 areas where I would love to get your feedback. 

First, what about this particular series worked – what didn’t?  Did you like the intermingled videos – was it helpful that you could also read the articles on Channel9 – did you even notice?

Second, I think that the whole “brownfield” series concept is a repeatable one.  What other series’ would you like to see?  Some things that come to mind include:

  • Breaking a monolithic architecture in to something more service oriented
  • WinForms refactoring – could go a bunch of different ways here
  • Leveraging the cloud in existing apps
  • Bring exposing workflows as first class citizens
  • etc?

Thougts?