BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Using DevOps Automation to Combat DevOps Workforce Shortages

Using DevOps Automation to Combat DevOps Workforce Shortages

Bookmarks

Key Takeaways

  • The current industry demand for DevOps engineers outstrips supply, meaning 75% of future DevOps initiatives could remain unstaffed.
  • Automation as a means of reducing dependence on large DevOps teams can be more effective than supply-side solutions like employee retention initiatives, upskilling, and nearshoring.
  • DevOps tasks that automation should replace include security operations, deployments, continuous delivery, QA testing, and continuous integration.
  • With proper execution, automation tools and products can help significantly reduce developer workloads. 
  • Building automation without understanding the organization's needs or processes can quickly become a maintenance burden for organizations.
  • To succeed in automation efforts, team leaders should follow best practices such as maintaining an interdependent team culture and employing DevOps automation tools.

Introduction: Workforce Shortages

The well-documented demand for (and shortage of) DevOps engineers is a persistent itch that has remained unscratched for tech leaders worldwide. And it’s easy to see why. 

DevOps is the elixir of the software development lifecycle that intersects development (Dev) and operations (Ops). This skill set helps organizations build better products, ship faster, and implement customer feedback more efficiently - and is therefore in great demand. 

A recent DevOps Institute report predicted that 60% of organizations are either hiring or are likely to hire for DevOps roles in the future. The number of open DevOps jobs grew by 443% in 3 years, but DevOps Institute’s 2021 report also showed that 64% of DevOps leaders found it difficult to recruit for DevOps roles. This outsized DevOps demand against the supply of DevOps engineers drives the prediction that 75% of DevOps initiatives will not meet expectations

Let’s discuss some solutions.

So how can companies combat this Devops workforce shortage to reliably and predictably meet their business objectives? There are several options available for scratching the DevOps engineer shortage itch. 

Experts propose both preventative and responsive solutions to tackling the DevOps workforce shortage. The compassion camp takes the preventive view that organizations can retain strong DevOps engineers through a supportive, stimulating environment that values employees and nurtures their desires. Others propose upskilling junior developers or creating internal training programs that provide growth pathways within organizations rather than outside them. Yet, some responsively insist that nearshoring - hiring DevOps engineers from nearshore locations such as South America - holds the key.

While these are valid solutions, they only address the part of the equation outside our direct control - supply. Focusing on the supply part of the DevOps engineers shortage equation alone has several downsides. In understaffed organizations with overworked engineers, compassionate policies are like band-aids to a bleeding wound - they don’t work. 

Genuine compassion should incorporate measures that ease the workload burden. Similarly, upskilling does not reduce the immediate burden of DevOps engineer shortage. Instead, it adds to junior developers' existing responsibilities and takes resources away from critical tasks. A successful nearshoring initiative depends on the competence of chosen vendors and the employer's diligence in anticipating legal and team integration challenges. 

Without optimizing operations on the demand side, organizations are left exposed to a critical level of inconsistency (can nearshore employees overcome communication barriers, if any?) and uncertainty (will employees leave regardless - after investing resources in compassionate policies and training?). 

Especially with ‘the great resignation’ taking root after the pandemic, it is impossible to guarantee employee loyalty even with the best staff retention initiatives. 

DevOps automation is a better way.

Automation is a better solution because it focuses on the demand-side factors within our control. Leaders should leverage DevOps automation-first solutions to optimize operations and focus on 'demand-side' factors within their control. 

For example, optimizing infrastructure management helps reduce the number of engineers required for repetitive tasks. Automated processes require fewer DevOps engineers to oversee, reducing dependence on the limited pool of technical talent and relieving teams from the headache of manual DevOps fulfillment. 

A well-optimized DevOps process replaces slow, repetitive processes with effective automation. 

One significant benefit of this exchange is that automation introduces greater efficiency and speed into the SDLC (Software Development Lifecycle) in a way that humans can oversee but not replicate. This is because using technology (usually a PaaS) to execute DevOps tasks automatically enables rapid feedback loops between development and operations teams, allowing iterative updates to be deployed more rapidly. 

This new paradigm substantially shortens the SDLC and increases the deployment rate of software applications, as Codelitt (a remotely-distributed software development agency) recently discovered. By automating deployments with Convox’s infrastructure, Codelitt reduced its DevOps engineer requirements to just one DevOps engineer who spent a few hours each month on maintenance and other small tasks when needed. 

