Developers Should Write Papers
Many – but not all –
software developers would probably rather learn COBOL than capture and
analyze in a research-type paper the systems they have constructed. But, contrary to
popular belief, research papers are one of the best way to capture
the important aspects of a system in a concise and usable form. All developers
should write (or be made to write) a paper when they do something that is worth sharing with others. [A paper does not need to be an academic
research paper. It could be a detailed blog post like Joe Duffy's Blog, which contains the
equivalent information in a less formal format.] It cannot be a system
architecture description – hundreds of pages of detailed, hierarchical
description that no one can (or does) read.
Let me tell you a cautionary tale how Microsoft threw away
$100 million, with little or no return, because developers said, “writing papers is not part of my job”. In Microsoft Research, Galen Hunt and I ran the Singularity project to
write a modern operating system in C# . It was a highly visible project,
both inside and outside of Microsoft, and Eric Rudder, a senior VP, was
interested enough in our ideas to start a follow-on project called Midori to
produce a production operating system engineered along the same lines. Midori
ran for 4-5 years, employed up to 50 or so first-rate developers, and produced
a working system.
The team was given the charter to build the system “right,”
so they carefully thought about architecture, built innovative tools, measured
and tuned, and were willing to discard and retry until something worked well. As
expected, a team with this charter attracted top Microsoft developers, many at
the partner level, who relished a chance to implement a new system from scratch
with a strong engineering discipline. And, they came up with a large number of interesting,
innovative idea about programming language support for OS and parallel
programming, TCP stack implementation, building interfaces with functional
reactive programming, how to build efficient systems in managed code, and many other
topics.
But, pretty much all of this is lost (outside of Joe Duffy’s excellent blog posts. As the
project was maturing, Galen and I repeatedly asked people to write down what
they had learned, but the answer that we got was that they were developers and
wrote code, not papers. Their intent, of course, was that we (Galen and me, the
researchers they knew) should write the papers – they would happily share the
(millions of lines of) code. This division of labor does not make sense.
Neither Galen nor I had the time, nor did we know the details of the system and
the many alternatives that were examined and discarded. We could write papers,
but they would not be insightful, useful papers.
You can pretty much guess the rest of this story. The Midori
project was cancelled, so many of the people left the company or went to other
jobs, taking their hard-earned knowledge with them. Tragically, the brilliant
architect of the project, Chris Brumme, died abruptly last year, a further loss
as well.
What did Midori cost Microsoft? Assume a senior
dev cost Microsoft about $500K/yr in salary and benefits and there were 40 such
people on the project per year (I’m trying to be conservative). That’s $20M per
year, for 5 years, or about $100M. Given the seniority of the people on the
project, I would be surprised if it wasn’t far greater than $100M.
Of course, Microsoft still has the source code and filed some patents, but we all know how difficult it is to understand a new system of this
complexity and how valuable patents aren’t. It would have been great for
Microsoft to be able to point to a web page with 5 or 10 short and to-the-point
papers talking about Midori technical innovations. Google has papers on its key technical innovations, perhaps
because they embed PhDs in a product team not in a research lab.
Comments
Post a Comment