“Our company is a premium talent marketplace with on-demand leadership and clients mostly in the Bay Area, Silicon Valley, New York, and other metropolitan areas,” says Tomas Gutierrez, Partner, Scalable Path, a geographically-distributed network of more than a thousand software architects and developers. Scalable Path serves clients such as tech startups and product companies by helping them build software teams and fill technological gaps. Given that Scalable Path assists with software design, its clients most certainly have needs in DevOps approaches. Scalable Path’s Gutierrez informs DevOps.com about DevOps career training and development priorities and building blocks.
At Scalable Path, a good working knowledge of the seven layers of the Open Systems Interconnect model is important for software engineers who want to work with DevOps approaches. “In order to have a full mental picture of what is happening where, software engineers must have a conversational knowledge across all these layers,” says Gutierrez.
With any application of software, you will host it on hardware, you will have an OS, and hosts will talk to each other across a network. “The DevOps engineer must know the seven layers involved in order to consider goals for infrastructure as code and to help with software releases, deployment of infrastructure, networking, and configurations,” explains Gutierrez.
On the job, a good DevOps engineer must be a good problem solver, be able to think outside the box, and have empathy for the needs of the software product and the organization, says Gutierrez. Attention to detail and a security focus are also worth accounting for.
“Even though it’s good to have formal training, college degrees, and certifications, the right personality, that of an autodidact (one who is self-taught) is key for good DevOps talent,” says Gutierrez. These engineers will examine a technical challenge globally and in its component parts and seek and assemble the tools and processes that will provide a complete solution.
Further, someone who is empathetic to the needs of the software and the enterprise deploying it will realize when they need to use a simple, cost-effective software deployment without all the extras.
The ability to direct a focused attention to the details of software engineering is another important trait for a DevOps engineer. Otherwise, programming errors occur that can create issues down the road. “If you don’t architect something correctly, you may end up with part of your architecture failing because you made some mistake in programming,” says Gutierrez. These things can propagate and scale up into bigger issues as the architecture grows.
It’s also important for the DevOps engineer to be strong in security such that their programming does not expose critical data. It’s about how the programmer constructs the data layer, how they work with the transport layer, and what the end to end route is for the data, says Gutierrez.
Despite the emphasis on traits and approaches to challenges on the job, there are certifications of value to the DevOps engineer. “The Cisco certifications, for example, especially the ones for networking will be helpful since a lot of what you will be doing in DevOps is about data in flight,” says Gutierrez. DevOps engineers need to be mindful of how traffic is moving over the Internet and to and through the data center, explains Gutierrez. Network configuration and network security expertise especially such as is validated through the higher Cisco certifications will be important for the DevOps engineer, Gutierrez adds.
Application security certifications are also useful as are vendor certifications and courses from Chef, Puppet, and Docker as well as platform vendor training from AWS, Digital Ocean, and the like.
User documentation and “try me” opportunities for different tools such as containers and configuration management, automation, and deployment tools are helpful for self-starters and people who run into problems or have questions along the way. “People engaging in these kinds of training can simply create local laboratories for these tools on a local machine to simulate the larger application or architecture they are trying to learn,” says Gutierrez.
In order to learn how to navigate the in-depth areas between the system and application architectures, the DevOps student should consider the books in and around these subjects. Just a few examples include, “DevOps: A Software Architect’s Perspective (SEI Series in Software Engineering)”, “Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale”, and “Salt Essentials”.