Back when I was a boy, we ran servers on bare metal and we liked it.
And then there were containers.
And then there was AWS Lambda: “Run code without thinking
Dwindling are the folks who might even know what “lsof”, “ps”, “top”, “nc”, “traceroute”, “df”, and “ldd” are, much less when to use them.
Actually, Lambda is pretty great, and I use it a lot, but damn does it make it easy to grow your attack surface and forget that you’ve done so. And, at the end of the day, there are servers, and that reality has implications for availability and latency in whatever system you are building.
Meanwhile, infra-as-code faculties have proliferated, and many folks are using them, but the siren’s song of infra-as-clicks is quite strong, and the potential to create a non-repeatable mess in the cloud provider of your choice is great.
But let’s get more concrete…
Today I was in the pantry at the office and on the TV I saw some talking head with a green-screen behind him on which three logos were painted in a repeating pattern: New England Patriots, Dunkin Donuts, and… Zudy:”No Code Apps”.
Football, donuts, and faux enterprise software development. LOL WUT.
Zudy’s marketing hype is intense: “No Code Enterprise Apps; Join The No-Code Evolution; Build game changing apps in days”.
Oh, FFS. It was bad enough that we had to endure the No SQL shenanigans for about a decade before Make SQL Great Again got legs. Now we’re going to pretend that we can develop apps without even thinking?
Spoiler alert: creating apps is easy; developing them over time once data has begun accumulating and people have begun broadly using them is hard.
We are witnessing a proliferation of shiny technologies that make it easy to bring new capabilities into existence, with the promise of old baggage being jettisoned, but we are not seeing commensurate faculties to manage and evolve these capabilities as we attempt to navigate a full system lifecycle.
I’m sorry, but the majority of the code written for a mature software system centers on logging, testing, data modeling, exception handling, security hardening, performance tuning, configuration management, release management, and inter-version compatibility. This is the inescapable bread-and-butter engineering work of taking the kernel of an idea to a robust system that can handle day-to-day usage by an army of users in a way that is not completely maddening.
This is not new. But the frequency with which products like this crop up is increasing. We see examples of it in such offerings as Splunk, Phantom, and NiFi. And yet the well of uncomfortable truths tells us that “you’ll never find a programming language that frees you from the burden of clarifying your ideas”.
But, fear not… If you get yourself wrapped around the axel, Zudy has an “AppFactory” and is more than happy to “Let Zudy’s experts build your apps for you.” Congratulations. You just built yourself a thicket of tech debt and hired some third rate contract programmers who will hold you hostage in perpetuity.
There are two kinds of enterprises: the kind who create and manage software deliberately and wittingly, and the kind who do so accidentally and unwittingly. Which will you be?