A greenfield project (or product) is a new solution to a problem; it is not built on top of any existing application but usually is part of a wider business architecture.
Whenever a new greenfield project starts, technologists receive an often incomplete set of very approximate, high-level requirements. They then start to form an architecture to satisfy those requirements, and keep in mind any other requirements that they suspect may appear. Modern development approaches recognize the need for architecture to be as extensible and flexible as possible, because that initial set of requirements is never, ever complete, and today's greenfield projects are tomorrow's legacy systems.
Techniques such as adding an API layer and making the subcomponents modular can be used to make applications flexible and extensible.
How can we...