The Joy of Serverless

Today’s post is a little bit different to usual. I want to address a discrepancy between how aficionados talk about serverless and how it’s covered in written material. In this post, I shall unashamedly extoll the subjective (perhaps even emotional) virtues of serverless software development. I shall draw on some quotes from members of the serverless community and discuss what it is about serverless that makes it so joyful.

In recent years the technical virtues of serverless architectures have been extolled ad infinitum. Holy wars have reigned over precisely what “serverless” means, whether fears of “vendor lock-in” dictate that we should stay away, or whether it’s all a fad. I’m not planning on weighing-in on these discussions. Nor am I going to be drawn into the “there are still servers in serverless” squabbles. No, what I’d like to do is offer another perspective.

In this post, I’ll be talking about the joy of serverless development. Hopefully, I can tempt somebody who hasn’t yet explored the world of serverless architectures to do so.

Developing serverless applications is fun.

That’s a big claim, but I’m going to back it up. Let’s start with personal experience.

Over the past four years, I’ve built and maintained a wide range of applications. Some were internal back-office systems. Others powered popular mobile apps. What unites them all is that they all feature serverless elements, or in some case entirely serverless. I’ve worked mostly with Azure, but have some experience with AWS and GCP.

Regardless of the technology, the developers I’ve worked with on these projects have enjoyed working with serverless technologies. And I don’t just mean that they’ve enjoyed not having to deal with servers, but something more fundamental than that.

Outside of my day-to-day jobs, I’ve also had some exposure to the broader serverless community. I was one of the organisers of the inaugural ServerlessDays Melbourne last year and also had the opportunity to attend our sister event ServerlessDays Sydney.

Both events were jubilant celebrations of creativity. Everyone there seemed to be passionate about the technologies we were discussing. Now, I’ll accept that this may partly be due to a degree of selection bias. Still, I maintain that the vibe of these events was more energised than any other software-related conference I’ve attended.

What is it that serverless developers enjoy?

To explore why serverless developers enjoy the paradigm, I decided to try and draw on experienced beyond my own. I asked my network on LinkedIn for their thoughts and also started a discussion on Reddit. To my surprise, 11 people took the time to share their thoughts. So, before diving into my findings, I’d like to thank everyone who responded!

As you might have guessed, each of the respondents was broadly very positive about serverless. (There were, however, some caveats applied, which reassures me that I wasn’t just talking to fanatics.) Many of the answers included themes that align with the frequently cited technical and organisation benefits, but there were some surprises too.

I’ve been through the answers and tried to code them to extract themes.

Scaling, costs, and speed

Given that they are the most commonly cited benefits of a serverless approach, it’s no surprise that ease of scaling, low costs, and speed of development were mentioned many times in the responses.

I’ve considered cost and scaling as one theme since they are often mentioned in tandem. It seems not only to be the overall cost per se that is attractive but the predictable way in which cost scales with usage.

Mishal Sanghvi mentioned that developers can “start with an idea and a small budget“. Likewise, @xavi_lefevre appreciates “knowing (at least believing) that it’s only consuming resources when needed“. Sneha Biswas explains that one of the reasons she loves serverless is “scaling up and down and being so cost-effective“.

Overall, four of the eleven respondents cited costs and scalability as one of the reasons they enjoy working with serverless.

Speed of development is another significant factor. Three respondents cited this directly. Rodgerjm put it succinctly: “I’ve observed and built serverless/microservices projects in days instead of weeks or months.Szotrj echoes this sentiment: “I can […] iterate extremely quickly, and deploy a new capability in a matter of hours.”

Fewer distractions, less worrying, more focus

Another group of themes from the responses all relate to manifestations of simplicity. Whether it’s the reduction in cognitive overhead, the ability to focus on solving business problems, or respite from the fear of something going wrong, the underlying cause is a lower level of embodied complexity for the developer to handle.

I was surprised by the number of responses that used the word “worry”. It was the most prevalent of all the themes I extracted from the answers. With hindsight, it makes sense: worry is unpleasant, can be chronic, and often lacks a clear route to resolution.

My favourite comment about worry was from mightydjinn: “[Serverless] increases safety with staged rapid iteration, and reduced blast radius of bad events when they do occur.”

VAST_BLINKER_SHRINK is all about the simplicity: “Love never having to SSH into another server ever! Love never worrying about server crashing ever! Love not having to worry about application state! Love the simplicity the mental model!

Matt Gillard neatly explains how simplicity gives us the freedom to focus on what matters: “I have spent too many years building infrastructure from the ground up, just to host business logic, and having to deal with procurement, building snowflake OS’s, patching, identity management. Serverless (or should I say thinking with a serverless frame of mind; i.e. thinking about business events and event-driven architectures!) removes the need to worry about these things and allows the investment to be made on stuff that is directly beneficial to business outcomes.

The fascinating thing about this theme is that it is the flip-side of one of the prevalent arguments against serverless. A recurring criticism is that simplicity comes at the expense of control (see this article). To a large extent, this is true – the complexity is still there, but we’ve offloaded it to a specialist provider, and we no longer need to worry about it. This concern may be legitimate for some projects. In my experience, however, this critique is very often just a modern version of Not Invented Here syndrome.

