Serverless take the wheel
Serverless requires developers to cede some control to the hyperscaler, but this actually ensures better outcomes and increases developer productivity.
More control is a good thing, right? I mean, who doesn't want the ability to twist every knob and tweak every settings to your heart's desire so that each minute detail of your infrastructure is artisanally handcrafted? I'll tell you who: this guy! Why? Because I have neither the time, energy, nor expertise to even begin to understand the impact of most of those configuration changes. Not only that, but I likely don't even have the information needed to understand which optimizations are required, let alone a way to prioritize them.
Now, I'm not saying that I don't want any control. There are clearly choices we developers must make, right? Right? Like, which programming language we write our applications in obviously, or whether or not we want to use Kinesis instead of SQS? Maybe how long we want our Lambda function timeouts to be, or even better, the amount of memory we want to allocate to each function? There are clear reasons to choose API Gateway REST APIs over API Gateway HTTP APIs, but what about when Function URLs make more sense? Personally, I love manually configuring SQS redrive policies. 🙄
A smarter glue 🤖
Okay, maybe these examples seem extreme now, but Simon Wardley's recent post on conversational programming predicts a future where the vast majority of these decisions are no longer the developer's. As he says, the interface (text or voice) doesn't much matter, but the point is that beyond business logic, everything else is likely just wasted energy repeating the things that have already been done.
Serverless has shifted a massive amount of undifferentiated heavy lifting off of application builders, but as he says, "Even in this serverless world, the act of programming still requires you to think about what component services need to be glued together." He goes on to say, "That is still a lot of work to be done and to be blunt, it's work that can mostly be automated and achieved through some form of intelligent compiler." I couldn't agree with this more.
Control is an illusion 🌀
There has been a rapid evolution in automation and systems intelligence fueled by the meteoric rise of public clouds. For those of us that used to rack servers and configure firewalls, control was required. But every step along this evolutionary journey has seen more and more of this control become not only unnecessary, but it actually holds you back. This pattern has repeated itself over and over again. In tech, many people's identities are defined by their sense of control, which makes inertia to accept the inevitable even harder to swallow.
Most of us don't malloc
memory anymore. Many of you probably never had to in the first place. Today, a huge majority of builders don't spin up and configure VMs, or suffer through endless iterations of nginx config roulette. We should be embracing that. Now the question is, what will we not be worrying about tomorrow?