Creating Habitable Code: Lessons in Longevity from CruiseControl
A major challenge for software organizations is creating software that can continue to adapt and change over time, a code base the team can live with. This session reviews the lessons learned from CruiseControl, a popular tool for continuous integration. CruiseControl is an open source success story not only because it has had over 400,000 downloads but also because it has successfully contributed to by over 200 different people. For practitioners who are tired of brittle code that must be discarded and rewritten CruiseControl provides valuable lessons.
This is a talk that we presented at Software Development Best Practices that was (largely) well received. The talk is a pair presentation with audience interaction — lots of raising of hands in response to our questions, lots of opportunities to ask questions.
The story of our talk is that the CruiseControl projects had many elements that you would expect to lead to trouble in a typical project:
- Long lived code base
- Distributed team
- Large team
- People coming and going from project
- Technology changes
But CruiseControl has managed to survive factors and we thing the reasons why (see learning outcomes) would be useful for enterprise projects as well.
- design elements: inversion of control, dependency injection, separation of concerns, open/closed principle
- role of a project architect
- high visibility commits
- involving new developers
- the advantages of ignoring technology hype
- remediating inhospitable code