Good Strategy

As 2023 draws to a close, I find myself in a reflective state, contemplating about the year and planning the year 2024. A central theme that recurs throughout this reflection is the course we’re steering, which is shaped by strategy or, sometimes, the conspicuous absence of it. I recently read a book named Good Strategy Bad Strategy (Goodreads) by Richard P. Rumelt, which I consider essential for anyone looking to grasp how strategic thinking can channel collective efforts for the greater good. Here, I’d like to highlight a few essential insights from the book.

The premise is simple yet profound: by harnessing our existing resources and circumstances, we can navigate the complexities of the world much more effectively. The recipe for a solid strategy involves a three-step process: diagnosing the challenge (1), formulating guiding policies (2), and executing the coherent actions (3). Think of the diagnosis as identifying a disease, while the guiding policy serves as the well-conceived treatment plan that must be consistently implemented until it is cured. The author does an exceptional job of demystifying the concept of strategy:

1. This step involves recognising the hurdles your business currently faces, something you are typically aware of to some extent. The key is to extract the complexity of your reality into a few essential components.

2. Once the critical issues are identified, it’s time to think of a broader approach to tackle them. These approaches are your guiding policies that provide direction.

3. Finally, you must define specific initiatives that align with the guiding policies. These actions should complement each other and be integrated across all parts of the organisation, internal & external processes and most importantly – user journey of the product you’re creating.

While this may sound overly simplistic, it is far from it. If done correctly, the outcome, as Richard P. Rumelt asserts, is what constitutes a ‘Good Strategy’. He expands in greater detail all of these aspects, provides detailed examples and ways to think about the kernel of strategy. Give it a read, highly recommend.

Capacity Management

Capacity Planning is sort of an art, but mostly maths. After being in the game for a while, you can start to sense the business demand trends and system loads, but that should be backed up by numbers.

There is an in-depth article written by Diego Ballona about Capacity Planning in the ByteByteGo blog showing how deep this subject can go.

However, from a wider picture point of view, Capacity Management can be looked at from economics lenses – as the demand for your service changes, what do you do with your supply? 

The book Data Science for Supply Chain Forecasting has some great content regarding forecasting the business demand, and is beginner friendly, however I have to agree with some criticism – you cannot foresee the future and forecasting cannot be relied on 100%. 

Therefore you need to learn how to jazz. As the situation dynamically changes, you need to adapt your system capacity. This is much easier if the systems are designed to be scalable, but like everywhere, there are always  constraints. I really liked the classic book about the constraints theory called The Goal if you would like to understand more about this topic. 

And if you would like to learn more about capacity planning, you could dig deeper into – The Art of Capacity Planning, which is focused more on Cloud systems, or you can take a look at more big enterprises, a.k.a. ITIL based book – A-Z of Capacity Management.

Starting with observability in a company

When starting to implement observability practices in a company, work with the resources that you have. Until they are fully exhausted, or they start to limit your processes, only then think of buying a new tool that will lift these constraints.

I often get reached out by representatives of some observability/monitoring software stack offering their solutions. It’s not that simple. Tooling isn’t the answer if you are just starting. Problems won’t get solved with new shiny tools. If a company is technologically and culturally not prepared to embrace benefits provided by observability, there’s very little benefit of purchasing new tooling. 

Observability work starts with the people. It starts with the evolution of the teams’ culture to deliver & support IT systems based on data. Data is good, it helps to understand IT systems, it brings clarity and not just for an isolated system component, but for a whole distributed system that brings value to the end user.

The teams must utilize data to understand system performance, react and resolve system degradations & outages, track how deployments are impacting service. Chances are, that there are already some metrics & logs generated by IT systems, which are not yet fully utilized. Squeeze as much as possible from them, look for opportunities to measure blind spots in your system.

To see if you have any blind spots (parts of systems that are poorly or not measured at all) – leverage high level and lower level system design charts. Having documentation is vital. Try to visualize the user’s journey through the parts of the system. Think about business metrics (demand in terms of transactions/users), system performance metrics (response time, latency, loads) and IT component utilization (CPU/Memory/Network/Disk) – are these metrics getting collected?

If you collect data from all corners of the system and people are actually looking at it, utilizing it, you can polish your operational and development processes to leverage data as well.

So when you utilize everything at your disposal:
– You start collecting data from all corners of IT systems
– People are leveraging and making decisions based on data
– Development & operational processes are based on data
– Incidents & performance degradations are understood as much as possible given the amount and type of data
And all of this isn’t enough for you to deliver good IT service, only then you might consider purchasing a new shiny observability tool that will enable you to lift your IT to another level.