Agile Software Development is continuously gaining momentum in the last decade since the introduction of the Agile Manifesto in 2001. Software-as-a-service (and cloud-based web applications in general) is also gaining momentum in the last decade, roughly during the same period. Is this a coincidence?
Time and again, the technology landscape exhibits parallel fast advancement of synergetic technologies and methodologies.
For example, in the late 90’s, my colleague Elan Dekel has started a company called EarthNoise, offering a video sharing website. Sounds familiar? In 1995, a company called YouTube was founded with a similar idea. It was acquired in 2006 by Google for $1.65b. EarthNoise, on the other hand, went out of business as early as 2001. In the four years that passed, broadband internet access became popular, and so did digital video cameras. The three areas—video sharing, digital cameras and broadband internet—evolved hand in hand to create a new phenomena—user generated video on the web. The ability and desire to share videos online drove increased adoption of broadband internet and digital video cameras (and yielded brand new products such as the now-defunct Flip). The increased consumer demand for broadband and cameras drove down prices and accelerated technology advancement. This in turn increased adoption of video sharing sites. Now, video sharing sites are an inseparable part of our lives.
Arguably, the success of the iPhone is—similarly—largely due to technologies that co-evolve with smartphone advancement: 3G connectivity, Wi-Fi connectivity, touchscreen technology, low-consumption processors and—at least to a certain degree—HTML5.
I would assert that software-as-a-service and agile development methodologies are likewise coevolving and drive each other’s adoption. It may not be obvious, but this creates a spiral effect (or—in Geoffrey Moore’s terms—a tornado) of disruptive innovation that will eventually displace many of the software development paradigms.
For technologies to coevolve spirally, the success of one product (say video sharing sites) has to depend on the maturity and success of a related piece of technology (say broadband). The more that other technology matures, the more value is brought to the product. At the same time, the displaced alternative (say TV or the now-bankrupt Blockbuster) does not benefit from the new set of technologies and gradually get displaced. The iPhone-related technologies I mentioned above generate the same effect when displacing traditional so-called Feature Phones.
Here’s how this spiral coevolution applies to SaaS and Agile Software Development:
Frequent release cycles are (almost) a mandatory component
of a software-as-a-service business
There are several reasons why that’s the case:
Cloud-based applications enable immediate feedback
With traditional software applications, a vendor would launch a new version, roll it out to customers, and come back several months later to collect feedback. With
software-as-a-service, feedback is immediate. Web analytics is at one’s fingertips and can highlight issues and opportunities. There are several other forms of web user feedback that help obtain more guidance from application users.
With immediate feedback available, software vendors can react quickly to add value to customers. In fact, since the cat is out of the bag, vendors must react quickly, simply to stay competitive.
Cloud-based applications are a blend of traditional software applications, marketing tools and advertisement vehicles.
In addition to its core functionality, a typical cloud-based application includes mechanisms for encouraging sign-in and upgrades. It includes marketing activities such as promotions and discounts. Such activities are tightly related to advertisements, which are independently being woven into many cloud-based applications as a way to help fund (at least the free part of) the application.
In an ideal world, all non-core aspects of a software product would be managed separately. In reality, software-as-a-service simply cannot be confined within the traditional application lifecycle because marketing must be managed in a much tighter schedule.
Cloud-based application providers live or die on their product.
Back in the 80’s and 90’s, common wisdom in the business of software was that successful software should either be priced at a >$100K range—facilitating an “enterprise” sales force, or be priced at a sub-$200, selling it to consumers via traditional retail chains. Sub-$100K software did not justify “salespeople with suitcases” and had to be sold through distribution channels. Such channels were not interested in (and not capable of) creating a need with customers, and hence were not able to develop new markets.
The SaaS model is entering right into this “forbidden zone”. The majority of SaaS companies sell a service that is priced between $100 and $100K on an annual basis. Unlike the enterprise sales model, SaaS companies do not have true personal relationships with the client; they cannot afford to sustain sales people who “manage customer expectations” and hold the line until software fixes are created and new missing functions are developed.
In the SaaS world, if the product does not perform, customers will simply not stay. Frequent release cycles are a means to address this situation: add functionality to make customers happy, or die.
Frequent release cycles are impractical for (most) on-premises
That’s pretty simple:
Releasing on-premises software means a physical update of software across many customers.
Admittedly, some software update processes have been implemented. Google Chrome comes ot mind as a piece of software that gets updated transparently behind the scenes.
But, an update process that installs software on thousands or hundreds of thousands of different machines is unlikely to ever be as cost-effective as a single update that happens in a central location, as offered by the SaaS model.
What’s more, software designed for businesses (and especially corporate customers) is even less likely to ever transition into a frequent update cycle. Interestingly, adapted to the idea of software in the cloud updating behind the scenes, but still want full control over the update cycle of software that’s pushed into the firewall.
Releasing on-premises software means testing across numerous platforms.
One of the key benefits of SaaS applications is that they are deployed in a single set of infrastructure. On-premises software, on the other hand, (typically) has to support multiple operating systems and environments. This makes frequent release cycle very costly, and—in practice—cost prohibitive for the masses.
Agile Software Development is mature enough to enable frequent release cycles
Arguably, the maturity of touchscreen technology and low power consumption processors have enabled the success of the iPhone. The success of the iPhone drives further advancement in touchscreen technologies and low power consumption processors.
Similarly, agile software development methodologies have reached a point where they can be used successfully for non-trivial projects. Some of it is pure timing. The application stacks (e.g., .NET, Java and LAMP) have matured enough so that software engineers no longer need to spend time writing infrastructure code, and can focus the little time there is in a short cycle on developing new software features. Agile ideas like continuous integration and test-driven development have “crossed the chasm” and are now supported by commodity tools and frameworks. In the words for Victor Hugo, no army can stop an idea whose time has come.
Because of the SaaS-Agile spiral, further incremental innovation is being generated by Agile community. Continuous integration, for example, has evolved into the idea of continuous deployment. Further advancements are likely to widen the gap between software-and-a-service and traditional software models, until the latter get displaced (or until a competing disruptive technology comes in).
Agile and WebCollage
At WebCollage, we’ve successfully transitioned to frequent release cycles a while back and we now deploy new releases in production almost every week. The change had positive impact on many areas of our business, both external (customer satisfaction) and internal (perception of progress).
In the next post or two, I plan to outline some thoughts on Agile methodologies and SaaS. Feel free to subscribe to this blog if you’re interested in receiving a notification when this finally gets written down.