The Agile development movement can be rightly said to have inspired and driven the vast majority of software development projects since its origins.
There are various different methodologies that refer to themselves as “Agile” (Scrum, Kanban, Extreme Programming (XP), etc), and fierce debates have occurred between developers as well as project managers as to which of these methodologies are better (or worse) at delivering results.
These debates can be pretty interesting, and many good points are usually made by people who try to advocate for one Agile system over another.
They seem to assume that things like changing from a 3-week sprint to a 2-week sprint (or no sprints at all) will bring radical results; or that, the reason we’re not producing high-quality work is, perhaps, because we don’t have a Product Owner.
I do not deny that there is some merit to those discussions and that, based on the particulars of your team and your product, a methodology may work better than another.
But having worked with a number of teams, and having tried virtually every sprint length (even 1-day sprints!), I am less and less convinced that we should be spending too much time talking about those things.
As a technologist, I tend to view whichever Agile flavour or methodology we use simply as a set of ceremonies that demarcate what kinds of meetings we are going to have (e.g. sprint planning, standups, etc), and how often.
On the other hand, I am concerned by how not enough time and energy are spent debating and arguing for the right technological choices.
I am, of course, an advocate of serverless technologies. This is because I believe that (with some exceptions) adopting a serverless approach can turbocharge a team’s productivity, reduce costs drastically, and deliver high-quality products that perform at an enormous scale.
I am not aware of any agile methodology that can deliver that much value. They might promise that, sure, but in my personal experience I have never seen those promises becoming a reality.
By contrast, I have seen -over and over again- teams adopting a Serverless Mindset and becoming truly agile: these teams are intensely more productive while also delivering much better value to their customers.
In this post, I am going to highlight 3 agile-inspired benefits that come directly from embracing serverless technologies. Each benefit is linked to an idea from the Agile Manifesto.
#1 Reduced Delivery Time
“Responding to change over following a plan”
As Stephen Orban says in his wonderful book “Ahead in the Cloud”:
The cloud allows companies with a small amount of capital to come out of nowhere and disrupt entire industries. AirBnB, Pinterest, Uber and Spotify, for example, didn’t even exist 10 years ago. Now they’re redefining entire industries with businesses powered by the cloud.
It is, of course, entirely possible to “use the cloud” while still retaining the old mindset. The easiest way to spot that is when a workload could easily be moved over to an on-premise data centre.
By contrast, serverless is the best way to be on the cloud and to take full advantage of it. That, in turn, enables us to move fast and deliver value quickly.
#2 Increased Focus on the Customer’s Needs
“Customer collaboration over contract negotiation”
Given that you don’t have to set up massive clusters of infrastructure, you can simply focus on your customers' needs by building the business logic. You can respond to their needs by iterating quickly. You don’t have to pre-commit to anything.
Once a team has embraced serverless, things like setting up a new microservice, building a new endpoint, or adding a new feature, are fundamentally very simple.
Of course, some things are more complex than others, and spending a few minutes drawing a diagram can help clarify and de-risk things a bit.
Since the cloud takes care of an enormous amount of undifferentiated heavy lifting (and much more so when using serverless technologies), a team can build anything in small iterations, getting customer feedback, and adapting as they learn what works and what doesn’t.
#3 Improved Collaboration Within the Team
“Individuals and interactions over processes and tools”
Serverless encourages DevOps, which allows self-contained teams to design, build, and deliver working products.
Then, as the product (and the overall team) grows, an application can be split into multiple microservices which allows multiple small teams to fully own a specific part of the system.
There are no blockers. There is no Operations or Infrastructure team needed to set everything up before the code can go live. Serverless developers can build a product directly in the cloud and own its entire lifecycle from conception to development to deployment.
The Takeaway
Principles inspired by the Agile movement are admirable and highly-effective
The product management side of Agile matters, but not as much as we have traditionally thought
Choosing the right technology is an underrated (yet highly effective) way to turbocharge our adoption of true Agile principles
Serverless is by far one of the best technological choices since it has a direct effect on a team‘s ability to deliver real value quickly