TL;DR: I’ve found this to be true in my career. In my experience, whether or not you get a greenfield project depends on your company or the nature of your team.
If courses teach you’ll be building more greenfield projects than not, I’d be hesitant to consider it a well-rounded education in software development.
Greenfield Projects Defined
For the purposes of this article, I’m using the definition of greenfield project from Wikipedia:
In many disciplines, a greenfield project is one that lacks constraints imposed by prior work. The analogy is to that of construction on greenfield land where there is no need to work within the constraints of existing buildings or infrastructure.
By definition alone, it seems near impossible to think about starting a true greenfield project. I mean, if you’re building something from scratch you have the ability to pick every set of technology and standards the team will used to build the project.
But most projects start with some type of foundation these days. With some extreme exceptions, most things are going to start at the operating system level or will use a platform like the web and likely some type of framework that sits on top of it.
And to that end, there are already certain things in place that constrain what we can use.
The Greenfield Litmus Test
If anything, I’d say a greenfield projects depends on what you consider truly starting a project from scratch.
- Absolute purists might claim that a true greenfield project is nothing but bare metal. No operating systems, no available programming languages, etc. Everything starts here and moves up.
- Others may draw the line at an existing operating system, existing platform, existing framework, or something like that.
When it comes to greenfield projects, I’m of the mindset that once you know what platform on which you’re building, then you determine if a project is greenfield or not.
Perhaps this is a litmus test:
- If you’re building software that’s going to operate on or within the context of a pre-existing product, then it’s not a greenfield project.
- If you’re building something completely new to bring to market, then it’s a greenfield project.
It’s easy to start splitting hairs so I’m not going to keep going but this is the filter through which it may be helpful to think of such projects.
Very Few Greenfield Projects
In my career, nearly everything I’ve worked on has either been a feature for a larger project (and yes, some features can be so big they take entire teams – especially at the enterprise level) or has been maintenance on a pre-existing project.
There are a few years were I worked with a very small team and we were creating several products from scratch. And the reason we were able to do that was because we had started a business of our own and were building and selling the products.
But even after those products had become more established, then we swapped into the phase of maintaining and improving the projects. So if a greenfield project comes your way, it doesn’t always stay that way.
As for now, there’s a lot of work I do that’s either related to internal tooling or based in research and development. There are times where a project may be seem like it’d be greenfield but the requirements usually dictate what’s necessary to start the project. So even then, there are constraints in place.
Do Colleges Teach You Often Get Greenfield Projects?
I don’t know what most colleges, universities, or other courses teach. This statement piqued my curiosity because I think that a lot of projects that teach software development concepts are initially done so in a vacuum. But after a certain point, you’re working with something that already exists – even if it’s small.
Though just about everything I’ve worked on out of school has been on a pre-existing project, there were also plenty of projects I had in school that were focused on adding things to projects that already existed.
Sure, some of the projects were in place so we had to learn how to work with existing codebases, but others – especially during internships – were all about maintaining existing software.
Ultimately, you’re likely to have a mixed experience but I’d venture to say the majority of projects are not greenfield.
If universities or other forms of education aren’t providing you with opportunities to learn how to both build a project from scratch and to maintain existing projects, then I’d be hesitant to consider it a well-rounded education in software development.