The fact that so many of the respondents mentioned these themes (less to do, less to worry about, increased focus on business problems) signals to me that developers truly value the simplicity once they’ve embraced serverless. The big question is whether serverless aficionados gravitate towards the paradigm because they are predisposed to prefer simplicity, or whether they have had to overcome negative feelings associated with loss of control?

Other notable mentions

The themes mentioned above all have more than one response supporting them. Perhaps the most interesting comments, however, were mentioned only once. Although we can’ really generalise from these, I think they each say something profound about the experience of working with serverless.

First off, we have Sneha, who ends her response with “It is just absolute fun!” And I fully understand what she means. Creating, inventing, building – there’s a real thrill to it. Without the other complexities and overheads, we are free to just, well, enjoy ourselves.

The next one (from spopgg3) is fascinating: “I feel guilty sometimes, because someone else is managing the hardware and software of the server. It’s like magic.” This reaction was not one I had anticipated, but it makes complete sense. It’s natural to feel spoiled when we’re used to having to worry about all the little details and suddenly have these taken care of for us. It almost feels a little too good to be true!

Finally, @xavi_lefevre said something that resonated deeply with me: “Talking about pure selfish enjoyment: feeling like a pioneer discovering a new territory full of promise.” For a lot of us, the transition to serverless has been a voyage into the unknown – one that has certainly paid off. Like a weary traveller who has hiked for days, we crest a hill, and spy verdant pastures of untold opportunity unfurl ahead of us.

What does it all mean?

For this post, I wanted to go beyond the dry technical discussions of merit. While I firmly believe that serverless approaches do tend to have concrete benefits over their more serverful counterparts, it felt like the draw for me was as much emotional as rational. I wanted to probe into this aspect – why do serverless developers seem to enjoy serverless so much?

I’m so grateful to those who responded to my question. What I think I’ve found is a range of different qualities of serverless development that bring joy to developers. While some of these are derived from (and closely related to) the technical benefits of serverless, there is another significant grouping of qualities that are more connected to the mental agility and wellbeing that serverless affords. Further, there seem to be a third, more idiosyncratic, group of responses that seem more personal.

It should not be surprising that there is considerable overlap between the sterile, advertised advantages (scaling, cost, speed of development) and the more emotional responses. After all, as professional developers, we take pride in our work, and thus we gain satisfaction from tools that enable us to do our job more effectively.

Similarly, it makes sense that lowering the complexity and eliminating causes of stress would be desirable. Nevertheless, I was somewhat surprised by the prevalence of these themes. The word “worry” cropped up repeatedly. It strikes me that serverless developers may feel liberated from a burden of which they may previously have been unaware. The developers who responded seemed to be glad of the relief from having to carry around arcane knowledge, from being stressed by the possibility of significant downtime, or from simply being distracted from core goals. In short, these developers enjoy being able to focus on what matters.

Finally, we have responses that are pure emotion: The feelings of being spoiled by the luxury of managed services, the wonder of exploring new technologies, and the sheer joy of developing serverless applications. These feelings come from the heart and, in my opinion, are probably under-represented in the responses I got. As engineers, we naturally tend to be somewhat stoic sorts. Insights like this give us a peek behind that curtain.

The joy of serverless

People will identify many reasons for their fondness for serverless, and just as many ways of expressing those sentiments. What is clear is that serverless developers are often passionate about the approach. This passion, I would wager, is a significant factor in the commercial success (and continued growth) of serverless offerings. No matter how stoic some engineers appear, we are ultimately all emotional animals.

It is essential to recognise that not all engineers are alike. As Ant Stanley wrote: “Serverless is a buzzword that has marmite appeal.” Although I strongly suspect that the ranks of serverless proponents will continue to swell in the coming years, there will be those who genuinely prefer a more serverful approach.

If there are any reading this far down who are not already converts to serverless, I strongly encourage you to give it a go. It may seem alien at first, but there’s a good chance you’ll end up loving it. Or perhaps you tried it before and didn’t enjoy it? As serverless continues to mature, the tooling, documentation and community all become richer, making for a more accessible and rewarding experience. In other words, you should take another look!

For those of you that happen to like the taste of marmite serverless, I would very much like to continue to hear your reasons. What is your favourite aspect of serverless? Let me know in the comments.

Naturally, having had our passion for serverless suitably validated, the instinct would be to go and share it with the uninitiated/hesitant/resistant. When evangelising, however, we must be sensitive to the preferences of others. No matter your sincerity, pushing too hard will switch people off. We must also remember that their choices do not invalidate your own – you are not less of a developer for preferring less server.

Personally, I was thrilled to see the topic of serverless evoking so many expressions of joy. And so varied too! It bodes well for the continued health of the community and for the longevity of a development style that I find so enjoyable.

It feels as though the most fitting ending to a post like this would be some sort of rallying call, so I will do my best… Rejoice in the fact that serverless is fun! Feel no guilt for enjoying your craft. Dear reader, I implore you: Go forth and (gently) spread the joy of serverless!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.