What is Greenfield Development
I've seen a number of job adverts in my time offering "greenfield development" opportunities as a way to try and entice people to apply.
New is better right?
They are trying to spark the idea of "File > New" development is a more favourable day to day development business than working on so called "Legacy" code bases. And they maybe right to an extent.
I am not convinced there is any such thing as pure "greenfield" development opportunities. After working at a number of different companies and experiencing different sizes and ages of code base this has only proved my theory. It is even more prevalent if working in a development team environment.
Let me explain why!
What is 'Greenfield Development'?
Let's start with what is "Greenfield development"? What better place to look for a description than wikipedia.
In software development, a greenfield project could be one of developing a system for a totally new environment, without concern for integrating with other systems, especially not legacy systems. Such projects are deemed as higher risk, as they are often for new infrastructure, new customers, and even new owners. For this reason, agile software development is often deemed the best approach, as it proposes how to handle those risks by developing small slices of complete functionality and getting them in the hands of customers (internal or external) quickly for immediate feedback.
Sounds good doesn't it, but let's look deeper into the above.
"A totally new environment"
This is a good starting point, if it's going into an existing environment then it's not "new" so could never be described as "green". You will definitely start with a new environment, this is probably the only pure part of green field development. You've got the requirement to create a new system so you have to start with the environment. So far so good!
"without concern for integrating with other systems"
Well, to be honest, in the current state of the world and connected systems this is where the first cracks start to become apparent. If you're not integrating with other systems, even if you are only using social media logins, then the system will either be pretty dull or pretty niche (or both!).
"especially not legacy systems."
So you're either at a new company which doesn't have any "legacy" systems or at some point you will have to integrate with some "legacy" system.
"Such projects are deemed as higher risk, as they are often for new infrastructure, new customers, and even new owners."
This section of the paragraph is interesting. Greenfield development is associated with new things, obviously, but new ventures and moving into new horizons. Whether this is new client, new business, etc things are moving forward. But again whatever the reason it doesn't stay green for very long.
Where has the Greenfield gone?
You've got a new requirement for a system and you click
File > New and feel all good about the fresh start. You get the new project solution setup and the initial code committed to your local git repository. At this point it's still new and green as it's on your computer. But you're in a team and the project won't advance without input from the team so you push the repository to your source control.
The rest of the team clone/branch and start contributing.
At this point it still appears green as you've not released it yet, but it's not. You and your team are adding new code and features but at this point it's an existing application. You, personally, don't have full control, it's brown. Even though new items and features are being added to the code base there will still be changes to existing code. Changes to commited code can be reduced if you follow good development methodologies, such as SOLID, but at this point it's still existing code.
This is how something new, or at least relatively new, appears to be green but is still not greenfield development.
I have taken quite an extreme view of greenfield development but all of the above should be taken into consideration if you are looking at new career opportunities or even new side projects with your best friend.
Just something to think about.
Agree? Disagree? I'd be interested in hearing your thoughts. Please contact me on Twitter @WestDiscGolf