Extreme Programming Explained (by Kent Beck, the father of Agile) is my first and favourite Agile book. I still remember reading its first edition at the UQ library 21 years ago. Then I naively suggested this new way of software development to the project. The project manager disliked the idea, in particular, the Extreme Programming (XP) name. He might be right about the name part though, Agile is easier to accept.
I bought the 2nd edition on the first day it was out (reserved a copy at McGills Tech Book Store, which no longer exists). I read it many times, it is so good, still get more insights after so many years. It is a pity that while virtually all projects claim to be “Agile”, most of them do fakely.
“Daily Deployment (to production)” is an XP practice. I know some fake agile coaches will argue that XP ≠ Agile. I think if they understood the history of Agile and the work that Kent Beck did, they probably wouldn’t say that. Anyway, putting the arguments aside, “Daily Deployment” is surely a good thing. This would make Agile more real than “dragging user stories in JIRA” or “writing some notes on retrospective sessions then forgetting all about them”.
First of all, “Daily Deployment (to production)” is feasible, and it is more natural than most think. I wouldn’t repeat what Kent wrote in his book. I will just share my experiences.
For all of my web apps: ClinicWise, SiteWise and WhenWise. If there are any changes to the code base, I will deploy to production that day on a condition: passing automated regression testing in the Continuous Testing server.
People are puzzled about “Daily deployment to production” because test automation (end-2-end in particular) and Continuous Testing are not a part of their daily working life. The top engineers, such as Kent, take quality for granted.
Still not a believer? check out this article by Wired: The Software Revolution Behind LinkedIn’s Gushing Profits.
“It was Scott and his team of programmers who completely overhauled how LinkedIn develops and ships new updates to its website and apps, taking a system that required a full month to release new features and turning it into one that pushes out updates multiple times per day”.
“Newly-added code is subjected to an elaborate series of automated tests designed to weed out any bugs. Once the code passes the tests it is merged into trunk and cataloged in a system that shows managers what features are ready to go live on the site or in new versions of LinkedIn’s apps.”
It was quite clear: LinkedIn totally changed its development process: continuously testing the apps with automated tests to enable release to production multiple times a day. The detail was not covered in this article, you will find this presentation “Continuous Integration at Facebook” helpful. Also, you might have heard of “Facebook updates its code twice every day”.
Here I want to point out: to have the confidence to release daily to production, you must have a comprehensive automated end-to-end regression suite, as stated in the “How Google Tests Software” book.
“For all of our end-to-end tests at Facebook we use WebDriver”
— in “Continuous Integration at Facebook” presentation by Katie Coons
Want to do real Agile? Start learning end-to-end test automation today. I recommend Selenium WebDriver, which Google and Facebook use. Selenium WebDriver is the most flexible and easiest-to-learn web test automation framework, and a W3C standard, period. Then set up a Continuous Testing process to run all the Selenium tests daily, gradually moving up in AgileWay Continuous Testing Grading.
Further reading: