Agile Code for Agile Teams

While technical practices such as refactoring, design, and testing are essential to a successful agile project, avoid having purely technical tasks on the product backlog. Rather, consider how doing these tasks furthers the progress of the project. When working on backlog items, always consider effort required to refactor, design, and so forth as part of the estimate, since delivering code that can sustain change is essential to agile success.

Delivery and Deployment
Working software is the measure of progress in an agile project, but “working” means more than just “can demo” or even “compiles and passes automated tests.” Software isn’t useful and stakeholders cannot provide useful feedback on it until it can run on the target environment. Also, to be “done,” you need to address differences between a development system and a production-like one. There are two steps to building code in a way that supports an agile approach: developing in vertical slices and deploying early and often to a target environment.

The vertical slices approach is to develop end-to end features, from the user interface (UI) through whatever backend systems are involved. Rather than focusing on the data model or the UI or application tier, building end-to end (though less rich) solutions has advantages. Users can see the application do something. A “data model,” while important, is not easy to demonstrate. The team can validate the interactions between layers and make changes to make work at other layers easier, thus minimizing unnecessary rework. UI implementation can be influenced by decisions made at the data layer, for example, and vice versa. The team and product owners can understand what feature are truly necessary and have a better sense of what to defer if something is late.

Make your application available on a target system early and verify the deployment and installation process often. This will give you an early opportunity to identify decisions that will simplify the deployment and configuration process.

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.