The terms “greenfield project” and “brownfield project” are used in many industries besides IT, and usually the meaning is the same: greenfield describes a completely new project that has to be executed from scratch, while a brownfield project is one that has been worked on by others and is now being handed off to someone else for completion. In many instances, brownfield also indicates some type of contamination, which could make finishing the project more challenging.
Greenfield vs. Brownfield
At AndPlus, a greenfield project means developing a brand new software application, where we get to choose the architecture, the platform and all other technologies. We start from the ground up with the discovery and scoping process and help to strategize the appropriate technologies and design aspects. We create an agile backlog and plan for the creation of a minimum viable product (MVP), develop the working version and put it to the test. After that we work on developing new iterations to resolve operational issues identified in testing, and when we have a final product we plan for the launch. We also provide support to the customer after launching, until they are fully at ease using the new software product.
A brownfield project, however, begins with an end-to-end code audit for us to gather a full understanding of the basis from which we are building. We provide an in-depth report from our engineering and QA teams and host a code review. This research gives us the information we need to determine the future path of the project to take the unfinished software to a point of completion. Although the execution depends on our findings, typical brownfield projects involve continuing to work with the current technologies already in play and allow our competent team of engineers to find ways to deliver the required solution. This often means salvaging previously written code and starting over from a specific “checkpoint” in the project. We then insert the code into our Agile process and turn the unfinished software into an impressive application.
Benefits and Disadvantages
Each type of project has benefits and disadvantages, both for the developers and the clients. Greenfield projects often have little to no constraints on choosing platforms and methods, which gives our engineers a certain amount of creative freedom. There’s no requirement to integrate with legacy code, which can impose limitations on your creation. Some examples of greenfield software projects include:
- Developing a new eCommerce solution for a company that hasn’t used one before.
- Rewriting an old software program in a new language, without using any of the old code except for referencing business rules.
- Building a brand new application to execute tasks that have never been done before.
The main disadvantage of this type of project is high capital investment, which is more often required for the hardware needed to use the application than for the software development itself. The project scope needs to be very carefully mapped out to align with the company’s business goals and avoid scope changes during the project.
Brownfield projects often benefit financially from the incorporation of legacy code and systems, which reduces the investment needed to accommodate the new software. This same factor can be a disadvantage, however, by preventing developers from using optimum flexibility and efficiency of design.
Many half-baked projects were abandoned as a result of poor planning and execution, but because of the capital investment the clients prefer to try resurrecting them than starting fresh. Having said that, brownfield projects can still work out remarkably well using an Agile process and an experienced team of software engineers. Provided the code is not poorly structured, contaminated or hard to update, it’s possible to turn a discarded project into a thing of beauty and a joy forever.
Some typical examples of brownfield projects include:
- Incorporating new features into software previously developed and implemented.
- Revising the code to increase its functionality, which can enhance the way an application performs.
- Updating the codebase to generally increase the program’s functionality and enable it to undertake a wider range of tasks, improve speed of execution or deliver more comprehensive results.
Making the Decision
For a company to choose between undertaking a greenfield project and developing a new software product vs. a brownfield project to salvage and adapt an existing one, it’s necessary to consider a number of variables. These include current and future labor costs and availability, economic incentives, and grant funding available for specific types of initiatives. Evaluate these against the projected product to determine ROI and consult at length with a reputable development company to help you make a final decision on which to choose.