?Can you really do Agile software development without being DevOps-enabled?

I believe that to be Agile, you need to be able to release software out to your customers early, and frequently. If you can’t do this, then you can’t gain the key benefits.

To be able to release to ‘production’ in a low-risk manner, your organisation must be DevOps-enabled. In this article, I will outline an approach that we take at Bulletproof to ensure our product (or project) development teams are DevOps-enabled by using cross-functional groups.

Why Agile?

In my experience as an Agile coach, the main reason organisations are interested in Agile transformation is that they want to be innovative and adaptable.

They want to stay ahead of the competition and deliver their product to market first. Once it’s first released, they want to be able to adapt it quickly to changing market demands.

Innovation is possible by ensuring a team is able to release a minimum viable product (MVP) out to the market (or to internal users) quickly. Because it is a product with only a minimum feature set, real customer feedback is received and incorporated into the product without a huge up-front investment.

The product evolves into something that better meets market demands. In other words, we start with something simple that meets a key business requirement and then add more and more functionality, to incrementally add features to the product and incorporate quality feedback from users/customers.

Obstacles to Agile transformation

One of the main obstacles that stops a software development team from truly being Agile is the inability to release out to a production environment up-front, when the first MVP is ready to go; and then frequently beyond that.

Setting up environments can take days rather than hours. And automated tests are often written late and may not reduce the risk that new features will break existing product functionality.

Make it easy to release early and frequently

To enable your team to release out to production early and frequently, your development and operations teams must work very closely together to ensure that it is easy to release quality software out to customers.

Your delivery pipeline needs to be automated so that a number of ‘quality gates’ are met (using continuous integration) before software is actually released out to customers.

To ensure that the software will actually work in the production environment, it must be designed with cloud infrastructure or services in mind.

To accomplish this at Bulletproof, we embed a cloud solutions engineer in every cross-functional Scrum team. A team is not just made up of software developers, but also someone with cloud infrastructure expertise.

How to make cross-functional teams work

Different team members contribute different expertise but all will benefit by learning skills from each other, leveraging techniques such as pair programming and code reviews.

By having cross-functional skills, the team helps each other out when issues arise and ensure that together they can still meet their common goals through self-organisation.

Software developers provide expertise in writing quality software and associated XP development practices, whilst the cloud solutions engineers provide expertise in automation and cloud infrastructure.

Quality assurance engineers work closely with the team to bake automated testing into the CI/CD pipeline so that the team feels comfortable that when they commit new changes, they are not breaking existing functionality.

What happens if Dev and Ops don’t collaborate

I have found that for DevOps enablement to actually work in this manner, this cross-functional Scrum team must have a common goal set by the product owner.

If the team does not have a shared understanding of the project/product goals, then team members will design a product that either doesn’t meet the customer needs, or doesn’t work with the cloud infrastructure provided.

For example, if the cloud solutions engineer does not fully understand the product goals, decisions could be made on the database infrastructure that could greatly impact performance or cost.

If a web application is being built, the entire team needs to understand how users will be interacting with it. The team must understand how many users are expected and how often they will be accessing the online product catalogue or making purchases.

If the interface must retrieve large amounts of data frequently, different decisions on the database options (like storage and instance size) in the cloud must be made – otherwise this would have a significant impact on the usability, performance and even running costs of the web application.

In summary, for an organisation to be Agile (innovative and adaptable), they must be able to release quality software out to customers early and frequently.

The best way to do this is to ensure your Scrum team is cross-functional and includes not only software developers, quality assistance, but also cloud solution engineers.

By having members of your team with both software and infrastructure/automation expertise, this will help your team become ‘DevOps-enabled’.

To make this work, and deliver a tangible and successful product that can rapidly adapt to market demands - everyone needs to have a shared understanding of the product goals.

Lorraine Pauls Longhurst is the agile delivery manager in the Products Division at Bulletproof. Lorraine is a seasoned Agile coach and certified scrum master with over ten years of Agile experience managing software development projects; having presented at multiple conferences including Agile Australia and Scrum Australia.

Copyright © 2016 IDG Communications, Inc.

Security vs. innovation: IT's trickiest balancing act