Automation reduces dependence on access to a large DevOps workforce while accelerating the SLDC through improved collaboration between existing teams.

So which DevOps tasks should automation replace in part or in full?

Automate Security Operations

The last decade has ushered unprecedented transformation in the IT infrastructure landscape, including agile computing platforms, remote working, and shared data. This transformation has also generated an increased spate of cyberattacks. In response, experts advocate for integrating security operations into the software development cycle rather than adding it on as an afterthought. As Brian Galura describes: 

"DevSecOps is a culture and tooling change that places responsibility for security at the build stage before the product is shipped to customers. This evolution has become necessary because of the sustained widespread increase in cyber attacks on many applications.” 

Automating security operations conserves limited DevOps engineer resources while streamlining security operations with programmable defense systems. This approach allows for the fulfillment of critical security operations with the minimum number of DevOps staffing possible. It removes engineers' dependency on manual intervention (which can prove cumbersome). 

Because speed is critical to the success of any successful DevOps strategy, security operations need to match the pace of continuous integration and continuous deployment.

Using automated tools to handle security operations allows teams to detect security threats immediately and rapidly deploy responsive counteractions. This significantly reduces the workload of security analysts, allowing them to focus on building better automation tools than manually dealing with security threats that are repetitive and easily detectable.

On the other hand, automation can also constitute a burden if executed poorly. Cost inefficiencies and over-automation are some consequences of poorly-executed automation initiatives. This comes especially when updates and maintenance commitments are not adequately catered for. To ensure that automation efforts generate a high ROI, leaders must thoroughly vet internal processes to qualify processes that should be automated. In addition, automation tools should be selected carefully and matched directly to the business objectives to avoid selecting tools that might end up cluttering the process. 

Automate Deployments, and Continuous Delivery

Automating deployments is a necessary step in the DevOps protocol. Automated deployments accelerate the transition of development projects from creation to testing to production stages with minimal friction - so that teams can deploy applications more rapidly. 

To align with CI/CD best practices, experts recommend frequent, early deployments as a means to reduce downtime, find bugs more quickly, and collect feedback from end-users more rapidly. By automating deployments, teams can significantly reduce the lengthy “manual clutter'' that constitutes communication, which can often become a primary impeding mechanism for the smooth running of the process. 

Automation tools help development teams automate their application deployment and management across clouds with zero downtime. 

Automate QA Testing and Continuous Integration

Software development teams that practice continuous integration regularly commit their code to a repository for development, then testing to combat pre-deployment integration challenges. For this to be effective, testing automation is key to ensuring that applications are kept intact whenever new commits are integrated into the main branch.

QA testing simply ensures that the software being developed undergoes stringent testing before deployment. However, continuous testing is sometimes filled with regressive tests that can be cumbersome for manual testing. 

Therefore, it makes sense to automate this process - to liberate manual testers and focus on building effective frameworks for QA testing automation tools. 

Automation for repetitive QA processes means that testing tools adopt the mammoth task of going through several different debugging cycles without getting strained as a manual tester would. The automation process cuts down unnecessary workloads for developers and facilitates continuous integration. 

How to Improve Efficiency Using DevOps Automation Tools

DevOps tools can help significantly reduce developer workloads by executing cumbersome and regressive tasks on their behalf. Here’s a helpful framework to keep in mind when using DevOps automation tools to improve efficiency.

Understand the Mechanism

To get maximum efficiency out of your selected DevOps automation tool, you must understand how each of your collaborating teams contributes to the deployment process. 

Team leaders must be on top of team dynamics such as shared tools strategies, effective contributions, and work-sharing between developers, QA testers, and the architecture automation team. 

For example, before their automation journey, Codelitt’s team dynamics included tutoring junior developers to run multiple automation scripts for application deployment. Understanding the place of this task in the SDLC helped to identify the potential cut in production time that automation could deliver. 

Understand DevOps Tools

As a team leader, you must outline the automation tools used for every process, from the design and architecture to the deployment and production of the software. Teams can easily get confused by the sheer quantity of specialized tools available. Do your due diligence and ensure that your selected tools fit your DevOps pipeline perfectly. The best DevOps tool for automating DevOps processes should aim to eliminate (or reduce to a bare minimum) human interventions, making the entire process as autonomous as possible. 

Understand the Software Development Process

Next, you must ensure that the framework of tools used for the whole of the DevOps lifecycle must incorporate every detail without any tasks being unaccounted for. This implies that any process change that demands a software change must be included within the DevOps pipeline and not performed outside it. 

