DevOps has transformed the way we think about the roles of the IT team. Now, IT engineers don’t just maintain software post-deployment. They are expected to collaborate closely with developers (and vice versa) to fix bugs, design features, and so on.
But how far, exactly, should IT engineers go in this role? In other words, how much does the IT team really need to know about coding and the “left” part of the continuous deployment pipeline?
Those are subjective questions, of course, and the ideal approach will vary from organization to organization. Still, it’s possible to establish some general guidelines about the types of development-related expertise that IT engineers should have.
Here’s a roundup of six essential development skills that you should be sure your IT team possesses, if you want to take a DevOps approach to software delivery.
1. Recognize Programming Languages
Familiarizing yourself with the programming languages that your organization uses and the ways in which language design impacts the CI/CD process will help make you a better IT engineer, regardless of whether you ever write a line of code.
This doesn’t mean that IT engineers need to be able to code in every language that their developers use. But they should understand things like the differences between compiled and interpreted languages, or how easy (or hard) it is to support multiple operating systems with the languages their developers use. These insights will help the IT team appreciate the work that developers do, as well as understand why tasks that may be simple for one language (like changing a line of code in a non-compiled language) can be more difficult when working with another (such as updating code that needs to be compiled again before it can be redeployed).
2. Understand Application Architectures
IT engineers aren’t typically involved in the design of application architectures (such as which API styles to use, or whether and how to build microservices). But application architectures can have profound impacts on the way that IT engineers maintain code in production.
A microservices-based application will typically require different deployment and monitoring processes than one that runs as a monolith, for instance. The API architecture that the application uses will also impact how it can be monitored and controlled.
For this reason, IT teams should have at least a general understanding of different approaches to application design and how they impact IT work.
3. Understand Continuous Integration
Continuous integration (CI) is a key component of most DevOps-oriented software delivery operations. Even if IT engineers aren’t involved in writing code or integrating it into the codebase, they should understand what CI means and why it matters within the context of CI/CD.
Likewise, they should know which CI server their organization uses and what the features of that server are. How easy is it to roll back code? How feasible is it to isolate a part of the codebase that is linked to a problem? Being able to answer these questions will help IT engineers understand what it takes to adjust the CI process in a way that supports their own work.
4. Observe the Build Process
Depending on the way your software delivery pipeline is organized, the IT team may or may not be involved in building code. Either way, however, the build process has important ramifications for deployment, which is typically the responsibility of IT.
That’s why the IT team should know, at a minimum, which tools (check out our list of recommended tools) the developers use to build code, how long builds take, what can cause a build to fail, and whether it’s possible to build and deploy the application in parts rather than having to wait for a new release to complete entirely before the application can be deployed.
These insights will help developers understand what happens in the CI/CD pipeline, before releases are handed off to them. They will also give developers an understanding of how hard and time-consuming it will be to rebuild an application if they need to replace a production version.
5. Optimize Software Testing
Software testing is another key pre-deployment process that shapes how quickly and easily the IT team can expect new releases to be ready. That’s one reason why the IT team needs to understand how their organization tests its software, which types of testing tools it uses, how long the tests take to run, and so on.
But even more importantly, software testing plays a critical role in helping to mitigate the risk of bugs reaching production. In that respect, testing is a process that IT engineers should want to help optimize. If developers are not running enough tests or not testing critical areas of functionality that tend to lead to problems in production, IT engineers stand to benefit significantly by pointing that out. They may also be able to help speed up testing by, for example, encouraging developers to make greater use of automated testing tools or to run more tests in parallel.
6. Embrace Bug Reporting
Because IT engineers are often the first to notice bugs that make their way into production, they should be experts in writing good bug reports. They should know how to use their organization’s bug tracking software efficiently and effectively. They should also understand which environment information to collect and include when writing a bug report. And they should know how to prioritize bugs accurately, based on their associated security risks or the level of disruption they cause to end-users.
These skills will help ensure that, when something does go wrong, IT engineers and developers can work together to fix it — with as little frustration and inefficiency as possible.
IT engineers are not developers. Thanks to DevOps, however, understanding what developers do and how to help them do it more effectively, has become a core part of virtually every IT engineer’s job. That’s why it’s critical for IT teams to understand how things like CI and software testing work, how to report bugs, and more.