Skip to content

Is DevOps for me?

Defining DevOps

DevOps is a practice of uniting people, processes and tools for rapid software delivery, ensuring good quality software and integrated security practices. It is a mindset and a cultural change in the way the development and testing teams work along with the operations team collaboratively. 

DevOps for Experienced professionals

You’ll understand “Is DevOps is for me?” only when you are aware, what you already know and what you need to work on. Therefore, I’ve listed down the areas that you need to focus on and areas that you naturally understand, being either a developer, tester, technical support or an Ops person. This will help you take the decision. 

So, let’s get started! 


As a Developer

You already understand: 
  • The Build Process 
  • Dependency resolution. For eg. Maven dependency resolution in Java or downloading nuget packages from remote repos in .Net projects. 
  • Application compilation/build process. For eg. clean/compile/install goals in maven or cleaning and building the project in visual studio.
  • Unit testing – Developers usually write automated unit test cases so they are well aware of their usage and importance. 
  • Code quality analysis – As a developer you have to follow certain coding standards, security best practices, avoid duplication of code and pursue refactored coding processes. This all can be analysed using tools like SonarQube/Checkmarx/Veracode etc. 

Activities from build process to code analysis when automated through an orchestration tool forms a part of a Continuous Integration pipeline. 

You need to explore: 
  • Binary repos integration like Artifactory/Nexus. 
  • Different web servers like IIS, Tomcat, Apache, Nginx etc. 
  • Infrastructure fundamentals 
  • Prefer a certification in cloud technologies like AWS, Azure, GCP etc. 
  • Networking fundamentals. 
  • Overview of testing concepts. 
  • Deployment strategies like blue/green deployment, canary releases, rolling deployments etc. 
  • Release and change management process. 

As a Tester

You already understand: 
  • Testing concepts – This is your forte. You are responsible for various types of testing be it integration, functional, performance, sanity or regression. 
  • Automation testing tools – If you have worked in automation testing, you’d well be using tools like Selenium, Cucumber, Appium etc. 
  • Different environments like QA, Staging, UAT, Pre-Prod 
  • To some extent the Software Development Lifecycle (SDLC). 

Integrating automation testing tools in a CICD pipeline forms the basis of Continuous Testing. CT is very important to ensure good quality software delivery. 

You need to explore: 
  • Build process with dependency resolution for various technologies.
  • Unit testing integration. 
  • Code quality analysis tools integration and an overview about them. 
  • Deployment process to binary repos (eg. Artifactory/Nexus etc.) and servers both. 
  • Basic understanding of different servers like IIS, Tomcat, Apache, Nginx etc. 
  • Infrastructure fundamentals
  • Prefer a certification in cloud technologies like AWS, Azure, GCP etc. 
  • Networking fundamentals
  • Deployment strategies like blue/green deployment, canary releases, rolling deployments etc. 
  • Release and change management process. 

As an Ops person 

You already understand: 
  • Infrastructure – On premise, cloud. 
  • In depth understanding of networking concepts. 
  • Server configuration & maintenance. 
  • Server and application monitoring systems.
  • Infrastructure architectural concepts. 
  • Understanding of servers like IIS, Tomcat, Apache Nginx etc. 

This knowledge forms the basis of Infrastructure as a Code (IaaC) where the entire infrastructure is maintained as code. Also, monitoring is a crucial part which forms the basis of Continuous Monitoring.

You need to explore:
  • Build process with dependency resolution for various technologies. 
  • Unit testing integration. 
  • Code quality analysis tools integration and an overview about them 
  • Deployment process to binary repos. 
  • Deployment strategies like blue/green deployment, canary releases, rolling deployments etc. 
  • Overview of testing concepts.
  • Release and change management process.

As a Deployment Team member (Technical Support teams)

You already understand:
  • Release and change management process. 
  • Deployment steps. 
  • Deployment strategies like blue/green deployment, canary releases, rolling deployments etc. 
  • Basics of infrastructure. 
  • Application monitoring systems.

These activities form the basis for Continuous Deployment and Continuous Monitoring.

You need to explore:
  • Build process with dependency resolution for various technologies. 
  • Unit testing integration. 
  • Code quality analysis tools integration and an overview about them 
  • Deployment process to binary repos. 
  • Overview of testing concepts. 

Common Skillset

Here I’ve enlisted the DevOps skillset required irrespective of your field. 

  • Software development life cycle (SDLC) – Gain a thorough understanding of the SDLC in your current project, right from requirements gathering to development to testing & software delivery. 
  • Understanding of any one Application Lifecycle Management (ALM) tool like JIRA, Asana, Basecamp etc. 
  • Basics of Project management methodologies like Agile, Scrum, Kanban etc. as DevOps compliments them very closely.
  • Code version control systems – You need to be adept with tools like Git, SVN, TFS etc. This is the starting point of the continuous integration step of your CICD pipeline. 
  • Software delivery process – You need to understand the process behind software delivery cycle, as to how approvals are taken, what are the risks and how the code is propagated to various environments under what conditions. 
  • CICD Tools – This is the technical part where you need to have a good grasp over:
    • Build tools like – Maven, MSBuild, Gradle, XCode, npm etc. 
    • Any CI tool like – Jenkins, Teamcity, GoCD, CircleCI, Bitbucket Pipelines etc. 
    • Any CD tool like – Ansible, Chef, Puppet etc., XL Deploy, Codar etc. 
    • Various integrations of tools like MSTest/Junit, Jacoco/CodeCover, Sonarqube/Chekmarx etc. 
    • Binary repos like Artifactory/Nexus 
    • IaaC tools like – Terraform. 
    • Server infrastructure setup and architectural concepts.
  • Scripting language(s)
    • You need to have a fair grasp over at least one scripting language. It could be Bash script, PowerShell or Python etc.
  • Above all – Switch to Linux. (Pick up any distro and just take it head on) 

I know this is overwhelming, but with small steady steps you can definitely achieve a fair understanding of these areas. 

Soft Skills

As a DevOps professional, soft skills are extremely important.  

DevOps is about heavy collaboration with the development and testing teams. You might have to conduct training and make the teams understand the concepts for a better functioning. 

Apart from this, to implement DevOps for your project, you might need to effectively communicate the benefits to the executive (CxO) team to get their buy-in. Soft skills will come in handy!

As a Fresher

I’ve been in the industry for 14+ years and have been involved in production deployments since the first year of my job.  

I joined a big MNC as a fresher and moved to development.  

I was extremely curious as to how production deployments happened. I voluntarily came forward and joined the deployment team over the weekends to understand the release management process. Since then, along with development, I’ve been heavily involved in production releases and therefore naturally tended towards DevOps.  

My suggestion to you is, join a company, understand the SDLC and get involved in software delivery processes. Along with this keep an eye on the latest trends in DevOps, learn about various aspects and tools and in a year or two take the plunge. Gain some experience and transition!