Sunday, April 11, 2010

Faster Codebases

Continuing with the idea of code design and productivity, a colleague recently shared some keen wisdom: "Creating an agile team begins with an agile codebase."  As the last post discussed, productivity and code design are clearly related.  What's interesting is to expand this idea to the entire spectrum of agile development.

Many of agile's mainstays -- quick iterations, releasable software, and continuous integration -- all require a codebase that makes these possible.  And that goes back to two main ideas: de-coupling and encapsulation.  Those principles, in turn, make the following goals a lot easier:

  • Simple, effective unit tests (tight coupling leads to brittle, cumbersome tests that are really integration tests)
  • Easily deployable software (tightly coupled code is hard to deploy without breaking other parts of the system)
  • Team scalability (a team can't grow quickly if each member has to intimately understand the entire codebase)

I used to think re-factoring was a process that could happen slowly in parallel with business goals.  But now I realize it needs to be an end in itself, in order to support not only productivity, but a growing team and an agile environment.

No comments:

Post a Comment