Randy recently shared this great set of slides, which summarises a bunch of experience in scaling Web companies. My only quibble would be the title – in that the lessons are just as relevant to modern enterprise IT. One of the biggest mistakes we’ve made over the last 30 years, with our focus on “enterprise scale”, is constant premature optimisation – architecting and budgeting as if all systems had to have mainframe class reliability and scalability. The irony of course is that IT spent some much time and money trying to achieve mainframe characteristics, having decided mainframes weren’t flexible enough to support the business. IT hasn’t spent enough time considering engineering trade offs as they relate to the business, with a careful focus on types of workload. I am not a believer in bimodal IT, but rather taking an approach which is more initially experimental, and then iterative, for new business services in all areas.
One of the core messages of Randy’s presentation is about disposability. The code that proves product market fit is not going to be the same code that later scales to 20m users. Organisations are constantly tasked to do more with less. One way to achieve that is with minimum viable architecture. Spend money maintaining systems that justify it. It’s not only silos that we need to break down, in becoming more agile, but also huge IT contracts. Today enterprises should adopt approaches more like Web companies. Bring a small team development team together with a product owner, spin up an AWS instance, let the engineers choose the open source stack they feel will deliver a working model fastest, and get started. It’s important to stress here that product market fit can be applicable to internal, not just consumer facing apps. Disposability is definitely not the comfort zone for most enterprise IT organisations, but they should be helping these small teams to scale, in architecture and personnel only once they are ready. Before that it’s their job to get out of the way.
In truth there is nothing new in any of this thinking. Shadow IT has always chosen technology that “didn’t scale”. Until it did. There was a time when Oracle, now a paragon of “enterprise IT” was more like MongoDB as it exploded in popularity – super accessible and low enough cost for a department to adopt. If it fell over every now and again, that was a small price to pay for development velocity. Today we see major banks claiming they won’t run their business on MongoDB even though they already are. The CIO is the last to know.
This post serves as a follow up to my question – how are we going to achieve escape velocity for modern software development? If enterprises are going to drive a successful digital transformation, and develop a culture that supports agile development and devops, then they need less architecture, not more of it.
Oracle and MongoDB are both clients.
(Read this and other great posts @ RedMonk)