Being a developer once meant writing code, possibly testing and building it, and then calling it a day. In the era of DevOps, however, the work performed by developers has changed tremendously. Today, developers are expected to collaborate extensively with IT teams, and vice versa, to help manage everything that happens to code after it passes out of developers’ hands – that is, after it is built and deployed into production.
This doesn’t mean, of course, that developers have to know everything about IT. They may not need to be experts in choosing EC2 instances, managing data backup routines, or crafting IAM policies. But they do need a broad familiarity with IT engineers’ responsibilities, especially those that intersect with or relate to development work.
The following IT skills and areas of expertise are particularly essential for any modern developer who wants to thrive in the DevOps age.
1. Understand Cloud Architectures
In a world where about 85 percent of organizations use the cloud in one form or another, everyone involved in software delivery and deployment needs to have an understanding of different cloud architectures and services, the benefits and challenges associated with them, and the ways in which they impact application deployment and management.
Developers need to understand the cloud services and service models that their organizations use, in part because these will impact the way in which they develop applications (for example, an application written to run in a cloud VM will look different than one hosted using serverless functions).
But developers should also understand how cloud strategies impact what happens to the code they write after it is handed off to IT for deployment. It’s only by understanding what the IT team’s day-to-day cloud operations entail that developers can design and implement applications that are ideally suited to whichever cloud infrastructure the team uses.
2. Mitigate IT Cost Management
In a conventional organization, developers usually focus on writing code, then leave it to the IT team to figure out how to deploy the code cost-effectively. It’s the responsibility of IT engineers to figure out which type of VM instance is best from a financial perspective, how to set up autoscaling in order to balance performance goals with costs, and so on.
Yet even if these tasks fall mainly to IT engineers, developers in a DevOps world should still have at least a basic understanding of the cost challenges that the IT team faces. When they do, they will be in a better position to help the IT team minimize costs. They will be able to identify components of their applications that over-consume resources, then optimize them to run more efficiently. Likewise, they may be able to make the apps compatible with new types of cloud services that offer greater opportunities for cost savings.
In other words, responsibility for controlling application deployment and management costs shouldn’t lie with the IT team alone. Developers have an important role to play in this process, and they can fill it only when they know which financial challenges the IT team needs to manage.
3. Accelerate APM
Application Performance Management, or APM, is another task that has conventionally fallen to IT engineers rather than developers.
But this is changing as APM “shifts left” – with good reason. By asking developers to do more to analyze application performance before deployment, organizations can mitigate the number of performance issues that arise in production. In addition, this will often make it easier to fix performance issues, because it’s typically simpler to address a problem before a release has been deployed than to roll it back, fix the issue, and then redeploy it.
Thus, if your developers haven’t already learned what APM is and how to use APM tools to analyze releases, now is the time for them to start. In a DevOps world, responsibility for APM will increasingly fall to both developers and IT engineers.
4. Anticipate Incident Response
Monitoring for and responding to incidents in production systems is one of the core responsibilities of IT teams. But because IT engineers frequently need help from developers to fix problems, developers should be keenly plugged into the monitoring and incident response process as well.
Specifically, developers should know which monitoring tools the IT team uses, how it triages alerts and assigns responsibility for responding to them, and which communication channels it uses to discuss incidents. Developers should be plugged into these conversations so that they will be prepared if the incident response requires changing code or building a new application release.
5. Interface with End-Users
Even though developers are the ones who write and design applications, in many organizations they rarely, if ever, interact with end-users. That task falls to the IT team, whose job is to troubleshoot problems that end-users face, respond to complaints about application inadequacies, and so on.
This is not ideal, for the obvious reason that IT engineers themselves are often unable to address the root causes of application issues that frustrate end-users. For that reason, developers would help increase the efficiency of their IT teams if they interfaced directly with end-users in one way or another. Doing so would also give developers more direct insight into how to improve applications in ways that would also improve the end-user experience.
Interfacing with end-users can happen in a variety of ways, including participating directly in IT support requests. But it could also involve soliciting end-user feedback from surveys, handling bug reports filed directly by end users (as opposed to those created by the IT team), or even overseeing real-user testing as a way of gauging what users want.
The best ways for developers to engage with IT teams will vary from organization to organization; there is no one-size-fits-all approach to bridging the gap between development and IT. In general, however, the types of skill sets and areas of expertise described above are great places for developers to involve themselves more actively in IT work in order to support IT engineers more effectively while improving the results of their own work as well.