Plus ça change, plus c'est la même chose





In The Beginning

The early 2000s was the heyday of outsourced IT. Better global telco networks, higher speed internet and remote working meant offshore IT professionals could be easily deployed to implement and support Monolithic systems like Oracle and SAP databases. This involved kind of longterm transformation programs that guaranteed revenue streams for the IT services companies doing the implementation and maintenance work. 

And for a time, it was good

A golden age of profitability and expansion for IT services had arrived. Clients had straight-forward but manpower-intensive problems that meant long luxurious engagements where the technologies were either legacy or emerging. Want to reduce costs of your IT overhead? Improve efficiencies and streamline processes? Take 5, no better yet, 10 years to implement the latest Monolithic information system. And of course you have to use an external implementation partner to provide the necessary specialists and workforce. IT services rose to the challenge by providing a bottomless pool of technical graduates to work on custom-heavy SAP and Oracle projects. Head counts rocketed and the IT world was a comfortable, straight-forward place.

However, there were clouds on the horizon....literally 

The advent of SaaS and cloud computing moved the emphasis from on-premise systems with the associated implementation and maintenance overhead to agile, extensible platforms held on remote access server stacks.

The platforms still needed to be implemented but useful out-of-the-box functionality along with the promise of reduced time and cost to implement began to sound the death knell for the bloated Big T transformation projects of the past.

Implementations went from years to months, with a basic Salesforce standup taking weeks. SaaS customers could start seeing ROI with relatively low TCOs within a shorter space of time than ever during the reign of on-premise systems. As with any disruption the incumbents, like IT service companies, struggled with the new reality presented by cloud computing.

However, over time strategies adjusted and profit margins with them. The future looked bright, the cloud held all the answers. And SaaS customers could believe they were free of over-weight IT programs, Monolithic single points of failure and painful IT dependencies impacting business agility. 

But history tends to repeat itself

Unfortunately, the reality didn't quite live up to expectations. Nearly 20 years on and SaaS customers face similar challenges presented by the on-premise Monoliths of the past - reduced agility, increased technical dependencies, legacy infra impacts and higher maintenance overheads.

These challenges took longer to manifest for SaaS customers than in the old on-premise paradigm. Whilst SaaS vendors continue to release no-code/low code out-of-the-box solutions every mature SaaS customer has had to eventually go down a custom code route to handle more sophisticated and specific business use cases. As soon as that happens the risk of creating a Monolith, even a cloud-based one, increases.

A new reality appears!

The old on-premise challenges seem to have returned in force. Is there a solution? Or should we be even looking for one?

Some would answer with a hard "yes", if only to maintain some level of independence from vendors and sustain business agility. Some Enterprise SaaS customers have embraced Service Oriented Architectures and Domain Driven Design to offset the Monolith risk - Facades front end a typical cloud-based vendor Monolith, say a CRM platform, and attempt to encapsulate the business logic in a service outside the vendor platform giving the SaaS customer more independence, code re-use options and decoupling dependency on the vendor platform. The customer sets-up their own Services architecture on their own server real estate exposing vendor platform functionality, operations and data structures as a service within their own IT eco-system.

However, this approach still lends itself to high maintenance costs associated with high custom code solutions. That said, it's pragmatic - if an enterprise customer is going to end up with a heavy custom solution anyway better to have it on their own eco-system than increase dependency on an external vendor.

But surely all vendors aren't all bad

A lot of SaaS vendors have anticipated these challenges, in effect learning from the failures of on-premise systems, and put into place infrastructure on their own platforms to either co-exist with customer goals of increased independence or provide tools for sensible customisation but still aim to support business agility.

Most SaaS vendors allow a degree of programmatic management via robust APIs. Some, like Salesforce, allow for complete programmatic access via a suite of APIs supporting everything from polling and messaging to CRUD operations.

Salesforce has pivoted even further, developing the Lightning platform. Lightning provides immense flexibility using an event driven, reusable component framework, much like a Java-based web services architecture, supported by Aura, an open-source Javascript framework. The fact that Salesforce is embracing an open source framework rather than develop a proprietary similar to Apex or SOQL speaks volumes. But of course it requires a custom code solution approach which isn't traditional Salesforce implementation thinking.

Which brings us to the implementation partners - IT services companies and SIs have their own challenges. Out-of-the-box functionality with a low-code/no-code solution approach has meant generations of developers have defaulted to configuration-first thinking which implicitly treats every customer challenge in a one-size-fits-all way. This causes the kind of cookie-cutter templated thinking that makes adaptation hard.

The new reality demands a return to older ways of treating IT challenges: critical analysis of the problem domain in terms of code structure and data flow and the ability to think ahead to ensure the most efficient development and refactoring approaches are adopted. Even with limited or emerging understanding of a customer context. Critical thinking rather than templating becomes a requisite - Defensive coding, attention to NFRs and utilisation of best practise code standards should be essential rather than nice to have approaches.

All in all, whilst everything has changed, everything's stayed the same. That said with the advent of IoT, AI, big data and improved analytics it's never been a more exciting, and challenging, time to be in the IT and digital space.





Comments