DevOps requires participation and cooperation.

DevOps requires participation and cooperation.

There is a general consensus that Agile frameworks are effective for delivering business value. Approaches and frameworks such as DevOps are often leveraged to ensure that Agile is both effective AND efficient.  Using a DevOps approach becomes even more critical for efficiency and effectiveness as projects, programs and organizations get larger requiring more collaboration and coordination. DevOps is a crucial tool for helping teams ensure deployment readiness and that the proliferation of technical environment and tools are effective when scaling Agile.

Implementing DevOps requires the involvement of a number of roles to deliver business value collaboratively. Involvement requires participation to be effective. Participation between developers, QA and TechOps personnel as part of the same value stream begins at planning. The Scaled Agile Framework Enterprise (SAFe) makes a strong statement about involvement and participation by integrating DevOps in the Agile Release Train (one of SAFe’s core structures). Integrating the concept of DevOps in the flow of a project or program helps to ensure that the team takes steps to maintain environments and deployment readiness that extend from the code base to the needed technical environments to build, test and share.

Deployment readiness includes a significant number of activities, all of which require broad involvement. Examples of these activities include:

  1. Version control. Version control is needed for the code (and all code like objects) so that the product can be properly built and that what is in the build is understood (and supposed to be there). Version control generally requires software tools and mutually agreed upon processes, conventions and standards.
  2. Build automation. Build automation pulls together files, objects and other assets into an executable (or consumable for non-code artifacts) form in a repeatable manner without (or with minimal) human interaction. All of the required processes and steps, such as compilation, packaging or generation of installers. [FRAGMENT] Build automation generally deploys and validates code to development or testing environments. Similar to version control, build automation requires tools, processes, conventions, standards and coding the automation.
  3. Deployment automation. Deployment automation is often a specialized version of build automation whose target is production environments. Deployment automation pushes and installs the final build to the production environment. Automation reduces the overhead, and reduces the chance for error (and therefore saves effort).

Professional teams that build software solutions typically require multiple technical environments during the product lifecycle. A typical progression of environments might be development, test (various) and staging. Generally the staging environment (just prior to production) should be the most production like, while development and test environments will have tools and attributes that make development and testing easier. Each of these environments needs to be provisioned and managed. DevOps brings that provisioning and management closer to the teams generating the code, reducing wait times. Automation of the provisioning can give development and testing teams more control over the technical environments (under the watchful eye of the TechOps groups).

As projects and programs become larger the classic separation of development from TechOps will slow a project down, make it more difficult to deliver more often and potentially generate problems in delivery. Implementing DevOps shortens the communication channels so that development, QA and TechOps personnel can collaborate on the environments and tools needed to deliver value faster, better and cheaper. Automation of substantial portions of the processes needed both to build and deploy code and manage the technical environments further improve the ability of the team or teams to deliver value. The savings in time, effort and defects can be better used to deliver more value for the organization.