When I first started in the software industry in the 1990s, Microsoft was on a five-year release cycle, SAP three years, and Salesforce was just beginning to get traction. I worked at a Java groundbreaker called Epicentric, whose one-year release cycles were considered "blazing fast.” We even had big “release parties” to celebrate them. Now yearly releases are considered quaint. Now my own company, LaunchDarkly, releases “even on Friday afternoon”—traditionally a no fly zone.
Today, the smartest companies are releasing software thousands of times a day in an approach called “continuous delivery,” a software-development practice of continuously releasing functionality in small chunks.
What’s fueling the spread of continuous delivery is supporting technologies like SaaS, Continuous Integration, as well as business needs like user expectations, lean startups, and most interestingly, employee satisfaction.
It used to be enough to release a new version of Windows every four years. Then companies like Facebook set the bar high with software that continually evolves.
“We had to earn every single user, by building a products that was both ‘loved by users and trusted by IT,” said Kevin Henrikson, partner director of engineering at Microsoft and previously co-founder of Acompli.
The Facebook of 2015 is different than the Facebook of 2010, and the
Facebook of 2020 will be even more different. It’s not enough to ship a
piece of software and call it “done.” Acompli, a mobile-first mail app,
faced an uphill battle in a very crowded field.
Mobile has traditionally been tricky territory for continuous delivery, as Apple requires a review of all apps before they push live to customers. Even so, fast-moving companies like Accompli continuously delivered to beta users, who downloaded builds directly. Now a part of Microsoft, Acompli formed the basis for its Outlook app, which is used by billions worldwide.
Companies want to break value into smaller and smaller chunks to see if they’re delivering value to their customers. It’s devastating for a company to work for two years on a huge release, only to find they’ve completely missed the market.
Smart companies like Yammer deliberately engineer their process to get as fast feedback as possible. "You’ll always have imperfect information, so you have to move quickly with the facts you have, so that you can get more data,” said Kris Gale, VP of engineering at Yammer and now CTO at Clover Health. "You’ll always know more tomorrow, but that doesn’t mean you can be paralyzed today.”
Duke Nukem Forever, the followup to the hit game Duke Nukem 3D, took an extraordinary 15 years to develop value. "If an engineer hears in an interview that it’ll take them months to ship something, they don’t want to join the company,” said Will Aldrich, VP of product at SurveyMonkey.
Engineers want to see their work out in the world. From their
perspective, the worst thing is to spend years on a product that never
sees the light of day.
With continuous delivery, engineers can quickly see their hard work go out to real-life users. What has changed the game is the rise of “Software as a Service” (SaaS), which allows users to access functionality over a web browser or mobile app, rather than downloading software application. That makes deployment faster and simpler; if a user has to physically install software, it’s impossible to do true continuous delivery.
All software used to be physically installed on customers' machines. When I was engineering manager at Vignette, we had a “Supported Platform Matrix” to let us know which databases and application servers our software could be installed on.
Now, with the rise of the cloud, customers no longer feel the pain of installation. They just log into a web browser on their desktops or phone apps, and get the functionality they want.
It was an ever moving arms race—Oracle would add 10, and we’d have to
retest it with BEA WebLogic. Given the complexities, customers generally
didn’t want to update more than once a quarter (if even that—some
customers clung to Oracle 6 long after even Oracle had shelved it).
Formerly, developers would code on their local machines, checking code in. When a branch was stable enough, it would be given to Quality Assurance testers to find any issues.
Now, with continuous integration, unit tests can be run in minutes, to better ensure quality. Companies like Rainforest QA can quickly verify within minutes basic functionality, in real time. If every feature needs a two to one QA to developer ratio with deep thorough manual testing, continuous delivery stretches out.
Microsoft had a 2-1 QA to developer ratio, since it was imperative that
their software be bulletproof. The back and forth between developers and
QA could stretch out, as bugs had to be re-verified on each build.
Continuous delivery is a virtuous circle — by delivering features quicker to end users, both employees and customers are happier.