Making the transition from legacy methodologies, such as waterfall, to Agile development seems like a no-brainer. Delivering better-quality, more efficiently developed software applications is a goal that appeals to entire organizations: developers, IT departments and executives alike. The benefits of Agile are clear, but the actual move to Agile development can create problems as all parties push to build, test and deploy code faster. The resulting bottlenecks throughout the build-test-deploy cycle are not only frustrating but also costly enough to mitigate some of the inherent benefits of Agile development.
In this article, I list many of the common challenges faced by organizations transitioning to Agile and then suggest solutions to help overcome them. In virtually every case, automation is the answer. Automated solutions allow full implementation of Agile methodologies no matter how large the scale.
|Editor's Note: The author, Anders Wallgren, is the CTO of Electric Cloud, a vendor of automated application development products. We have selected this article for publication because we believe it to have objective technical merit.
Agile Adoption Challenge #1: Manual Procedures
The most common challenge in transitioning to Agile development is manual procedures. Developing software by hand is slow and tedious by its very nature. Coordinating scattered, dissimilar systems perform the software's work can be an overwhelming prospect, given how little commonality and repeatability exists among various tasks. The additional wrinkle of teams spread across different offices (which is increasingly common), makes it even more difficult to keep everyone on the same page.
The development process is also naturally prone to human error when reliant on manual procedures. With Agile, the sheer number of builds can actually increase the number of errors encountered during the build-test-deploy cycle.
The solution for this problem may seem obvious: automate your procedures. Comprehensive automation of the build-test-deploy cycle can replace manual, cobbled-together procedures with reusable, flexible templates. Enabling a single method that works across all platforms and across the entire development cycle allows for faster, more accurate iterations.
Automating the test process can also create reproducible systems that validate your software application build-test-deploy process up-front, allowing engineers to easily configure and provision different build paths. The result is a faster, more streamlined way to complete essential testing and integrate it seamlessly into the build process.
Agile Adoption Challenge #2: Performance Inefficiencies
The second-most common challenge is performance inefficiencies. Even one pass through a complex application's build-test-deploy process can take a long time. Complying with Agile methodologies often means managing hundreds of builds per week. Add to that the validation tests for each compilation required by each build and you have literally thousands of time-consuming tasks added to the pile.
The best way to handle this challenge is to divide and conquer. Parallel processing can easily solve performance inefficiencies by spreading the work across multiple systems and dividing the processes into smaller, more manageable segments. With this approach, managing hundreds -- or even thousands -- of weekly builds and tests becomes much simpler.