“True DevOps is much more than automation, it’s primarily a cultural change”
In my earlier blog “A practical approach to DevOps adoption”, I presented a broad conceptual overview and outlined the key elements of DevOps. In this blog, I will highlight the nature of cultural change that is absolutely essential for a successful DevOps transformation.
Prior to initiating a DevOps transformation initiative, it is vital for all key stakeholders in an organization to understand the cultural aspects of DevOps. Lack of appreciation for what DevOps truly entails in terms of organizational transformation, will only ensure that it will be just another buzzword.
Foster a culture of collaboration
To a large extent, successful Agile practitioners have broken down the barriers between development and testing, but deployment and maintenance continued to be maintained separately. DevOps is all about bringing down these barriers, getting rid of isolated silos, and encouraging seamless collaboration between development and operations.
A culture of collaboration between development and operations will yield the following positive results:
- Developers will gain insights into operational aspects, and will better appreciate the pain points associated with the release, deployment and support of their software. They can no longer get away with “I have done my job, now its your baby” kind of attitude, and will lead to the elimination of “handover” attitudes.
- A sense of shared responsibility for the success or failure of the system will emerge over a period of time.
- Increased trust between stakeholders, leading to higher productivity
- Cross-functional concerns such as performance and security will be addressed much ahead of time, during the development stage itself.
- Similarly, involvement of operations personnel in the development process will result in production monitoring and feedback, which will result in early diagnosis of potential problems, and could also provide scope for spotting improvements.
Embrace full stack development
Encouraging developers to acquire a broad range of cross-functional skills will go a long way in breaking down the barriers between Dev and Ops. Full stack development is all about people who are capable of working with all layers of a product’s technology stack.
Full stack developer or engineers with cross-functional skills can make DevOps adoption a lot easier. An ideal full stack developer will be capable of handling tasks associated with any part of the technology stack, ranging from basic programming, systems infrastructure, and database management, to front-end web development. In practice, this cultural shift will encourage developers with core expertise in a specific technology/framework, to also acquire a broad knowledge of all other interacting systems, and pieces which makeup the complete product/service stack.
Build Quality into the development process
The key driver for DevOps movement is the need to drastically cut down the lead time to put code into production. And this has to be done without compromising quality, security, and performance. Deployment lead times that are shrunk to mere hours or days, demand that quality is built into the core development practices as well as the supporting engineering practices that play a critical role into testing, integration, and deployment of the finished software. To ensure that consistently high quality software is developed and deployed with minimal lead times, best-in-class practices must be adapted at every level of the software value chain.
Develop a continuous process mindset
One of the key cultural changes that DevOps instills is the “Continuous” nature of all key aspects of software development, and delivery. The major shift will be to stop thinking in terms of delivery and release timelines, and start participating in a process of continuous development, continuous integration, continuous testing, and continuous delivery. In practice, the continuous nature of work, will be a major game changer in terms of productivity.
Create a DTAP street with automation
In a traditional setup, the environments to manage Development, Testing, Acceptance, and Production (DTAP) of software were maintained in an isolated manner, with rigid entry and exit guidelines for each phase, and very often without any meaningful automation. For a successful DevOps adoption, it is absolutely vital to not only integrate all these environments, but also automate the process flow between each phase. A robust DTAP street with the right tooling, and automation is absolutely critical for continuous delivery.