A great many changes affecting staffing and human resources are afoot in software development. We explored the overall impact of Agile software development on human resources in a previous Executive Update.1 Agile was the first and most disruptive of the recent changes, but now things have moved on to the DevOps movement. DevOps brings together development and operations and requires new skill sets. Many of these new skills overlap with those previously discussed, but there are differences because DevOps not only extends agility, it also creates new roles based on the merger of operational and developmental skills.
As we explore in this Update, DevOps requires greater communication and coordination between development and operations in order to facilitate the rapid releases of working software. It is based around principles that have become well established in Agile development and are accelerating with mobility. Apps need to be developed and deployed rapidly, updated regularly, and they have to respond immediately to user demands. The need for apps to integrate with existing enterprise software is pushing DevOps ideas deeper into the development environment.
As with Agile, the changes that come with DevOps are part of a gradual evolution that has been occurring since the 1970s. Critical to DevOps are the emerging Agile concepts of continual increase of usable code, constant testing, and release of features in small timeboxed sprints. As the window to test and release new code becomes smaller and smaller, the shift to a more flexible and immediate release arrangement becomes necessary. DevOps makes it possible to release new software constantly, as well as adding capability to add new features and understanding user needs directly from the user base.
While DevOps and agility add to the ability to develop usable code solutions and respond flexibly to changes in the business environment, they also introduce a requirement for changes across the organization. The staffing needs are significant and diverse.
STAFFING IMPACT OF DEVOPS
DevOps affects staffing across a range of areas, making it necessary to readjust hiring policies and expectations. Foremost is an enhanced need for collaborative practices and skills, which applies to all development team members. DevOps demands close cooperation across disciplines. This is likely to require special training, plus improved communication between teams and across functional areas. Those responsible for operations need to be included in the development cycle at an earlier stage to ensure smooth rollouts and to make sure infrastructure requirements are met. Developers need to understand rollout needs in advance and aid in automation of the production environment.
There are also infrastructure issues that will require experience and/or training. These changes support continuous release, generally around developing and releasing to the cloud. The specific changes required will differ according to the business and its IT profile, but they will be consistent with current trends. Software used in development will need to be better integrated, and supported by solid processes. Everyone involved in development will need to have greater familiarity with software used across the entire release cycle. Solutions need to automate deployment wherever possible, integrate development and operations management environments, permit information sharing, and ensure immediate access to the same version of software.
A current focus is on the development of a "DevOps engineer" role. But in addition to creating a role to augment or replace the systems administrator (SA), it is important for development team members to acquire a wider range of skills and be more conversant with the expanding development environment, from coding to release. As with Agile development, all members of the project team should have shared proficiency in basic tasks and perhaps some deep specialty expertise. They also need to understand what happens to the software once it has been released and must have a role in the continued maintenance of that software. DevOps will have additional effects within the Agile development environment, such as placing a greater emphasis on operations issues in sprint feature prioritization. This will enhance the need for understanding of operations within development teams.
DEVOPS ENGINEERING
DevOps is so recent within the staffing environment that there is a great deal of uncertainty as to the skill sets that it actually requires. There is a huge and growing demand for DevOps engineers, but nobody has yet decided exactly what that role encompasses. The DevOps engineer role centers on the operations side, focusing on developing a new skill set to aid in software rollouts and bridging the gap between development and usable software. The starting point is generally the SA, who is frequently drafted into DevOps support.
The SA has often had the role of guiding software to the end user and facilitating its operation. The new role requires more collaboration with development personnel and direct feedback into release schedules. The actual job requirements for a DevOps engineer must include coding and scripting capability; standard systems administration skills and understanding of systems-level operations; understanding of automated procedures and systems used in releasing code; and a deeper understanding of the development environment itself. Experience with open source solutions, knowledge of business software requirements, and an understanding of data management and database tools are also important -- as is familiarity with QA techniques. This role also demands considerable skill in collaborating with developers and in serving as a contact point for users when rolling out software.
The potential skills list for the DevOps engineer role is long, and there are considerable differences in expectations according to development environment, size, and industry. This has always been the case with operations roles, since they mediate between the closed world of development and the outside world of practical software use. There are, however, enough basic commonalities to create a trainable role.
Finding individuals capable of fitting the DevOps engineer role is likely to be difficult. There are thousands of job descriptions on sites such as LinkedIn and Dice that describe the role. At the same time there is a continuing crisis in availability of SA personnel, particularly at the junior level. Systems administration is not, it would appear, a choice job for young software engineers entering the workforce. Yet development of a DevOps engineering role would seem to be best suited to those who begin with SA skills. Internal development of DevOps personnel might come from any area, although SA is generally the best place to start. Some additional training is required, such as improved coding practice and an introduction to the development environment.
MAKE VS. BUY
Also important to the DevOps staffing question is deciding whether expertise should be acquired from outside the firm or internally developed. Most companies will find it easier to produce a DevOps operation using consultants, but the greatest benefit is likely to come when an organization trains its current employees to participate. By broadening the scope of existing skills within project teams, it becomes possible to build on existing specialties, retain valuable knowledge that exists within the firm, and create a development environment that better meets business requirements.
Implementing DevOps presents an opportunity for learning and improvement that can benefit the whole organization. The objective is not just to install a Band-Aid solution to meet a few immediate goals, but to foster organizational change that will result in better processes, more efficient release cycles, and more responsive software. Part of the benefit lies in the implementation process, so it is important to go through the exercise rather than attempting simply to add a purchased solution. Requirements are also likely to be very unique to each organization. Certainly, the road to DevOps goes through training (see Figure 1).
Getting started will, however, often require external consulting, and new hires may be needed to get up to speed. But this should always be supplemental to the main objective, which is to implement an internal DevOps program that is uniquely fitted to your organization.
CONCLUSION
DevOps continues to gather momentum and it clearly represents the wave of the future. It is consistent with current movements in software development and represents a natural growth from the Agile movement. For some companies, particularly those that are smaller and vested in Agile techniques, there is very little difference from how things are currently being done. For others, however, the gulf is considerable. Without the other elements of agility, DevOps would be difficult to implement, indeed.
DevOps requires a rethinking of roles and a reboot of the software distribution model. The traditional grind of the waterfall systems development lifecycle becomes difficult to imagine when software is smaller, more modular, and released frequently with constant testing. Thus, supporting this model demands new skills and different toolsets.
In some sense, this is a changing of the guard. Roles have been changing for years to support a more fluid environment. This has led to a great deal of uncertainty in hiring and HR support, but it needs to coalesce around a new vision. The key issue is agility, but part of the framework that supports this is DevOps. Companies need to gear up their development teams to support critical changes in software coding and delivery. This requires reviewing current practices in locating, training, and fitting people to these roles.
ENDNOTE
1 Dooley, Brian J. "Agile's Impact on Staffing." Cutter Consortium Agile Product & Project Management Executive Update, Vol. 15, No. 23, 2014.