問題描述
棕地與綠地開發? (Brownfield vs Greenfield development?)
這不是一個有準確答案的問題(嚴格來說,最好通過民意調查獲得答案,但該功能不可用),但我真的對答案很感興趣,所以無論如何我都會問。
在你的職業生涯中,你花了多少時間在greenfield 開發與 brownfield 相比?
在過去的 10 年中,我估計我在綠地上花費了 20%,在棕地上花費了 80%。這是典型的嗎?
參考解法
方法 1:
I think it's typical for professionals who deal with customers to spend more time in brownfield development. The reason is that customers typically aren't willing to throw out their existing software to adopt the "latest and greatest" (green) software.
Developers in research or academics, however, may be more likely to do greenfield development. Start‑ups as well.
方法 2:
I think that your ratio 20:80 is representative of many/most developers. As to new development: if you are building software incrementally (Scrum, XP, etc) then one could argue that you spend almost all of your time in brownfield development. Except for the initial iteration/exploratory work, prototyping, even when you are building something new, you are already working on an established code base, refactoring and extending. So how much greenfield development is actually green?
方法 3:
Often the problem doesn't just boil down to brownfield vs greenfield. In some cases there is a valid opportunity for a hybrid greenfield/brownfield approach.
I have written an article called "Classic software mistakes: To Greenfield or Refactor Legacy Code" which discusses this exact subject and outlines a range of possible combinations then evaluates the consequences of each.
http://stepaheadsoftware.blogspot.com.au/2012/09/greenfield‑or‑refactor‑legacy‑code‑base.html
What may surprise some people is that a non technical attribute, company size, will be a big determinant in the choice of strategy and the likelihood of success of that strategy.
方法 4:
Over the past decade or so, I've always worked on software that was used as the center of my company's business. (Both SaaS and a software product.) And while I've always come into the with an existing system (so brownfield), we've usually put out a ground‑up redesign/rewrite (so greenfield.) So, to break to down:
- about 60/40 brown/green for the big projects, in number
- about 20/80 brown/green for the big projects, in time spent on them
- and nearly 0/100 brown green for little side projects
So, that is seems to be the opposite of you. It is the nature of the companies I've sought out, and hence the projects. My software is our company's main product, and that means I work on the same code base for years, usually after having created it from scratch myself/ourselves.
And I like it that way.
(by John Channing、Chris Gillum、Jim Bird、Volksman、Stu Thompson)