One of the things as CI/CD/DevOps coach that I always found interesting me, even when the distance between two teams is minimal and these teams have a certain dependency on each other that the interactions are mainly inconsistent, unreliable and manual and never meet the expectation of the requesting team.
Having mainly these kinds of interactions brings another challenge to an enterprise organisation it is hard to scale these interactions. This results in overfull ticket systems, mailboxes, Slack/Skype/phone requests and long throughput time for simple requests. To improve the developer experience on interactions a new structured means must be defined adhering to these properties:
- Automated / Integrated
- Secure / Audit-able / Traceable
- Measured / Monitored
Structured means every interactions with a team follows the same pattern. It could be that a teams has a catalogue with web forms, or uses an API or even a command line tool could be provided or a DSL (domain specific language) is defined. It should be clear with services a team offers from the structured interaction. A consuming team should be able to define the interactions in a structured manner as code a make it part of their source code.
Reliable interactions means that request can be repeated with an expected outcome, but also means that interactions are always available (outage is expected and communicated) and the contract of communication is stable and can be validated.
Automated/Integrated interactions are eliminating the human-factor. The integrated interaction is directly invoking the process, for example calling a workflow tool like AWS step-functions.
Secure / Audit-able / Traceable it should be clear who requested what, when and where, and this should also be secure to prevent misused and allow for responsibility and accountability.
Measured / Monitored means that there is a feedback loop on the quality, availability and performance of service/capability and gives the specialist team input of the improvement of the service/capability.
When applying these principles to a team that is responsible for making firewall changes and a DevOps that needs to consume this capability the interactions can improve dramatically.
There are 5 levels of interactions with a specialist team, or 5 levels how a DevOps can interact to gain a certain service/capability. These 5 levels are:
- Face-to-face interactions. In person communication without any record or structure.
- Unstructured digital interactions. In person communication with a record but without any structure.
- Structured digital interactions. Structured communication, with a record but hard to integrate with automation of a DevOps team.
- Structured digital integrated interaction. Structured communication, with a record and easy to integrate with automation of a DevOps team.
- Structured validated digital integrated interactions. Structured communication, with a record that is completely focused on integration with a DevOps team automation and is easy to version, track and trace by the DevOps team.
Face-to-face interactions, are the typical anti-pattern for specialist teams. There is no record on what is agreed, and there is no possibility for automation/integration on the side of DevOps and the specialist team. Measuring and monitoring, reliability and security are not possible. For a firewall change the DevOps needs to ask the specialist team to perform the action, but there is another problem for the specialist team if a lot of team require firewall changes they do not have the manpower to handle all requests.
Unstructured digital interactions, are the same as face-to-face interactions. However there is a digital record, but communication is still unstructured, hard to measure and monitor and the scaling issues are the same as face-to-face interactions.
Structured digital interactions, is where the specialist team can gain speed. Every request for a service/capability is structured the same and is more guided for the consuming DevOps team. The requests can be measured/monitored and the interactions can be created more secure and reliable. However interaction for the DevOps team is hard to integrate with their automation.
Structured digital integrated interactions, allow DevOps teams that consume the capabilities/services from a specialist team to be part of their automation. So the DevOps team is able with every change they make to request a firewall update, the specialist team will give direct feedback if they accept the request, if the request is already processed or the request is errornous.
Structured validated digital integrated interactions, are interactions offered by the specialist team to define capabilities/services in a structure that is machine and human readable. Also offering tools to validate and process these defined interactions. In the example of the firewall change the DevOps defines their request change in code that is versioned, the DevOps now can validate/request the firewall change by using the firewall change tool that is supplied by the specialist team.
Specialist teams that offer capabilities/service can greatly improve developer experience by improving the interactions. These specialist teams can improve these interactions by structuring, integrating, automating and digitising the requests on the capabilities and service they offer.
The effect of these improved interactions are beneficial for organisations in many ways. For the DevOps teams it means that their requests can be automatically handled which will result in an increase of quality of handling of these requests, a decrease of throughput time and the possibility of ownership of changes. For the specialist teams it means they will have more time focussing on the service they provide to their organisation.
In the next blog I will cover how a specialist team can improve their process.