DevOps consists of principles and practices that help improve communication and collaboration between teams that all too often have very different goals and objectives. While the principles are consistent across all projects, the practices may indeed vary from one situation to another. But what are those practices and how do we implement them? In this article we will introduce you to some of the key aspects of DevOps. One of the most effective DevOps practices has become known as left-shift whereby we involve Ops early in the process ideally having them get involved with the application build package and deployment from the very beginning of the application lifecycle. When I am serving in the role of the build, I always ask to be given the job of deploying from the development test environments all the way through to production. By getting involved early, we share the journey and gain the knowledge that we need in order to be more effective. Many practitioners also embrace left-shift in regards to quality assurance and testing.
DevOps needs to embrace a continuous testing approach that begins with unit testing and evolves to help ensure the quality of the entire system. Systems thinking in DevOps involves taking a broad view of the entire application from the operating system through every component of the application. Once again this is an example of left-shift where we QA and testing involved early in the lifecycle and ideally working directly with the developers to create robust native automated test tools. The information security team has very similar needs in order to protect systems form unauthorized access. Successful DevOps usually results in deployment processes that are so quick that they can be run every day, several times a day – and even on a continuous basis. Without continuous testing and left-shift the team is unable to keep up with the rapid rate of change inherent in DevOps and continuous delivery. In my experience, left-shift requires that I convince the developers to include their colleagues from operations, quality assurance and testing earlier in the process. But this isn’t the only situation which requires sharing information and feedback loops.
The technology professionals responsible for infrastructure and operations also need to remember to involve their colleagues from development and I have seen this overlooked. The operations team often knows more about how the application behaves in the real world than the developers who wrote the code. Issues related to troubleshooting, scalability and even disaster recovery are often understood by the folks manning the console seven days a week – twenty four hours a day more than the developers who wrote the code. Behaviorally, this all comes down to sharing knowledge and expertise. Unfortunately, dysfunctional behavior can sometimes be driven by fear and especially the fear of losing credibility in front of our colleagues.
Many times, technology professionals do not want to involve their counterparts from other teams while they are trying to understand new technologies because they do not want to be embarrassed if it turns out that they are mistaken. This means that sometimes we work alone – learning new technologies and hold off on sharing until we really understand all aspects of how the technology works. In my opinion, it is essential for everyone on the team to be willing to share the journey of learning new technologies in order for everyone involved to gain the knowledge and expertise essential for getting the job done.
Building scalable infrastructure involves a great deal of expertise and, in my view, operations needs to share the journey with their development counterparts. Even backup and recovery procedures can involve a great deal of complexity. This requirement includes the need for feedback loops to share information and the journey to solve issues and achieve goals. Silos pose serious threats to the organization and need to be driven out in order to achieve productivity and quality.
Just to be completely clear – organizational structures are often necessary. If you are working in large financial firms such as big bank or trading firm – structures and separation of controls are often mandated by federal law. But having an org chart does not mean that teams cannot communicate effectively.
If you create an environment where everyone feels safe to share their knowledge and expertise then you will have a much better chance of success. More importantly, if your team feels safe sharing their challenges and asking for help then you are on your way to creating a high performance team. DevOps has extremely effective principles and practices that help improve communication and collaboration. Make sure that you embrace left-shift by involving operations, quality assurance testing and information security early in the process. Make sure that you also ensure that other members of the team shift their knowledge the other direction to help the developers understand how the systems behave in real world scenarios including scalability, infrastructure architecture and disaster recovery.
Make sure that you drop me a line and let know how your teams share knowledge, expertise and their DevOps transformation!