Next steps in the evolution of software development

Continuous integration/continuous delivery and deployment and DevOps promise to automate and strengthen development methodologies.

Shutterstock image (by robuart): application development, program code.

Software development is evolving. Agencies are moving from more traditional development methodologies to those that can more directly tie to strategy and mission success -- thanks, in part, to cloud technology. Waterfall has evolved to agile, and agile to continuous integration/continuous delivery and deployment (CI/CD). DevOps is the next step in that evolution.

Until recently, waterfall had been the standard best-practice approach to software development. Its value lies in its linear design. Ironically, that design is also its drawback. Because everything is done in a linear fashion, it is challenging to understand, for example, when a project is halfway done or whether what is being developed will still meet the customer’s needs when it’s completed.

Waterfall also encourages a more siloed approach to teams, with each discipline -- requirements, development, user experience, testing, operations -- working mostly independently from one another.

Those drawbacks are part of what led to the evolution of agile. Although that methodology is also linear, it is a time-boxed approach to software delivery that is fundamentally about dividing a project into small, predictable chunks of work and reassessing and adapting to changing needs. It’s also highly collaborative, with all the disciplines working together at every point, which means projects are far more likely to stay on course and on schedule and actually result in what the customer wants.

CI/CD builds on agile to automate the entire process from development and testing through deployment. DevOps, in turn, builds on CI/CD.

When moving to DevOps, one of the key additions to CI/CD is incorporating the operations team. With a cloud environment as a foundation, the operations team can (finally!) treat the infrastructure as code. That allows the team to, for example, develop scripts and then use those scripts to automatically spin up environments and conduct activities from testing through production.

If I could distill CI/CD and DevOps into a single sentence, it would be this: “Everyone work together, treat everything as code, iteratively develop, and automate everything -- continuously.”

The value of DevOps to the federal community

That cross-departmental and multidisciplinary involvement provides foundational value to agencies as they strategically align solution development with mission success because:

* Projects are broken into small chunks and implemented iteratively, letting agencies reprioritize and make changes at any point in the process as end-user or mission needs change.

* Stakeholders are involved throughout, and user metrics are continuously evaluated, allowing the needs of every group to be accounted for.

* The process is automated, so frequent changes can reach users quickly -- sometimes within minutes.

* All the disciplines are working together, significantly reducing risk and increasing quality.

Getting to CI/CD and DevOps in three steps

Any agency that has moved to the cloud can begin migrating to a CI/CD and DevOps method of software delivery today:

1. Embrace agile or some type of structured iterative development. It often takes a champion inside the organization to tout the advantages: lower costs based on more predictability, less risk in part through ongoing user acceptance testing and higher quality through collaborative and multidisciplinary teams.

2. Move toward CI/CD and full automation. Put the structure in place for the kind of development where, for example, code is checked in each night, builds are automatically migrated and testing is automated. You’ll need tools for this phase -- orchestration, testing, automation and container tools, for example. The good news is that most of them have open-source options, and the cost savings and risk mitigation that will result from CI/CD will far outweigh the costs of securing and managing those tools.

3. Make the final transition to DevOps by having the development and operations teams use CI/CD and by treating everything, including the infrastructure, as code. And ideally, move to DevOpsSec by including the security team in the CI/CD pipeline.

Remember that agile and cloud are fundamental to the entire process. Once they are in place, you can start the move to CI/CD and DevOps and immediately begin understanding the value of this evolution.