Today we come to you with the mysterious, yet appealing subject of greenfield and brownfield IT projects. You might have never heard of them, so let us first explain where this has all come from.
Both terms originally referred to direct investment. A company that decides to invest and chooses to build everything from the ground up, on a “green”, implicitly uncultivated field, can call this investment a “greenfield” one.
The “brownfield” investment, on the other hand, refers to a situation when a company builds upon already existing facilities or other resources, or even leases them, which means it operates on a field that’s been previously used and cultivated.
The same goes for IT projects – a greenfield project is a brand new one, developed from scratch, and not based on any existing systems, code or infrastructure, unlike a brownfield one, which is built upon already existing projects, code or other resources.
From this article, you will learn about:
- The differences between greenfield vs brownfield projects
- Their pros and cons
- The project management process for both types
- When to choose greenfield or brownfield projects
Curious to find out more? Read on!
Greenfield vs brownfield in the IT world
Both approaches can concern many types of IT projects, such as a software tool, an app, a website, a network, or an IT facility.
In the brownfield option, the task may be adding a new management module to the current CMS, integrating new features to an e-store or boosting the performance of an existing app.
Greenfield projects usually allow for more flexibility and innovation, which, on the other hand, means that you must thoroughly understand your business goals and set a clear path of development in order not to lose the scope.
To handle this risk, it’s best to use the agile methodology, because it allows for constant communication and the ability to catch small mistakes before they turn into big ones.
Brownfield projects usually come with some constraints and limitations, but in this case, much of the work is already done.
These differences have their implications, which you should consider while choosing how to launch your software – and we will talk about the use cases in detail later in the article.
Having said that, let’s look at the pros and cons of both approaches.
What’s good about greenfield projects?
The advantages of greenfield projects stem directly from their nature.
First one is flexibility. They can fit the business needs like a glove, because they are built exactly to cater those needs and provide all the custom solutions one can imagine.
For the same reasons, the software solutions built in a greenfield manner can be highly scalable.
The enhanced flexibility also means lower maintenance costs, for there are no unused or duplicate functions inherited from the old software.
Greenfield IT projects can be more future-proof, because they are not limited by the constraints of outdated technologies and are free of redundant dependencies of old systems.
Everything is state-of-the-art and freshly built, so no old story is involved.
What are the risks in greenfield development?
Building everything from scratch means that the time-to-market is longer, and the business risk is higher because there is no well-trodden path to follow.
You have to plan everything starting from business needs to the choice of technology, the architecture of the system, the user interface and so on. There are many decisions to be made along the way, which can slow down or even stop the development process.
No wonder, then, that the cost is usually also higher. Greenfield projects require new tech skills that may be scarce in the market, and the end users will have their fair share of learning too, often with the help of external consultants.
What are the advantages of brownfield projects?
Unlike greenfield projects, brownfield ones have an already predetermined direction of development, and old code can be reused to answer new needs.
It also involves a shorter time to market and, in some cases, lower costs (these are not always true, which we will explain in a moment).
The business risk is mitigated because the initial project has usually already been proven in the market and utilized by its users in many different ways, so all the potential pitfalls are already known.
What are the challenges of brownfield development?
On the other hand, the brownfield approach may be very limiting. Developers have to deal with old code, and the functionality is not always tailor-made to the users’ needs.
What’s also important is the fact that developers must know the current system in every detail. If they in fact weren’t involved in building it, it might be very difficult to figure out the old code, especially if its quality is poor and there is (almost) no documentation.
And, sometimes, the end result isn’t really worth the effort of trying to patch the old software with new features, and the project may eventually be very time and resource-consuming.
How to run greenfield software development
A greenfield project gives you the benefit of a fresh start and unlimited creativity, which is a chance but also an equally big challenge – with great power comes great responsibility.
A software house or an agency may be your partner in this development. Let’s say you have got just the idea for an app to handle a battery storing solar power, and a certain budget, but no developers or technology on board.
How should you start? You should pass the idea to the agency that has experience in executing such projects because their assets are not only experienced developers, but also the knowledge about each step of the process that will eventually take you to a business success.
Because we are undertaking a greenfield project that has many unknown areas, all the preparatory stages that precede the coding phase are crucial. What does this process look like? Let us break it down into several steps.
In this stage, which can also be called a product design phase, we have to answer some important questions concerning the planned piece of software.
These concern a problem that the product will solve, the user personas, the goals, and the software’s reasons of existence in the first place. Why is it important? according to CB insights, a lack of market for the product is the second most important reason for startup failure (35%).
This is more of a business and marketing analysis, so this stage has to involve specialists from these areas – workshops with brainstorming sessions featuring both the agency’s and client’s employees are very useful in this phase.
You can also do some market and competition research if the answers to the above questions don’t seem easy.
Once we’ve analyzed everything, we should decide about the exact business model (including methods of monetization and pricing) and a development model for the software (including choosing the right approach, such as Jamstack, and the specific tech stack).
The strategy smoothly connects business-oriented and development-oriented issues, creating a rational idea for every aspect of the product, alongside ways for implementing them.
Once we have a strategy in place, we have to design the product. Also, during this stage, the cooperation between the client and the agency should be very tight.
Design connects the logical, UX, and graphic issues and all these areas are interconnected, so working on them can be simultaneous.
We should think of user journeys and translate them into subsequent steps reflected in the final design.
Another vital part of the design process is prototyping, which may help to determine the optimal user experience and test all ideas. The created prototype should be reviewed, refined, and iterated according to the needs.
The final phase is development. The agency prepares a workflow, constructs a team of developers, and sets an agenda.
The product is usually created in sprints, which creates room for iterations and refining within this stage.
A good practice here is to create an MVP (a minimum viable product), which is namely a simplified version of the final software featuring only the most basic functions necessary to put it into the market.
That’s how the process roughly looks in the case of a greenfield project.
How to run brownfield software development
In the case of brownfield projects, the path is slightly different.
The software we have to build upon may be abandoned (created some time ago and not currently used) or incomplete (developed only partially and containing unfinished software).
The first important thing is to ask why the client wants to pursue a brownfield project in the first place. Usually, they think the cost will be lower and the time shorter, but as we have said before, that’s not always the case.
After an initial analysis of the existing code and new product requirements, it may turn out that the product will be less time-consuming and just cheaper in the greenfield approach.
But let’s assume we analyzed all the pros and cons and decided that a brownfield project will be the most reasonable way to reach our goal.
Analysis of the existing project
The existing code may hold many surprises, so it has to be thoroughly analyzed, with all the weak points and outdated elements identified. It may be reasonable to reuse just a part of the existing solution and throw away the rest.
We should also analyze the history of the product based on the original developers’ testimonies and documentation, its past failures, and its initial goals, comparing them with the new ones.
This phase takes a long time and is quite tedious. Sometimes, it may even feel like detective work, but if done well, it makes the other phases shorter and easier.
The result should be a comprehensive picture of all the technical, human, and organizational constraints of the system you will build upon.
At this stage, we define what to do to bridge the gap between the initial and final, desired software. The questions we should ask in this phase allow us to specify the problem. Is it an issue with the usability, the performance, the compliance, the security or the looks?
We should also compare the new and original requirements, and check what we have already solved.
Building a plan
Having updated the requirements, we can prepare a roadmap of the project, which tells us which features are the most important and should be implemented first, and which can wait to be addressed later. Then, we should break the agenda into specific tasks.
Don’t fall into the trap of rewriting everything to work better – remember that you chose a brownfield project for a reason in the first place.
Also, rewriting code may lead to technical problems, because it might not be compliant with the old parts.
Some tasks may appear to be more difficult than they initially seemed, so you should consider a time and budget margin in your plan.
The final phase, as in the case of a greenfield project, is development according to the pre-specified agenda.
Remember to involve all the stakeholders in your project, because without them, the plan may just rip at the seams. They should take part in requirements gathering, prototyping, or end-of sprint demos.
Should I choose a greenfield or brownfield?
Knowing all of the above, you probably want to know when you should choose a greenfield approach, and when a brownfield will be the best option.
The answer is not so obvious, because it all depends on the specific situation, and this should be analyzed between all the stakeholders at the very beginning – involving the client and the software house.
If you just want to update your software with new functions, and the old system is generally working well, has clean code and is equipped with futureproof solutions, opt for brownfield.
If you want custom-made software that answers the specific business and users’ needs, or your existing solution is outdated and messy, you should definitely go for the greenfield approach.
Whatever your choice, a good agency will take care of everything in close cooperation with the client. We at Naturaily deal with both greenfield and brownfield approaches, whether it’s Jamstack or e-commerce development, so if you want to entrust us with your project, just drop us a line!