Ich bin mir also nicht sicher, ob diese Art von Entwicklungsmethodik jemals zuvor auf ein solches Extrem angewendet wurde, also dachte ich, ich würde es dokumentieren. Kurz gesagt, es ist wie testgetriebene Triplet-Programmierentwicklung.
Während der Geschwindigkeitsentwicklung unserer Alpha-Codebasis saßen vier von uns um einen Tisch im Büro in Berlin. Drei Personen (Vitalik, Jeff und ich) haben jeweils Codierer ihrer eigenen sauberen Räume des Ethereum-Protokolls. Der vierte war Christoph, unser Meister des Tests.
Unser Ziel war es, bis zum Ende von drei Tagen der wesentlichen Entwicklung drei vollständig kompatible Implementierungen sowie eine eindeutige Spezifikation zu haben. In der Ferne dauert dieser Prozess normalerweise einige Wochen.
Diesmal mussten wir es beschleunigen; Unser Prozess war recht einfach. Zuerst diskutieren wir die verschiedenen Konsensveränderungen und beschreiben sie formell so gut wie möglich. Dann knacken wir jeweils die gleichzeitigen Codierung der Änderungen und stecken unsere Köpfe über mögliche Klarstellungen zu den Spezifikationen nach Bedarf. In der Zwischenzeit entwickelt und codiert Christoph Tests und bevölkern die Ergebnisse entweder manuell oder mit dem am weitesten entfernten Umsetzungen (C ++, allgemein:-P).
Nachdem die Änderungen eines Meilensteins codiert sind und die geschriebenen Tests anhand der von Christoph erstellten gemeinsamen Testdaten getestet wurden. Wo Probleme gefunden werden, debuggen wir in einer Gruppe. Bisher hat sich dies als effektive Möglichkeit erwiesen, schnell getestetes Code schnell und vielleicht noch wichtiger zu erzeugen, um eindeutige eindeutige formale Spezifikationen zu liefern.
Gibt es weitere Beispiele für solche Techniken, die bis zum extremen Bereich genommen werden?

