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