DevOps has become a trend in the IT market today. Everyone wants to jump into this ship, want DevOps to be part of their SDLC Plan. Every IT Consultant, Every Company has started implementing it and trying to have a pie of DevOps Yo-Yo Culture. But Hey !!! Is Everyone doing it right?????
In my personal experience which I had while providing Freelance Consultancy to Companies and Individuals, The Interviews I have taken, Looking into various job post been out there and LinkedIn post by many of them, I felt that isn't DevOps supposed to be a concept than being a Technology?
As per the Official Definition by the Microsoft,
A compound of development (Dev) and operations (Ops), DevOps is the union of people, process, and technology to continually provide value to customers.
DevOps is a union of people, process and technology to provide a value to Customers but it seems people and process have been taken for a ride. It has now become a problem which it was supposed to solve, The working in Silos.
I have seen Companies forming team, with PM, Developers, QA‘s and DevOps. If you have noticed, Infrastructure is missing, right? So as per few Organisation, as they have understood, DevOps is the replacement of Infrastructure Team. So the Working culture is business as usual, the Developer works as they have worked, QA does usual testing as they did, DevOps guy does all infrastructure automation with the implementation of CI/CD, who without the knowledge to Java/.Net/ any programming language is supposed to build the dependencies and deploy the workload. And when they cant, As per them, this is developer issue and for the developer, its infra issue. Wasn't DevOps was to bridge this gap? The Organisation here fails to make developers learn how to dockerize the workload he creates, It fails to resolve conflict in bring all the team together to solve an issue. I am not saying Operation does not play a big role in DevOps, but totally neglecting “dev” part of DevOps is the gap that needs to be filled. One of the popular sayings in DevOps Practice is “you built it, you run it”. Devs cannot pass their responsibility to operations guys.
For Implementation of DevOps, First and foremost thing is to make people aware of, what the DevOps is? DevOps Process start right from the requirement phase when you capture an epic in a JIRA until feature delivery. Coming together of all people to make that feature ready in production quickly, is what DevOps do. Secondly, the organisation has to fix the process, in which it wants to do DevOps, the working in silos will not work, the team have to upgrade to a cross-functional team. The Git Strategy, the Automation strategy, the Pull request strategy, the Sprint strategy needs to be defined and roles of each need to be clear in the complete process. This DevOps process is the main implementation of DevOps, if this is done correctly, the Implementation of various Tools to achieve CI/CD and automation will become one of the easier part of it.
I have taken Interviews where I came across various CVs and conducted various F2F rounds, one thing was most commonly observed that sys-admin role has now being presented as DevOps Engineers. They have experience in Infrastructure, Ansible, Cloud, have done some CI/CD, but, were completely unaware of code quality, what should be required to build .Net Projects (Nuget and npm libraries, dotnetcore/Maven framework), how the unit test is done, What Git strategy process is followed. I understand, one guy cannot be able to achieve all of this(unless he is Superman), but to be aware of end to end functioning of the projects and especially being the DevOps, knowing the end to end DevOps process is a must.
Some company believe only doing CI/CD is DevOps. I agree that CI/CD plays an important part in a DevOps Process, but if we deploy once in 3 months with CI/CD, Infrastructure is heterogeneous across multiple stages, Testing is skipped as per Project Manager’s/Lead’s wish for deploying to production due to urgent demand, Is it done right?
DevOps Engineers, more appropriately, should be called DevOps Enablers, whose role has to defined across project Management, Development, QAs, Operation. They should get accessibility and freedom to connect with each department to address their problems, conflicts. They should actively work with all team members day in day out to create a mature and robust process taking into consideration each team’s inputs and concerns in delivering the value to the end-user. Once the team has reached a stage where everyone works DevOps, They still work every day to implement and improve the DevOps, It is not something that can end, it's a continuous process.
A Perfect DevOps Team is where each person is doing DevOps, right from Client, Project Managers to the Operation team, A Project Manager should know DevOps, A Developer Should know DevOps, QA Should know DevOps and Operation Team should know DevOps.