What is DevOps and Why do we Deed it?
The current technological and economical state of the world makes DevOps pretty much inevitable and quite a necessity. The traditional software development approaches do not allow the business to have as much flexibility (as the DevOps philosophy does) and more importantly, companies that implement DevOps practices can be a step ahead of their competition and also have the ability to make counter-moves against their competitors more rapidly, when required. For example, let's say your competitor releases a very compelling feature on their web app, and they get a lot of traction and positive feedback from their customers - resulting in more sales, in order to retain your existing user base and to attract new customers, you would need to respond quickly to this, develop a similar feature of your own, in the shortest time-frame possible, while at the same time, making sure that the new feature goes in and out of your pipeline as quickly as is can be done, while making sure that quality of the released software is high. A few decades ago a scenario such as this one might sound like science fiction, but no more! Although the original idea behind this post was to paint a clear picture of how DevOps changes (and improvements) to testing, having an idea of how things work on a global scale, throughout the entire SDLC, will make the rest of the article easier to absorb. Let's enter the brave new world of DevOps and see how this approach would help us resolve the above-mentioned scenario.
Will DevOps Make Tester Roles Obsolete?
DevOps culture focuses on automating reparative tasks as much as possible, having automated tests, on many levels (unit, integration, end-to-end) to make delivery of the end product much faster - companies that have fully implemented the DevOps approach can go to production many times in one day, for example, big companies like Amazon, Google, and Netflix deploy to production several thousand times per day! Just compare this to the traditional Waterfall approach (which is far from dead) where release cycles are scheduled every few months, or sometimes even years. Having automated deployments and testing will not leave testers jobless! By automating the repetitive stuff humans can focus on types of testing where the human ability to think creatively and critically comes to shine. A fine example of this is usability testing where automation does not help all that much. Additional examples of testing types that do not benefit from automation would be exploratory testing, UAT, and ad hoc testing. So, DevOps improves manual testing by making it more mature and more responsible, also, the testers will have an opportunity to learn more about automation, by maintaining the automation solution and continually improving their existing test framework - after all, continually improving the processes already existing in place is one of the selling points of DevOps.
Transformation Challenges
The DevOps culture focuses on increasing the collaboration between the team members, by utilizing cross-functional teams, therefore removing silos where we have separate teams of developers, testers, etc. - the DevOps team will have team members with various specializations working together on the same issue, which means we should have team members who are generalizing specialists. Less tech-savvy team members might find the need to master basic coding skills and developers will benefit from learning more about testing, deployments, etc. Apart from focusing on improvements in collaboration and communication, DevOps will also mean increased responsibility, increased participation, and increased effort as well.
So in a nutshell it would mean getting everyone on board, as this will require changing the structure of your organization, and not all companies will be ready for something like that, you will also need to optimize your deployment pipeline, reduce the risks and innovate faster, change teams from narrowly specialized teams into cross-functional teams, increase the sharing of knowledge, manage multiple environments, make sure your infrastructure is secure (this part of DevOps is called DevSecOps), scale-up from the bottom upwards - meaning that decisions related to tools and products used in the process should be left to the technical team members, the management should avoid micro-managing these type of decisions - which is tough one... And also, being realistic about the cost of DevOps, while there could be some increased up-front costs to properly establish a DevOps process, it's important to keep in mind that DevOps won't reduce costs, it will increase profits and grow your revenue.
It is my hope that I dispelled some of your doubts about DevOps and sparked your interest.
Thanks for reading!
nice informative post. Thanks you for sharing.
ReplyDeleteAgile and devops methodology