To do this efficiently, engineering team leaders should employ robust change management tools to aid faster adoption, more control over the change implementation and representation. As common practice, a series of steps are often used to standardize the process:

  • Create change request
  • Review/Analyze change request
  • Plan the change
  • Test the change
  • Craft the change proposal
  • Implement the change
  • Review performance
  • Finalize the procedure

As with every type of change, resistance is to be expected. Unforeseen circumstances such as budget drops or dependencies may threaten the process. Good leadership and dedicated tools, however, can mitigate these risks. This way, every change is tracked with no room for uncertainty - if there’s a need to backtrack the process.

Log the Automation

There is a need to maximize the use of automation tools, logging each step within the process for manual and automated actions. Logging the automation process allows for an efficient, future-proof operation as mistakes can be corrected for future operations. Because a key component of DevOps relies on experimentation and real-time observation, development teams are kept at an advantage if each operation is logged and studied within the framework.

Request Continuous Evaluation and Feedback

Finally, continuous evaluation and feedback from each member in the DevOps process are critical to DevOps automation success. 

While it is essential to implement a continuous feedback loop within the process (rather than at the end), feedback can - especially when unstructured - can become distracting, time-consuming, and difficult to act upon. For continuous feedback to be effective, it must provide actionable information that integrates well within the teams’ workflow. 

To achieve this, organizations should adopt CI/CD tools that integrate well with real-time chat clients for more dynamic messaging. Teams should be encouraged to adopt a transparent, concise, and actionable messaging culture that invests time into focusing on the message to determine the focus of a feedback message and how quickly it can be actioned. 

Teams should also expand to other feedback routes such as e-mails, user feedback from app marketplaces, etc. Valuable information is not restricted to feedback within the CI/CD pipeline alone, so teams should seek to extract data from other sources and incorporate it into the development process. 

This practice significantly increases the efficiency of a DevOps process by highlighting every possible mistake and flaw in the process design. It reduces the error margin for future tasks and makes planning more efficient and failproof.

In conclusion, DevOps automation best practices can help teams achieve significant progress in optimizing the process of DevOps automation.

Downsides of Automation

While industry leaders have lauded DevOps automation, automation still has its downsides - especially for organizations not well suited for the automation framework. 

DevOps automation demands a significant culture shift, and not all companies can approach this transition with the speed and dedication required. Some companies may only require minor software changes every few months, making DevOps automation an unsuitable and unnecessary framework to adapt. 

In addition to this, automation does not absolve teams from the need to prioritize maintenance activities which in themselves can be time-consuming. Teams need to create time for maintenance - maintenance operations need to be scheduled alongside release cycles, and releases need to be coordinated with updates to avoid clashes. As demonstrated below, there comes the point where more time is spent increasing efficiency through automation than the time saved by the efficiency - rendering the efforts futile. 

Image Source: XKCD

DevOps automation is a means to accelerate processes that were slowed down by inefficient loops and human errors. But automation is only efficient when the cost of implementing it is low compared to the volume of the company’s output. Therefore, before embarking on a DevOps automation journey, it is wise to discuss the organization's suitability for automation with an expert or DevOps consultant.

DevOps Automation Best Practices

Because DevOps is more of a ‘culture’ than a specific tool or framework for every problem, best practices vary significantly by the project’s requirements. DevOps automation best practices are essential for team leaders looking to automate their DevOps processes. These best practices include:

  • Keeping the primary focus on customer needs. 
  • Encouraging an interdependent and collaborative team culture.
  • Using agile methodology for better and faster results.
  • Analyzing and keeping track of valuable metrics.
  • Using credible, efficient DevOps automation tools to harness the powers of DevOps automation fully.

Final Word

Automating DevOps is the way forward for teams struggling to maintain a critical mass of engineers to attend to necessary DevOps tasks. Automation does little to address the supply-side of the DevOps engineer workforce shortage and is almost futile against solutions like culture change when organizations cannot hire. When used correctly, however, it does help organizations optimize their limited engineer resources and reduce the dependency on more DevOps engineers.

By transitioning to efficient automation tools, teams can scale efficiently by rapidly accelerating the rate at which their applications are deployed. As mentioned earlier, DevOps automation isn’t the perfect solution for every team. Smaller teams with limited capabilities that are yet to scale may not benefit from a decision to automate processes. Team leaders may benefit from consulting with an expert to see if their teams are ripe to reap the rewards that DevOps automation promises. 

About the Author

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT