Platform Challenge 7: Maintaining Consistency Across Software Teams
Systems are all around us. They exist at incomprehensibly enormous scales, such as the complex global economy that we all operate within, and they exist at small scales, such as the steps you go through to make yourself a morning cup of coffee. The organisations we all work for are nothing more than a complex set of interdependent systems that exist to deliver predictable, valuable outcomes to customers. As we all can attest, none of the places we work are close to perfect systematically, and often they are far, far from it.
Many of us, particularly in the Platform space, could have their job descriptions dryly written as “Your role is to eliminate complexity in our business systems.”. If advertised as such, I’m not sure that role would attract too many applicants. To make it more concrete, the Platform team often exists to introduce consistency and reliability across an organisation so that users can confidently deliver on their own goals with as little impediment as possible.
I have worked in companies whose teams were free to deliver their own applications in an environment that made sense for that team. Free of technical constraints, teams went about choosing esoteric technologies for everything ranging from the underlying OS all the way to the framework used to deliver the front end! As fun as this was when we were in the throws of the development cycles, the resulting costs were massive. Hiring became next to impossible as we searched endlessly for the unicorn polyglot engineers; the support burden was huge because only the engineers who worked on the teams understood how to support and debug their applications; our blame culture was world class and business agility was lost as leadership found it difficult to rotate engineers onto higher priority projects because of steep learning curves on individual team stacks. I could rant endlessly about the costs but you get the gist, things were a bit of a mess!
The answer was sadly obvious in retrospect (they usually are!). We needed collective consistency. We needed to increase shared understanding of the problems we were facing to help us learn quicker, address issues faster and reduce our costs. We analysed our fragmented systems, identified our biggest issues and set to work introducing consistency. We started with production support costs and introduced solutions to problems such as logging, metric and tracing, and immediately our cost of support went down because our engineers didn’t have to learn many techniques to solve one problem. This is just on the technical side. I could write a whole book on how these changes addressed that world-class blame culture! Again, all very obvious in retrospect, but we were young, excitable, inexperienced and over funded, so we learned the hard way.
Hopefully you can learn from our mistakes. Kratix, Syntasso’s framework for building platforms, encodes solutions to the collective problems we have faced throughout our careers. We’ve designed Kratix with the consistency of your platform, and your team, in mind. Kratix makes it easy to introduce consistency into your platform. Through Promises we simplify the consistent APIs in your platform; we provide integration points to ensure your security, audit, and billing concerns are consistently encoded into all platform requests; and we take a low opinion on the tools you use to integrate Kratix with your existing stack, which allows you to introduce consistency in a way that makes sense for you.
This blog is the seventh in our series, The 12 Platform Challenges of Christmas. Check back daily until January 5th, 2023 for new posts!