Which skills do you need for DevOps? Most answers to that question center on “hard” DevOps skills, like programming languages and IAM frameworks. Those types of skills for DevOps are crucial, but they’re not the only types of skill you need to excel at DevOps. Equally important are so-called soft skills for DevOps, which shape the way DevOps practitioners think about their work, handle challenges and interact with others.
Here’s a look at the soft skills that DevOps engineers should cultivate. And, no, we’re not just talking about generic soft skills that are important in virtually any job, like problem-solving abilities or good communication. Below, we highlight specific soft skills for DevOps that are particularly important for the types of work that DevOps teams perform.
1. Ability to accept failure
The concept of “failing fast”--which means taking risks and embracing failures as a way of arriving more quickly at workable solutions--goes hand-in-hand with DevOps culture.
Indeed, a core part of the value of practicing DevOps is that it enables you to move quickly in delivering software. If fear of making a bad code commit or introducing a bug into your codebase prevents you from being able to deliver software quickly and continuously, you miss out on the point of doing DevOps in the first place. That’s why the ability to approach failure as an opportunity is among the most important soft skills for DevOps.
That doesn’t mean you shouldn’t take steps to control and mitigate failure. It’s important, of course, to test your software carefully before deployment so that failed releases don’t make it into production. But when you do push out an update that turns out to be a failure, you should treat it as an event that moves you closer to releasing a successful update. You shouldn’t let failure, or fear of it, get in the way of your ability to thrive in a fast-moving DevOps culture.
2. Ability to accept blame
By a similar token, when something goes wrong in the context of DevOps, the failure should be shared collectively by the entire team. If some team members point fingers at others, the team sets itself up for a culture where fear of failure becomes a barrier to progress and continuous software delivery.
This is why some folks advocate the idea of building a “blameless” culture for DevOps. There are specific practices you can implement, like blameless post-mortems, to help achieve that goal. But cultivating blame-free attitudes as part of your soft skills for DevOps is equally important.
3. Ability to provide constructive criticism
A blameless culture doesn’t mean a criticism-free culture. Even when you avoid letting the blame for a failure fail solely on any one individual or group, you can point to processes or practices that certain team members should improve.
This is why constructive criticism is an important soft skill for DevOps. The ability to point to opportunities for improvement in a way that leaves those on the receiving end feeling empowered, rather than attacked, is essential for achieving the continuous improvement goals associated with DevOps.
4. Ability to work well with others
The ability to work well with others is frequently mentioned as an essential soft skill for any type of job, to the point that it can feel mundane. After all, in most jobs, you have to interface with other people at least sometimes.
But when it comes to DevOps, being able to collaborate effectively with other team members is more than just a token skill to possess. By its very definition, DevOps involves combining the responsibilities of developers and IT operations engineers. That means that DevOps practitioners must frequently interface between both of these teams--not to mention other DevOps engineers. The ability to work well as part of a broader team assumes specific importance in this type of environment.
It’s worth noting, too, that conventional developers (which is to say, those who haven’t embraced DevOps) aren’t necessarily people who work well with others. Depending on the type of development work you do, you may be able to get away with minimal real collaboration with other programmers. Maybe you maintain a legacy codebase by yourself, for example, or your organization structures development work in such a way that each programmer “owns” a certain part of the codebase and rarely has to talk to others about it.
In an effective DevOps environment, however, these types of silos necessarily disappear. You can’t do DevOps without the skill to work well with others in a genuine way.
Flexibility is another example of a generic soft skill that is often pitched as being critical for a variety of jobs.
But, here again, for DevOps work in particular, flexibility is especially important. That’s because there is no specific way to “do” DevOps. You can use a variety of different tools, and although there are some basic processes (like CI/CD) that are foundational for DevOps, there are no specific rules for how to implement them.
What this means is that one team may do DevOps in a very different way than another. It also means that the tools and processes that your DevOps team uses today may change radically in the future as your organization embraces new opportunities. Without being open-minded toward working with new tools and new ways of doing things, you won’t be very effective at DevOps.
In short, DevOps practitioners need skill sets that enable them to deal well with failure and collaborate with others in ways that make it possible to criticize constructively when necessary without building “blameful” cultures. Flexibility toward DevOps tools and processes is critical, too. If you’re looking to start or advance a career in DevOps, these are all great examples of soft skills to cultivate.