Software Architect unfortunately is often seen as one of those ‘nice to do’ things by many businesses. Typically the architecture of a business system (especially in a start-up or online business) tends to ‘evolve’ (putting it nicely) over time – there is usually no unified attempt to create an architecture until you realise you have no architecture!
Never time for Architecture…
Now it’s often the case that someone in the business has recognized that a proper architecture is required, but trying to do an architecture ‘tidy-up’ whilst a business is moving forwards, is an impossible task. You will often get feedback like the following:
We need to get X out by the end of this quarter and I depend on that system you want to re-architect, therefore you cannot do it now!
You require my engineers to fix something that isn’t a real problem now, we need to ship product!
You cannot possibly want to change system X, our whole business is critically dependent upon it – I will stop you!
or words to that effect…
The trouble is that a business in motion is a bit like a rather large oil tanker, trying to change direction or ‘pause’ even for a split second to focus on technical strategic architectural goals often is nigh impossible to do; the business is already 100% committed to forging ahead.
The real trouble is, without a proper architecture to back this up, your velocity will top out sooner than it should.
Bad Software Architecture limits top line business velocity
Simply put, if your business has no well-defined Architecture to its systems, it’s just that much harder to properly assess the cost of doing something in a well-defined timeframe. The ‘mess’ of your architecture creates excessive costs and missed opportunities.
This can have really bad competitive consequences as an overhead so incurred can be many effective multiples (i.e. 10 times plus) – depending the number of systems and overall complexity. It’s a bit like the difference between building a house from a complete plan, or just adding on rooms and floors as you go along; you know which makes sense when building a house, so why do we not do the same thing with computer systems?
Complexity and the hidden costs of change
People often have a very skewed appreciation of the true costs of change, and with computers I think this is often way off. I have a theory that just because people seem able to easily install and remove software applications off their computer or smartphone, then it must be somehow be a similar undertaking for a large computer system. Just install the new software and off you go!
Unfortunately this is not the case, as most engineers who deal with large systems will know. Even if you do make deployment more ‘formulaic’ you still need to pay for that increased processes and procedures to get to that state and keep it, there is no free lunch.
This is where a well-defined software architecture pays dividends, as you are able to closely manage:
- The real interdependencies between systems;
- What system holds which data and when;
- The overall technical complexity in terms of operating systems, frameworks, libraries and programming languages used.
A typical ‘evolved’ architecture usually consists of a mix of technologies, purely based on what was to hand and the experiences of the engineers involved. I’ve seen architectures with a mix of Operating Systems, Databases, Programming Languages and Methodologies; and people were wondering why they cannot get anything done!
This is where such a lack of structure in the architecture hits a business hard, instead of having to consider just one technology when making changes, you end with a forest of interconnecting technologies in which no one person or team is the ‘domain expert’. Basically making any change is a risky undertaking with a lot of inherent cost.
Now compared to the business which has been very careful to keep its complexity under control, its costs of change could be a fraction of that experienced by its ‘complex’ competitor – the end result being the complex competitor cannot keep pace with its more technically lean rival – it’s a slow and painful death by a thousand failed and delayed updates…
In fact some businesses have got management of their technical complexity and architecture fine-tuned to such a point that they are able, with complete confidence, to ship live multiple updates each day – yes you read that right, multiple times a day. Flickr (the yahoo social photo site) is famous for doing this and key to it is a proper separation of concerns in its architecture combined with a fine grain feature control system.
Making space for innovation
The other hidden cost with a lack of architecture is that in inordinate amount of time is spent ‘patching’ rather than innovating – this is a smell I tend to look for. If more time is spent playing software bug ‘wack a mole’ than actually doing new features – you know you have a rotten architecture. Good software architectures encourage producing bug free software and actually guard against the negative consequences of a bug. They ‘contain’ the error and through their structure provide mechanisms to cheaply overcome any problems caused.
Good architecture also encourages greater innovation, as it is clearer what needs doing to support innovation on top of it – also good architecture in itself can be a catalyst for innovation. You might see gaps or opportunities that would have otherwise been hidden.
Make time for architecture
I cannot stress enough the need for businesses (and especially new businesses) to invest in their technical architecture – the costs of not doing so will come back to haunt you sooner than you think and you will be missing out on opportunities for innovation. Plus you could be at the mercy of a more nimble competitor who has strong architecture – they could run rings around you and you will not be able to respond quickly enough.
I cannot give emphasis to the last point above strongly enough, with the ability of people to quickly swap between online services easily – speed of response and been seen to be fast innovators is often a critical element of your branding and hence business value offering… Your technical architecture could literally be the difference between success or failure in the online world.
If you would like to improve your software architecture, Aykira provide consultancy services specifically for this – please get in touch.