I have been an IT professional since 1985 working in many industry verticals, for many enterprises, on couple of hundred different software development projects. Over that time I have seen multiple software development architectural frameworks, patterns and tools come and go. Our languages, libraries, IDEs/tooling and DevOps have continuously evolved with the promise of making coding easier. Our infrastructure options have significantly evolved and we can deploy in cloud as well as on-premise.
Given all of this progress, one thing strikes me as a failure – the effort, cost and risks of building and operating software applications still hasn’t come down significantly in decades.
Looking back over my career, I have worked and consulted in every aspect of software application development. I have see many different reasons why particular projects succeeded or failed. Sometimes projects fail because of fuzzy requirements, poor project management/governance, incorrectly set expectations…
But the root cause of the failure is often deeper and unseen – the enterprise simply lacks an IT Architecture.
The vast majority of enterprises where I have consulted simply don’t know what an IT architecture is. When I ask for their IT architectural documentation I’m lucky to get a MS-Visio diagram with a list of servers or applications. These servers and applications are added to enterprise over time with little thought as to what or why.
I’ve seen relative small organizations with several hundred servers, 150+ applications, 80+ different languages/databases/frameworks and 30 overworked IT staff that can’t even support all of the business applications. Data is siloed by application, workflow is not automated, producing consolidated reports is a time consuming and manual process. The IT department effectively becomes an anchor to the past because making changes is risky, time consuming and expensive. This leads the business to adopt shadow IT workarounds outside the scope of the formal It department – which only adds to the overall costs and risks.
So what’s the alternative?
Develop or adopt an Enterprise IT Architecture that is appropriate for your requirements.
A strong architecture should help you define:
- How your business works
- How you store and integrate data
- How your applications create and maintain your data
- The technology used to deploy your applications and data.
An IT Architecture isn’t a one and done – it needs to be maintained over time as your business, data, applications and technology evolve. It also isn’t something you adopt and everything magically changes. It’s something you adopt and then apply to all new development projects to bring your IT department into line behind your IT architecture to more effectively support your business.
So how does an Enterprise IT Architecture help?
- The Business IT Architecture should help you develop a common understanding your operations shared by your users and developers. This helps eliminate many of the fuzzy requirement issues and correctly prioritize functionality for development
- The Data IT Architecture should help you break down the application data silo boundaries making it easier to share data across your enterprise, automate workflows and consolidate reporting/analytics.
- The Application IT Architecture should help you reduce the number of applications and eliminate much of the data dual-keying. This will reduce both operational costs and data errors.
- The Technical IT Architecture should help you reduce the size of your infrastructure footprint whilst improving the availability of your business applications
Overall the IT Architecture should help you reduce the number of different languages, platforms and technology stacks that you have to support and make it easier for your IT team to maintain operations, reduce costs and risks.
A good IT Architecture will standardize how your It is built and deployed so that each project will start with a solid foundation from which to build – significantly reducing costs and risks.
So where do I start?
A good example of an Enterprise IT Architecture is Data Agnostic Services, this application architecture builds on the best practices of many modern architectural patterns.
An extensive implementation of Data Agnostic Services is trellispark produced by Great Ideaz using the latest Microsoft stack – .NET 6/WASM/Blazor.