I am uncertain if this type of development methodology has ever been stretched to such lengths before, so I thought it would be worthwhile to document it. In essence, it resembles test-driven triplet-programming development.
During the rapid development of our alpha codebase, four of us gathered around a table in the Berlin office. Three individuals (Vitalik, Jeff, and I) were each developers of our own distinct clean-room implementation of the Ethereum protocol. The fourth individual was Christoph, our testing expert.
Our objective was to create three fully compatible implementations along with a clear specification by the conclusion of three days of intense development. Typically, this process over distance would require several weeks.
This time, we needed to accelerate it; our approach was rather straightforward. Initially, we discussed the various consensus-breaking modifications and formally articulated them as best we could. Then, each of us tackled coding the changes simultaneously, raising questions regarding potential clarifications to the specifications as necessary. In the meantime, Christoph developed and coded tests, populating the outcomes either manually or utilizing the most advanced of the implementations (C++, usually :-P).
After a significant set of changes were coded and the tests were completed, each clean-room implementation was evaluated against the common test data that Christoph compiled. Where discrepancies arose, we debugged collectively. Thus far, this approach has proven to be an effective method for generating well-tested code rapidly and perhaps, more crucially, for providing clear and unambiguous formal specifications.
Are there any additional instances of such methods taken to the extreme?