Refresh 007: Ending Legacy Code
Last night, Refresh the Triangle hosted an energizing "call to arms" talk by Stuart Halloway of Relevance on legacy code. He started off by defining legacy as the degree to which code fails to communicate intent and how much "ceremony" it has. As he elaborated on this, he explained that his goal is to have code that has as much essence (code that communicates intent) and as little ceremony (code that hides intent) as possible. He went on to discuss methods to reach this goal, including continuous integration, unit testing, full code coverage, and "relentless review and audit." For the kicker, he talked about a three-layer system that encourages as little legacy as possible: a base or stable layer of Java (or some type of virtual machine), a dynamic language layer, like Ruby, and lastly, a domain layer utilizing a DSL that just captures intent. He's posted his slides if you want to dive a little deeper.
It was exciting to see that a number of these techniques are already being implemented here at Viget. It'd be great to hear from other people about their attempts to end legacy.
We had a great turnout, with a number of new faces, and there was a lot of good post-presentation discussion, thanks in no small part to our wonderful host, the West End Wine Bar. Thanks again to Stuart, and all the people that made it out. We've posted some pictures on Flickr, taken by our resident photographer, David.