Greenfield Research vs. Greenfield Development

greenfield

So-called "greenfield" development is the holy grail of programming projects. Everyone wants to be able to work on a brand new project, to start fresh with a clean slate. You choose the language and libraries. You can use the latest and greatest tools. You control the whole architecture. No legacy code to get in your way. No dependency hell from a bloated code base. You can start with good practices from the ground up. Yes, this time you're going to do it right!

Starting fresh with a new project is a great feeling, and a great way to try out different architectures and get a broad set of experiences. Some web dev shops get to do this all the time. They develop a new website for a client, take it to the first release, then hand it over to the client for maintenance. They have the constant opportunity to start over and try again, working in different domains, and interacting with different technologies. This is a very attractive proposition! After all, who likes being pigeonholed?

This contrasts starkly with research projects, in my present experience. Getting a research project started is a lot of hard work. You have to work for months to just set up the infrastructure that will support your experiments. Those are months in which you aren't working directly toward a publication, which also means you aren't advancing your career. Sometimes you learn along the way, which is a big plus, but in many cases you are just putting in frustrating hours of work as a prerequisite.

Robotics is particularly severe in this case. Let's say you want to test a single algorithm; navigating with moving obstacles, for instance. This requires: a fully functional robot, software to control the robot (which usually needs to be very precise), working odometry, well-calibrated vision sensors, having those sensors integrated into a perception pipeline, communication between multiple modules, and an interface to control it all. A huge amount of development goes into enabling just one experiment.

But then, once all of that is up and running, and you can maintain it, oh what sweet joy! Now all you have to do is tweak your system. Want to try a new idea and run a brand new experiment? All you need to do is swap out the navigation algorithm. Want to enter a brand new field of study in the perception area? You can do that too! Just keep the standard navigation module, and swap out the perception module instead.

The time you invest initially in a research project is compounded interest over time, and once you gain that momentum you're really rolling. But it's a lot of work to get there initially. So a surprising insight I've had recently is that brownfield development is actually much more attractive in research than greenfield.

Who would've thought?

Tagged , , . Bookmark the permalink.

One Response to Greenfield Research vs. Greenfield Development

  1. Eastwestmath says:

    Not everyone can allow himself to start a greenfield project. This is much time and efforts. Research is often more effective.

Leave a Reply

Your email address will not be published. Required fields are marked *