Recently I came across this very interesting article about the tendency of companies to outsource critical portions of their businesses.
If you outsource too much? Is there a point where you cannot go back and relearn how actually making things work?
And I realized that I think about this often in my work as a cloud consultant. Are companies besides themselves with cloud adoption? Am I helping them build systems that are too complex for them to handle?
Legacy is a bad word in our industry. Everyone wants to innovate. But the truth is that today’s innovative systems are tomorrow’s legacy ones. I believe businesses need to make peace with this truth: building any worthwhile computer system is an ongoing cycle of relentless improvement and maintenance. Software systems are never done.
A lot of smart people warned us about the possibility of a Technological Singularity, a super intelligent agent that surpasses the most gifted human minds by orders of magnitude. It will achieve self-consciousness and ultimately threaten life as we know it. Some say its emergence is just around the corner.
Quite simply, I don’t buy it. We are hundreds of years away from it. The trivial, non-smart, underlying infrastructure running these amazing artificial intelligences will collapse much, much earlier than any spark of consciousness will be able to emerge.
I don’t dare pontificate on the theoretical or philosophical foundations of artificial intelligence and its often over hyped promises. I have much more pedestrian limitations in mind.
When I help companies with cloud transformations often I come across situations where businesses are in trouble because they completely lost their operational knowledge. Their most senior developers might know how their applications work internally, but they have no clue how the machinery surrounding them keeps them ticking.
As a case study, consider Piripicchio Ltd. Yeah, I just made the name up but the story is real. A few years ago Piripicchio Ltd contacted my then-employer. They were desperately in need to modernize their stack running on legacy mainframes in a co-location data center.
Their core business was based on winning the five years government tender for a very crucial public service. They won for years and years, but this time they were scared out of their mind because the new tender explicitly mentioned that the system was supposed to be hosted “in the cloud” and developed using a “microservices architecture”.
For decades they outsourced the deployment of their core systems to the technicians of the co-location data center itself. They had an amicable and personal relationship with them. The system was rather stable. The company would just email them the zip file with the new releases and the technicians would do the rest. Cool, right?
At the very same time the new tender was looming, said co-location data center was being bought by US Megacorp (I should probably stop making names up) who didn’t give a crap about their very specific, crucial use case and the existing amicable personal relationship. US Megacorp told the company to simply pay them a crazy amount of money to perform the migration and ongoing maintenance or move out.
But the most surprising thing was that they were also so blind to their lack of understanding of their own deployment process that they called for help only two months away from the deadline. They had already started the translation of their mainframe applications from APL to C#. All was left to be done was containerize it and run it on Kubernetes. How hard can it be?
And for the Singularity, it better have a very well trained DevOpsy neural net because is not going very far if it doesn’t know how to deploy itself.