Agile Code for Agile Teams

With an agile approach, some degree of consensus on how to evaluate completeness is critical. Without a good understanding of what a complete story is, the team cannot estimate accurately and, thus, cannot set expectations. Not being able to set expectations can cause a breakdown in trust between the team and the product owner. Without trust, it’s harder for management to accept the idea of self-organizing teams, thus negating the efficiency benefits this approach provides.

Quite often, even the product owner is unclear about what to ask for. In these cases, it’s best to make decisions and acknowledge that you may be wrong rather than work with difficult-to-evaluate stories.

The developers on an agile project can contribute to project success in the face of uncertainty by working towards maintaining agile code.

Agile Code
Understanding the needs of the agile planning process, we can now talk about how engineering practices meet the needs of agile methods and drive them when they are lacking. Regardless of the agility of your product backlog, to be an agile team you need agile code. Agile code is code that you can change while still being able to deliver working software on a regular basis.

Agile code can be maintained by a combination of good design and having practices in place that provide constant feedback on the state of your code so that you can detect problems as soon as they occur. These practices include:

  • Automated unit and integration tests in combination with continuous integration, to provide immediate feedback on the effects of a change to the code
  • Refactoring and continually improving the structure of code while maintaining functionality
  • Frequent deployments to a production-like environment to identify issue before they can cause a last-minute emergency and to make the application visible to stakeholders

By maintaining code in a working state and in a state where it is easier to change, you make it possible for the team to implement changes to a product backlog that a product owner might ask for.

About the author

Steve Berczuk's picture
Steve Berczuk

Steve Berczuk is an engineer and ScrumMaster at Humedica where he's helping to build next-generation SaaS-based clinical informatics applications. The author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, he is a recognized expert in software configuration management and agile software development. Steve is passionate about helping teams work effectively to produce quality software. He has an M.S. in operations research from Stanford University and an S.B. in Electrical Engineering from MIT, and is a certified, practicing ScrumMaster. Contact Steve at steve@berczuk.com or visit berczuk.com and follow his blog at blog.berczuk.com.