What is Brownfield?

This was originally posted at www.victoriacodecamp.com/blog.  I'll be out in Victoria on January 26th 2008 speaking on Parachuting Into Brownfield Applications and on C# 3.0 Beyond Linq.

A common term in software development is 'greenfield'.  The term is commonly used to describe a project that is starting completely from scratch and thus having no existing code base.  Recently I have been searching for a term that is capable of describing the opposite of greenfield.  One of the terms that is often used to describe code that exists is 'legacy'.  Unfortunately the term 'legacy' has connotations that lead people to think about applications that have out lived the life of the technology that they were implemented with and no longer are being actively developed.  For some people this will make them think of mainframe, green screen, COBOL, FORTRAN and other technologies.  Because our minds tend to sway to distant applications and technologies like this, we create a gap between greenfield and legacy where the technology is either relevant, or nearly relevant, and the application is under active development.

Applications like this are something that we regularly see in the industry.  More often than not, when you're hired onto a project, either as an employee or a contractor/consultant, you will be stepping into a project that is already under development.  How do you decribe that project to your mates?  It's certainly not greenfield and if you mention 'legacy' people will ask you how you ended up working on mainframes.  Neither do the situation justice.

The term 'brownfield' is not as commonly used in our industry.  In fact, I can't find any online references to the term in relation to software development.  According to Wikipedia, brownfield is used to define land and reclamation work and can be defined as:

...land previously used for industrial purposes, or certain commercial uses, and that may be contaminated by low concentrations of hazardous waste or pollution and has the potential to be reused once it is cleaned up.

If we translate that into software development it would probably read something like this:

...project or codebase that was previously created and may be infected with poor practices, structure, implementations and moral but has the potential to be revived through comprehensive and directed refactoring.

If that is how we define a brownfield project then we can also say that they are a more common type of project for us to end up working on.  If we are working on these types of projects regularly, what are some of the skills that we should have to deal with them?  Over the next while I'll be posting more on this topic.

Comments

Dave Donaldson
12/24/2007 01:58 AM by
Dave Donaldson

I like it dude. Seems to categorize those types of projects nicely.

Trumpi's blog
12/24/2007 03:12 PM by
Trumpi's blog

Merry Christmas everyone! Blogversations Size Is The Enemy - A response to Codebase size isn't the

Jacques
04/03/2008 03:51 AM by
Jacques

I think this is the perfect term, and believe a very important subject often overlooked. I believe there is a definite lack of discussion around the specific issues encountered on these types of projects.

Steve
04/27/2008 01:42 PM by
Steve

It's still legacy imo

Richard Hopkins
05/13/2008 11:16 AM by
Richard Hopkins

I think its a great term! My team started using it in September 2006 to describe complex IT environments which were complex to re-engineer - and that is very different from legacy; not all legacy is brownfield and not all brownfield is legacy. Good to see someone with a similar thought. The work we were doing gave rise to a book which IBM Press have just issued http://www.amazon.com/Eating-Elephant-Greenfield-Development-Brownfield/dp/0137130120/ref=pdbbssr_1?ie=UTF8&s=books&qid=1210684517&sr=8-1

Good luck with your brownfields! - and its up there on Wikipedia now...

Mukkesh Tuli
05/22/2008 03:06 PM by
Mukkesh Tuli

In Business Terms What is Greenfield Projects

Donald Belcham
05/25/2008 02:44 PM by
Donald Belcham

@Mukkesh -- Interesting question. I think that the terms greenfield, brownfield and legacy all apply to projects when you look at them from a technical standpoint. If I view projects from a business standpoint, the distinction between different phases of a project are far less distinguishable. In fact, the phases seem to be more related to the methodology being used during the lifecycle of the project. For example, if you're doing waterfall, the project maybe in Requirements Gathering, Development, Testing, Production and Maintenance. Or, if you're using an Agile methodology the project maybe in Development, Production or Maintenance.

I've not spent much time thinking about the application of the term Brownfield from a business point of view prior to your question. I think Kyle and I are going to have to spend some time hashing this out and addressing it in the book and our future presentations.

R.K.Kothari
05/24/2009 11:20 AM by
R.K.Kothari

In banking terminology green field project is where the borrower is going for expansion of its unit at the same site using basic infrastructure of the existing plant only. Meaning is same for software devlopment or any other activity.