If you look at a sphere, you'll get the same view from any angle. That's not true for DevOps. Your perspective...
is shaped by where you stand. This is why it gets complicated when you try to get into DevOps. So let's consider DevOps from different angles to clarify the different skills of a DevOps engineer.
As DevOps has evolved, the number of DevOps practitioners has risen. When you track Puppet and DevOps Research and Assessment's recent "State of DevOps" reports, note that the percentage of respondents that work on DevOps teams increases each year. In 2014, 16% of the survey respondents worked on DevOps teams. That figure had jumped to 27% three years later, according to the "2017 State of DevOps Report."
Learn the culture before you build
What makes DevOps successful is not just its growing technological ecosystem but its ability to integrate aspects of human behavior into software production.
To up your DevOps skills, first learn about the movement -- the culture -- before you jump into the technologies. This is a culture characterized by collaboration, transparency and feedback. So even when you reach your most advanced technical levels, it helps to build and organize projects in a way to promote these values. This collaboration within teams and organizations is what supports DevOps transformations.
Leadership skills also matter. DevOps practitioners should identify a needed change and figure how to make it happen. Transformational leadership skills make it much easier to get into DevOps.
Be ready to communicate and lead
Communication in a DevOps world requires practitioners to explain their actions without the use of a lot of technical jargon.
I started my career as a developer and, a few years later, shifted to system administration before landing a role in DevOps. Sure, I learned about various technologies. But I also learned that the choice of one framework or architecture over another won't solve every problem.
Early in my DevOps career, I was responsible for introducing CI/CD and reducing the time to market of software development. With the right tools you can certainly speed the delivery of software. But the real challenge is to change the way people think. Most people get comfortable with familiar tools and don't like change. So we introduced DevOps simply, without lectures, and cut the large problems into small, manageable pieces. This helped everyone get on board and aligned around common goals.
Become a cross-functional technologist
While it's crucial to understand the philosophical and cultural aspects of DevOps, the technical aspects cannot be diminished. On the contrary, the technical side should be one of the main concerns of DevOps engineers.
It's impossible to work on continuous integration, continuous testing or continuous delivery without mastering CI/CD tools. DevOps folk need other skills too like infrastructure as code, cloud computing, containerization, distributed systems or orchestration. As a DevOps engineer, you need some programming skills. You will work with software developers, and you should at least understand what they create and how to speak their language.
And it's also good to have other skills, such as security, networking, database management and system engineering. A DevOps engineer or team should be cross-functional and must know how to write, debug, deploy code; manage production infrastructure; and automate the different pipelines between development and production.
A DevOps engineer should have technical and nontechnical skills, and it's obvious that it's a cross-functional role. Acknowledge the cultural aspects, develop your leadership skills, learn about nontechnical topics like lean management, invest in your technical skills and don't forget that DevOps is human-centric.