At the recent IBM Innovate 2014 in Orlando, Florida, IBM launched its strategy for application lifecycle management (ALM) in the world of software-rich product manufacturing around continuous engineering (CE) and DevOps. These concepts have been tried and tested within IBM, which as one of the largest software producing companies in the world has transformed its own software development activities. The biggest challenge for IBM was to speed up the time it took to make even minor changes to software applications, where the front office (user interface, client-side components) were often changed in contrast to the slower changing back office.

As a result of the transformation, over a period of six years IBM has reduced the time between releases of its on-premise products from 12 months to three months on average. Also of significance is the percentage time spent between innovation and maintenance, with IBM finding that the former increased by 20%, while the latter was reduced by 20%. This offers helpful insight for other organizations engaged in developing software on a large scale and that want to transition toward greater agility with the adoption of DevOps and principles of continuous improvement.

IBM needed to compete more effectively and that meant faster time to market

IBM is a company that faces many challenges in developing its software. Inhibitors include the complexity arising from acquisitions (IBM injects new products and talent into the company through a regular acquisition policy which in itself is a massive absorption challenge), globally distributed development teams, and other cultural barriers. The siloed nature of many activities and traditional organizational structures meant that speed to market needed to improve to enable the company to compete more effectively against smaller and nimbler rivals. The relatively slow feedback cycles, slow deployment, and buildup of technical debt meant that maintenance and operations time (at over 70%) ate into innovation time.

The blueprint for the DevOps adoption was to first establish business objectives, then assess current capabilities and identify where the next steps were to be taken against a DevOps maturity model. This was followed by carefully monitoring and identifying the bottlenecks and pain points that were impeding progress, and then identifying improvement actions to eliminate the pain points. This process was repeated to continuously improve the transformation to greater agility. The record to date, as IBM reported at Innovate 2014, is that the DevOps and continuous engineering initiatives have delivered substantial benefits.

IBM derived clear benefits from transforming its software development around DevOps

IBM segmented its DevOps process into four parts of the lifecycle: steer, develop and test (devtest), deploy, and operate. Over the transformation period, a process of continuous improvement was applied across the lifecycle. In steering, the practice of release prioritization and planning was gradually broadened to include business process refinement to ultimately portfolio optimization. The devtest activities were transformed by creating automated test coverage and faster delivery times. Deployment was improved with the absorption of the Urban Code acquisition so that in addition to self-hosted deployments, SaaS deployments were made possible. The operations activities benefited from the creation of online communities, performance monitoring, and use of A/B testing. A/B testing follows Lean Startup principles of randomly directing website traffic to two copies of a site (without the user being aware) where only one change has been made between the sites. This enables true testing of customer behavior against a change.

The creation of DevOps led to consistent deployment from development into production, with a typical deployment time reduced to 20 minutes, and a 90% reduction in test deployment costs through a 75% reduction in deployment labor. Automated deployments (continuous delivery) are estimated by IBM to be now saving over $2m a year. Fast speed to market, a key requirement, was achieved with minor fixes released in three weeks, and major releases in three months.

The effect on quality was also substantial. Integration testing went from once every two months to daily. The cycle time from build to internal customer saw a reduction from 14 days to three hours. Deployment time decreased from five hours to five minutes.

Naturally, IBM used its own tools to support these transformation initiatives. Continuous business planning used Rational Focal Point and Rational DOORS Next Generation (the new requirements management tool). Collaborative development used Rational Team Concert and Rational Lifecycle Integration adapters, continuous release and deployment was supported by IBM UrbanCode Release and Deploy. Finally, on the operations side, the capability to continuously monitor was facilitated by SmartCloud APM and SmartCloud Control Desk, as well as continuous customer feedback and optimization through IBM Tealeaf and IBM Digital Analytics.

DevOps for large-scale software development

As one of the world’s biggest software developers, IBM has a keen interest in making the process of building complex software more agile, higher in quality, and lower in cost. IBM is now in a position to take the lessons that it is has learned in its internal transformation and offer these to its customers. If your organization makes a significant investment in software development and is also embarking on a large-scale agile/DevOps initiative, then it would be helpful to talk with IBM to see how you can benefit from its experience.