Olivier Bonsignour, Executive VP of Product Development at CAST, explains why industry standards must be implemented for the successful evolution of Agile and DevOps teams…
What began as a revolutionised way of managing IT developments, Agile has become the new normal. The past decade has evidenced the advantages of Agile, which extend by making development more efficient. Both user and development teams’ can now reach their goals quicker and smoother.
Why Agile with DevOps makes sense
Agile has become even more appealing, one could even say obvious, with the growing popularity of DevOps. Although they are not the same, they certainly ‘help’ each other and it seems rather difficult to excel in one without practising at least some parts of the other. DevOps could be seen as an extension of Agile principles. While Agile is a concept created independently of and before DevOps, it can be said that Agile achieves more when accompanied by DevOps practices.
Agile concepts have been reused in operations and non-IT functions, with more recent experience showing that DevOps can offer benefits beyond development teams as well. DevOps is most effective when approached by the global IT team at enterprise level. Gartner recently suggested that IT organizations should adopt Agile practices to assist in focused innovation and DevOps practices for safe and regular release of new software.
Teams using Agile must bear in mind that fast speed of change must be supported by a solid foundation and application structure
So even in terms of the expansion and adoption of new and better software, the two are linked.
Balancing speed and risk
A key benefit of Agile (and DevOps) is the flexibility it provides developers in responding to users’ changing needs, which is essential in today’s digital society. Agile shortens cycles between new requirements and the delivery of relevant features to the end user. DevOps offers a fast delivery of these changes.
However, it is vital that teams using Agile bear in mind that this fast speed of change must be supported by a solid foundation and application structure. Moreover, applications must be built in reliable architecture that is constantly adapted and refined in order to maintain agility.
At first, it may appear that a strict architectural approach is in conflict with Agile principles and methods. However, we are not embracing a rigid approach here. An appropriated architecture (at least in software) is an evolving thing. And an application does not necessarily have to be perfectly built from the foundation up (is this even possible?).
What is important is to regularly monitor your architectural blueprint, evaluate its efficiency and identify any non-compliant components or potential security gaps. Teams can leverage DevOps practices and tools to implement automatic check-ups that will verify the principles are met and that the changes are not bringing any risks or unexposed side effects. To achieve speed without risks, architectural blueprints must be constantly updated and easy to produce so they can support regular application modernization and adaptation over time.
Standards to ensure quality
By shortening the development cycle, Agile produces applications perfectly suited to the desired requirements with the ability to quickly adapt to change. DevOps helps to create better quality and ideal conditions to monitor the application with a focus on automation and fail fast.
Embracing standards will ensure quality in applications and help teams detect any software quality risks
While Agile and DevOps foster more speedy development and deployment, they do not inherently create quality or low technical debt. The now famous fail fast approach will certainly help to quickly identify defects, but IT organisations must go beyond fail fast in production by constantly shifting software failure identification to the left, keeping any disruption at low impact and cost.
One way development teams can avoid fail fast disasters is to measure software against comprehensive quality standards like those from the Consortium for IT Software Quality (CISQ), which look at the full architectural blueprint of an application. CISQ standards can be used in external vendor agreements to identify top violations of good coding and architectural practices in software development.
Embracing these standards will ensure quality in applications and help teams detect any software quality risks that would otherwise go unnoticed for months and cause sudden major outages – especially if implemented during the beginning, middle and end of the software development lifecycle. Even a minor increase of focus on these quality practices will guarantee a structurally sound architecture over time.
Approaching legacy issues
Since most applications remain part of larger systems, teams often have to balance legacy technologies with Agile. In many cases, these legacy applications are maintained by teams unfamiliar with Agile and the technologies involved are not optimised for Agile or DevOps. Likewise, Agile teams building the new component connected to legacy technologies are not always aware of the limitations posed.
This can result in workflow difficulties and a substantially greater risk of the project. To tackle this challenge, many take an Agile-DevOps approach to legacy modernisation which gives teams more control over operational issues.
Approach both applications from an architectural view to establish smooth, efficient and clear interactions between modern and legacy components. This approach will also help when tackling old, undocumented code as it will ensure the modern front-end services do not over-trigger the legacy back-end.
The major challenge for teams in 2017 will be integrating an architectural, comprehensive system-level view with their existing Agile and DevOps practices. They will have to take a short break from bringing new functionality to the market and draw their attention to system-level analysis to allow Agile and DevOps to reach their full potential.
Combining fail fast with system-level analysis will empower them to quickly treat bugs and proactively prevent huge outages.
For Agile and DevOps teams to evolve, they must implement industry standards like CISQ, equip themselves with a framework for quality improvement and proactively battle against software risk and technical debt. Embracing such practices are crucial to achieving success and contributing to business initiatives.