As the demand for DevOps and cloud has been slowly increasing throughout the year, more and more organisations are looking for skilled DevOps teams. It is likely that DevOps will then become the approach adopted by many IT companies in order to offer reliable and faster solutions.
Hence, if you are interested in learning DevOps to advance your career, some experts in the industry have shared their advice and recommendations with us!
What is DevOps?
According to Khuswant Singh, Lead DevOps Automation Engineer at Next, DevOps is a software development methodology that combines software development (Dev) with information technology operations (Ops) participating together in the entire application lifecycle from design through the development process to production support.
Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function. At its core, DevOps is a set of tools and practices that help organisations build, test, and deploy software more reliably and at a faster rate.
Moreover, Bolvin Fernandes, Azure DevOps specialist at Redkite, adds that DevOps is a set of practices and a cultural change that combines software development and operations, two traditionally siloed teams, in order to expedite an organisation’s ability to release software/applications as compared to traditional software development processes. DevOps entails the adaptation of tools and practices best suited to the unification and automation of processes within the software development lifecycle that will enable organisations to create, improve and ship out software products at a faster pace.
DevOps is enabling organisations to deliver their products more quickly than those with the traditional development and release cycle, Khuswant continues. True DevOps unites teams to support continuous integration and continuous delivery (CI/CD) pipelines through optimized processes and automation. So, continuous is a differentiated characteristic of a DevOps pipeline. A CI/CD approach enables efficiency in the building and deployment of applications, and automated application deployment allows for rapid release with minimal downtime.
When done properly, DevOps greatly reduces the time it takes to bring software from idea to implementation to end-user delivery. It also adds efficiency to the software delivery process in many ways. It allows different team members to work in parallel, for example, it also ensures that coding problems are found early in the delivery pipeline, when fixing them requires much less time and effort than it does once a bug has been pushed into production. With DevOps, the expectation is to develop faster, test regularly, and release more frequently, all while improving quality and cutting costs.
To help achieve this, DevOps monitoring tools provide automation and expanded measurement and visibility throughout the entire development lifecycle – from planning, development, integration and testing, deployment, and operations.
DevOps culture involves closer collaboration and shared responsibility between development and operations for the products they create and maintain, Khuswant underlines. This helps companies align their people, processes, and tools toward a more unified customer focus.
At the heart of DevOps culture is increased transparency, communication, and collaboration between teams that traditionally worked in siloes. DevOps is an organizational culture shift that emphasizes continuous learning and continuous improvement. An attitude of shared responsibility is an aspect of DevOps culture that encourages closer collaboration. It’s easy for a development team to become disinterested in the operation and maintenance of a system if it is handed over to another team to look after.
Bolvin notes that It is all about shared responsibility and accountability between developers and operations of the software they build and deliver. This includes increasing transparency, communication, and collaboration across multiple teams and also, the business.
Hence, if a development team shares the responsibility of looking after a system over the course of its lifetime, Khuswant points out, they can share the operations staff’s pain and so identify ways to simplify deployment and maintenance (e.g., by automating deployments and improving logging). They may also gain additional observed requirements from monitoring the system in production. When operations staff share responsibility for a system’s business goals, they can work more closely with developers to better understand the operational needs of a system and help meet these. In practice, collaboration often begins with increased awareness from developers of operational concerns (such as deployment and monitoring) and the adoption of new automation tools and practices by operations staff.
It is helpful to adjust resourcing structures to allow operations staff to get involved with teams early. Having the developers and operations staff co-located will help them to work together. Handovers and signoffs discourage people from sharing responsibility and contribute to a culture of blame. Instead, developers and operations staff should both be responsible for the successes and failures of a system. DevOps culture blurs the line between the roles of developer and operations staff and may eventually eliminate the distinction.
The role & responsibilities of a DevOps engineer
According to Bolvin, here are some of the responsibilities of a DevOps engineer:
- Understanding customer requirements and project KPIs
- Implementing various development, testing, automation tools, and IT infrastructure Managing stakeholders and external interfaces
- Defining and setting development, test, release, update, and support processes Troubleshooting techniques and possibly, fixing code bugs
- Monitoring the processes during the entire lifecycle for its adherence and updating or creating new processes for improvement
- Encouraging and building automated processes wherever possible
- Incidence management and root cause analysis
- Coordination, communication, and collaboration within the team and with customers Strive for continuous improvement and build continuous integration, continuous delivery, and continuous deployment pipelines (CI/CD Pipeline)
- Mentoring and guiding the team members
- Monitoring and measuring customer experience and KPIs
- Managing periodic reporting on the progress to the management and the customer
Khuswant also highlights these ones:
- Awareness of DevOps and Agile principles.
- Building and setting up new development tools and infrastructure.
- Working on ways to automate and improve development and release processes.
- Ensuring that systems are safe and secure against cybersecurity threats.
- Excellent organisational and time management skills, and the ability to work on multiple projects at the same time.
- Strong problem-solving skills
- Good attention to detail
- working with software developers and software engineers to ensure that development follows established processes and works as intended
- planning out projects and being involved in project management decisions.
- Excellent teamwork and communication skills.
- Excellent organisational and time management skills, and the ability to work on multiple projects at the same time
- Working on ways to automate and improve development and release processes.
The top skills to work in DevOps
To work in DevOps, Khuswant suggests having knowledge of one cloud platform (AWS, Azure, GCP) and container orchestration tool (Kubernetes, OpenShift), as well as experience in developing Continuous Integration/Continuous Delivery pipelines (CI/ CD) with tools such as Jenkins, Azure DevOps Services, etc.
Moreover, he recommends having good hands-on knowledge of Configuration Management and Infrastructure as Code tools like Puppet, Ansible, Chef, Terraform, etc., and proficient in scripting, and Git and Git workflows.
Bolvin adds that in order to work in DevOps, you need to not only be attentive to details, have the enthusiasm and eagerness to continuously learn and evolve with technology, but also to have an eye for identifying bottlenecks and replacing them with automated processes.
He continues by saying that it is good to be able to collaborate with multiple teams (e.g. contributing and maintaining a wiki) and have the willingness and zeal to impart knowledge to fellow team members.
Finally, he suggests working with cloud technologies, having knowledge and application of a scripting language, as well as awareness of critical concepts in DevOps and Agile principles.
How to move into DevOps
DevOps engineering is a hot career with many rewards, Khuswant points out. A DevOps Engineer will get enormous opportunity to work on a variety of work and DevOps tools which are very satisfying. Begin by learning the fundamentals, practices, and methodologies of DevOps. Understand the “why” behind DevOps before jumping into the tools.
A DevOps engineer’s main goal is to increase speed and maintain or improve quality across the entire software development lifecycle (SDLC) to provide maximum business value by automating the development lifecycle by using various DevOps tools.
Therefore, he recommends reading articles, watching YouTube videos, and going to local Meetup groups or conferences to become a part of the welcoming DevOps community, where you’ll learn from the mistakes and successes of those who came before you.
Bolvin also suggests understanding DevOps principles and methodologies alongside identifying gaps you can bridge in order to speed up the software build & release process. It’s crucial to understand the KPIs of DevOps and more so, align them to how you can contribute by upskilling yourself.
Advice for future DevOps engineers
Khuswant says that DevOps engineers need to know a wide spectrum of technologies to do their jobs effectively. Whatever your background, here are some fundamental technologies you’ll need to use and understand as a DevOps engineer:
- Operating systems Administration – Linux/Windows
Bolvin advice to:
- Make yourself familiar with cloud technologies
- Understand what DevOps entails
- Work on your communication and collaboration skills as they will definitely be tested
- Be open to trying new technologies and don’t be afraid to fail as that’s how you will learn
- Be willing and eager to share your knowledge as that’s critical to propagate the DevOps culture
Special thanks to Khuswant Singh & Bolvin Fernandes for their insights on the topic!