greenfield vs. brownfield
expressionops culturecloud
Building on an empty field versus building inside what already exists - the two starting conditions of every project.
Greenfield means freedom and no users; brownfield means constraints, migrations, and the installed base paying the bills. Most real work is brownfield, which is why 'how do we get there from here' matters more than the target architecture.
Greenfield is building with no existing constraints; brownfield is building into a system that already exists, with its data, its integrations, its users and its accumulated decisions. Almost all real work is brownfield, and almost all writing about software assumes greenfield.
That mismatch explains a lot of frustrated engineering. Advice that assumes you can choose the architecture, the language and the data model is useless when the answer to all three is already deployed and carrying traffic. Estimates derived from greenfield experience are systematically low in brownfield, because the work is not building the feature, it is discovering what the existing system actually does, which is never quite what it is documented to do.
The honest framing is that brownfield is the harder discipline and the more valuable one. It demands archaeology, migration paths, backwards compatibility and the ability to change something while it stays running. Greenfield is enjoyable and it is also where the future brownfield problems are created, which is why the most useful question during a greenfield project is what this will be like to change in five years.
Also known as: greenfield, brownfield