Deliver an Agile Enterprise with Automation
The Agile Manifesto changed the world of software development, but extending its benefits to the wider enterprise requires automation
The Agile Manifesto has been with us for more than a decade and a half – the maturation of the RAD and Extreme programing paradigms, it’s been the de facto approach to software development since its inception. Irrevocably altering our approach to programming and reshaping the technical landscape, its features are well known and in the automation blog we’ve discussed its concepts, characteristics and benefits in depth.
So how does automation fit into the picture?
The Manifesto seeks to overhaul existing project management techniques and enable the business to become more fluid. Automation extends this philosophy from a single app with multiple teams (which can simply be handled by continuous integration (CI) tools such as Jira or Jenkins) to enterprise standardization and composite/hybrid apps.
From Continuous Integration to Enterprise Wide Automation
Software is typically developed by several teams in conjunction. Individual agile teams may be responsible for a single component, but upon completion all the disparate parts must be able to pull together to create a functioning application; which is why CI came to be. CI demands that each change be merged with the other disparate parts and automatically build tested to ensure the whole project is in a shippable state. It’s tempting to stop here.
But if the end goal is to attain continuous delivery (CD), agility needs to be brought not just to the deployment pipeline but to the enterprise as a whole. This is dependent upon small updates derived from close collaboration with the business, team members and customers.
The self-organized teams of the agile methodology seek to deliver rapid-fire software iterations, which are continually evaluated and form a part of a whole release. But without a solid spine of automation, such an approach becomes limited in velocity and scale. Too much time would be wasted on building components, preparing them for deployment in multiple environments and checking the codebase for errors.
Furthermore, scaling and standardizing CD across the enterprise is difficult because teams in each department use different tools. CD is therefore reliant upon automation to help orchestrate each stage of the process, and handle the deployment of every application code change to every environment in a consistent and repeatable manner. Ultimately automation enables a constant flow of updates and releases to the end-user.
The goals of the Agile Manifesto were as evolutionary as its consequences have been revolutionary, and today the vast majority of modern non-blocking, 12 factor, cloud-native architected apps tend to be built upon agile principles. However, bringing agility to the legacy systems these modern apps are interconnected with presents significant challenges that only standardized and scaled automation can address.
Indeed, it seems hard to believe we’ve been working toward the agile enterprise for over 15 years, and yet during this time the adoption of agile practices for core backend and legacy systems has been almost non-existent. Continuous delivery automation is the only way to bring agility to legacy systems and make existing agile systems more compliant and safe. The agile enterprise is not a pipedream, but a lot of work and creative thinking will be required.