I’ve been blogging about the operational capabilities that allow for a successful Agile launch. (Missed those posts? Read part one and part two.) All five must be thoughtfully designed and incorporated into every company’s Agile operating model. Within IT, there are a series of Agile engineering practices that are required to drive productivity and product quality. These include:
1. Continuous Integration
A process and automation framework built on continuously integrating new software or features with those previously built so that teams can know instantly if bugs or defects have been inadvertently introduced into the system. The integration is done automatically during the project (no less than daily, and sometimes hourly).
2. Automated Unit Testing
Automated, developer-written tests run quickly and ensure that changes to the system occur in safe, incremental steps.
3. Automated Acceptance Testing
Automated, QA-written tests run on demand and nightly (automated regression) to ensure changes to the system haven’t broken previously tested and certified functionality.
4. Test-Driven Development (TDD)
TDD is a programming technique involving writing test cases first and then crafting the code necessary to pass the test. This approach creates instant feedback for developers regarding the quality of their code and opens up significant opportunities for test automation and improved product quality. When done well, this engineering practice consistently and dramatically drives down defect rates.
5. Building Software Features in Vertical Slices
This engineering approach is a shift for those accustomed to traditional project execution. Vertical slice development ensures that Agile teams are capable of getting to full completion on a set of system capabilities within each one- to three-week time-box.
6. Push-Button Releases
Push-button releases refer to the practice of being able to run one command and completely deploy the latest stable build to a defined target environment without further human intervention. Having everything automated to push out a new release greatly reduces the overhead and frees up more time for productive work.
This practice, used in conjunction with unit testing, ensures that teams make structural changes to the software without changing external features. This is done as part of evolving the architecture as development proceeds during each time-box.
The consistent and effective application of Agile engineering practices has been empirically demonstrated to drive team productivity and software quality improvements in the range of 100-200%. These engineering practices, coupled with the Agile operational capabilities, equip an organization to drive sustainable improvements to team productivity, quality, cycle-time responsiveness and innovation. If you are ready to get started with Agile, download our whitepaper that includes a complete listing of the operational capabilities you’ll need to develop. Overwhelmed? We can help—give us a call.