Software development is becoming quicker and more iterative, creating shippable products very frequently and very quickly.
Continuous delivery of software, or Agile development, follows a series of processes designed to feed the coding machine and pump out product on a regular basis. This set of processes helps improve code quality through comprehensive automated testing, and streamlines processes to get little bundles of functionality out the door and into the hands of customers more rapidly. This orchestration of events must be governed and controlled with significant rigor and discipline to be successful.
Agile is not for the faint of heart and many organizations fail when attempting to implement this methodology. Those that do succeed do so after a potentially lengthy transition process, and may take a long time to realize any savings or revenue growth. The entire organization must be committed to the concept, and company culture should be carefully considered before making the leap.
Considerations prior to transitioning to a continuous delivery model must occur at the project, program, and organizational level. Answering these open questions is essential for a successful transition to occur:
Does the organizational structure support frequent, iterative releases?
For some businesses, the organizational process of prepping the help desk, preparing documentation, performing training on the new product, updating marketing collateral, and more, have lengthy lead times that may be longer than the development cycle.
Is the company culture collaborative or do departments perform in silos?
Departments that can’t cooperate or function efficiently will be a dam in the release flow.
How will the project be authorized to launch?
Does launch approval depend upon many levels of executives deeming it adequate? Are politics involved? How quickly may an approval flow be completed? Are there potential bottlenecks to this process?
What are the governance requirements within the organization, and will they tolerate iterative releases?
For large companies, the initiation and approval for a project may take months before the project even hits a developer’s desk.
What is the skill level of the development team?
Agile development requires quality coding and quality testing. Automated testing must have comprehensive test scripts created for full coverage of code testing.
What are the requirements for a release to occur and who must be involved?
Will those people have backups who can keep the process moving should the original member be unavailable?
Are there code freeze windows or black-out dates when launching new code is forbidden or highly dissuaded, such as the retail holiday shopping season?
One of the keys to success with Agile and continuous delivery is automation every step of the way, from governance and initiation through development and testing. The happy outcome arrives at implementation and receipt of feedback, and the teams repeat these cycles ad infinitum. The majority of steps A through Z can be done programmatically even including server management (building and partitioning to bouncing servers and performing cleanup) and the release process. The more automation involved, the more efficient this system becomes and the less human error is introduced into the mix.
For continuous delivery, the name of the game is efficiency. The transition to Agile software development can be time consuming and challenging but the ample rewards are worth the hard work. Competitive advantage, increased return on investment, and higher customer satisfaction are just a few of the benefits that may be realized when the goal of continuous delivery has been achieved.