07 Nov INTENTIONAL SIMPLICITY
Intentional Simplicity. I believe that in this time we live in more than any other that came before it we are dealing with exponentials. Exponential growth, exponential challenges and exponential solutions. This theme manifests into both daily life and our businesses, and since our businesses are technology driven into technology too. Exponential translates to the sheer number of technology choices we now have when solving the needs of our businesses. While in principle I believe this is positive it also brings with it the potential for complexity. Complexity inherently is required in some cases, it’s the unnecessary complexity we need to guard against.
Another consideration is the way we approach problems. How is it that we find ourselves with “legacy solutions”? For me it’s quite simply two things: firstly, we’ve allowed ourselves to reach that position and secondly we have not been consciously optimising for the right things. What do I mean by this? Simply put, life is about choices – if we consciously or unconsciously chose to allow legacy this was our doing. Often legacy is the unintended outcome of optimising for only a few dimensions such a delivery velocity, business functionality over sustainability. This talks to organizational culture and whether a culture of refactoring exists – this however is not the only consideration.So the meta question for me becomes: since we have been building software for decades what can be done differently to achieve a different and more sustainable outcome. As it happens there is much research on the subject of IT complexity. My experience is that IT complexity mirrors business complexity – this my interpretation of Conway’s Law. I believe that while this is true, how we consciously promote intentional simplicity comes down to how we think, design, architect and ultimately build.The fundamental shift that one needs to make is to move away from viewing businesses as being supported by platforms towards a capability view of an organisation. The capability organisational approach prescribes that you need to break down your business into capabilities. Capabilities are at a granularity where they describe related sets of business functions, for example: valuation and settlement are two capabilities in a bank. Once you have done your business architecture work we can start talking about how you apply a new architecture approach. Enter the Snowman or Simple Iterative Partitions (SIP) architecture: The Snowman Architecture talks about creating “Snowmen” for each capability – essentially a small system for each capability. Business functionality is achieved by linking the required capabilities together by means of a messaging bus in accordance with a defined business process.
The head of the snowman contains the Business Architecture – practically what this contains is business logic which itself is comprised of the capability business process and related business rules. The belly of the snowman holds the Technical Architecture or technical implementation of this business logic as it pertains to the capability business process. The arms of the snowman represent the Service Architecture or service endpoints by which bidirectional communication is achieved through well-defined interfaces and through which snowmen interact. The base of the snowman encapsulates the Data Architecture which contains the data itself as well as the mechanism through which the belly of the snowman interacts. It must be noted that the head of the snowman must only interact with the belly which in turn interacts with the base – in this way we ensure design consistency.
I believe that in this time we live in more than any other that came before it we are dealing with exponentials. Exponential growth, exponential challenges and exponential solutions. .
– Jason Suttie
Right so we’ve been through the theory, lets walk through a practical example of a snowman built for a valuation capability – a simple example. The capability is required to provided valuations of products given product characteristics and market data. Given this need the service endpoints (arms) of the snowman have a method that describes the interface that allows products to be valued given characteristics C and market data M. This method is implemented in the belly of the snowman, in the implementation the belly queries the head of the snowman for the valuation algorithm given C and M. The head applies the relevant business logic to return the correct algorithm. Once returned this algorithm is executed and both the method input and outputs stored in the data layer (base) of the snowman before the valuation result is returned by means of the service endpoint.So I understand the approach, can you articulate some of the benefits? Sure, following the example above we can easily test our valuation capability.
We understand its interfaces and expected outputs for a given data set. When we change our mind on how valuation will be done we simply build a new valuation snowman with the same interfaces and plug it in alongside the existing one for parallel run before we ultimately switch off the old snowman. We understand dependencies as these are articulated in the service data contract. Capabilities are highly re-usable. The most powerful value proposition for the Snowman approach is that we can achieve true composition – in other words solutions can be composed for business by linking capabilities. The outcome of this composition ability is that it allows us to move product to market at great velocity.Is the Snowman the end, certainly not, adoption of this approach talks to the conscious mind shift that we’ve made towards intentional simplicity.