SlideShare a Scribd company logo
1 of 78
Download to read offline
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA
Continuous Deployment - Lean LA

More Related Content

Viewers also liked

Running Lean - Dallas
Running Lean - DallasRunning Lean - Dallas
Running Lean - DallasAsh Maurya
 
10 Steps to Product/Market Fit
10 Steps to Product/Market Fit10 Steps to Product/Market Fit
10 Steps to Product/Market FitAsh Maurya
 
Business plan vs Lean Canvas
Business plan vs Lean CanvasBusiness plan vs Lean Canvas
Business plan vs Lean CanvasAsh Maurya
 
10 steps to product/market fit
10 steps to product/market fit10 steps to product/market fit
10 steps to product/market fitAsh Maurya
 
Transitioning to-lean-at-infochimps
Transitioning to-lean-at-infochimpsTransitioning to-lean-at-infochimps
Transitioning to-lean-at-infochimpsAsh Maurya
 
How to Identify a lean startup
How to Identify a lean startupHow to Identify a lean startup
How to Identify a lean startupAsh Maurya
 
Running Lean Canvas
Running Lean CanvasRunning Lean Canvas
Running Lean CanvasAsh Maurya
 
What Is A Lean Startup?
What Is A Lean Startup?What Is A Lean Startup?
What Is A Lean Startup?Ash Maurya
 
Building a Lean Startup
Building a Lean StartupBuilding a Lean Startup
Building a Lean StartupAsh Maurya
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable productJulian Simpson
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA EngineerYan Alexeenko
 
A Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassA Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassCurtis Poe
 
Selenium Page Objects101
Selenium Page Objects101Selenium Page Objects101
Selenium Page Objects101Adam Goucher
 
Reliable tests with selenium web driver
Reliable tests with selenium web driverReliable tests with selenium web driver
Reliable tests with selenium web driverPawelPabich
 
Running lean - YearOneLabs, Montreal
Running lean - YearOneLabs, MontrealRunning lean - YearOneLabs, Montreal
Running lean - YearOneLabs, MontrealAsh Maurya
 
Continuous deployment-at-flipkart
Continuous deployment-at-flipkartContinuous deployment-at-flipkart
Continuous deployment-at-flipkartPankaj Kaushal
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytestBrianna Laugher
 
JavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumJavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumAdam Christian
 

Viewers also liked (20)

Running Lean - Dallas
Running Lean - DallasRunning Lean - Dallas
Running Lean - Dallas
 
10 Steps to Product/Market Fit
10 Steps to Product/Market Fit10 Steps to Product/Market Fit
10 Steps to Product/Market Fit
 
Business plan vs Lean Canvas
Business plan vs Lean CanvasBusiness plan vs Lean Canvas
Business plan vs Lean Canvas
 
10 steps to product/market fit
10 steps to product/market fit10 steps to product/market fit
10 steps to product/market fit
 
Transitioning to-lean-at-infochimps
Transitioning to-lean-at-infochimpsTransitioning to-lean-at-infochimps
Transitioning to-lean-at-infochimps
 
How to Identify a lean startup
How to Identify a lean startupHow to Identify a lean startup
How to Identify a lean startup
 
Running Lean Canvas
Running Lean CanvasRunning Lean Canvas
Running Lean Canvas
 
What Is A Lean Startup?
What Is A Lean Startup?What Is A Lean Startup?
What Is A Lean Startup?
 
Building a Lean Startup
Building a Lean StartupBuilding a Lean Startup
Building a Lean Startup
 
Ash sxsw
Ash sxswAsh sxsw
Ash sxsw
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Selenium for Designers
Selenium for DesignersSelenium for Designers
Selenium for Designers
 
A Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassA Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::Class
 
Selenium Page Objects101
Selenium Page Objects101Selenium Page Objects101
Selenium Page Objects101
 
Reliable tests with selenium web driver
Reliable tests with selenium web driverReliable tests with selenium web driver
Reliable tests with selenium web driver
 
Running lean - YearOneLabs, Montreal
Running lean - YearOneLabs, MontrealRunning lean - YearOneLabs, Montreal
Running lean - YearOneLabs, Montreal
 
Continuous deployment-at-flipkart
Continuous deployment-at-flipkartContinuous deployment-at-flipkart
Continuous deployment-at-flipkart
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytest
 
JavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumJavaScript Testing VIA Selenium
JavaScript Testing VIA Selenium
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Editor's Notes

  1. Hi - I am Ash with WiredReach and I'm going to be presenting a case-study on how I transitioned from a traditional development process to continuous deployment. Just to get a sense of who is in the room, How many people here know what Continuous Deployment is? And how many people practice Continuous Deployment today?
  2. If I were to ask you “How do you maximize progress in a lean startup?”, most of you would probably say:
  3. If I were to ask you “How do you maximize progress in a lean startup?”, most of you would probably say:
  4. The “lean” in lean startup is not about being cheap but about speed. It’s about having a strong initial vision and then systematically testing it through tightly defined experiments.
  5. When you first hear: “get out of the building and talk to customers”, it’s easy to think that all you have to do is run a bunch of surveys or focus groups to gather feature requests from customers. It’s NOT. A Lean Startup is NOT about asking customers what they want, but measuring what they do.
  6. But most important of all, a Lean startup is about focus. Startups are inherently chaotic but at any given point in time, there are only a few actions that truly matter. A Lean Startup focuses on those and ignores the rest.
  7. If I were to ask you “How do you maximize progress in a lean startup?”, most of you would probably say:
  8. So lets take a look at where in the development process we learn about customers. Some of this learning happens during the requirements stage in the form of customer discovery when we’re out talking to customers and figuring and out what to build. But most of this learning happens only after we get the product into customers’ hands in the form of customer validation. There is very little learning during development and QA. Sure we learn about other things, just not about customers.
  9. So lets take a look at where in the development process we learn about customers. Some of this learning happens during the requirements stage in the form of customer discovery when we’re out talking to customers and figuring and out what to build. But most of this learning happens only after we get the product into customers’ hands in the form of customer validation. There is very little learning during development and QA. Sure we learn about other things, just not about customers.
  10. So lets take a look at where in the development process we learn about customers. Some of this learning happens during the requirements stage in the form of customer discovery when we’re out talking to customers and figuring and out what to build. But most of this learning happens only after we get the product into customers’ hands in the form of customer validation. There is very little learning during development and QA. Sure we learn about other things, just not about customers.
  11. Even though building a product is the purpose of a startup, you could say that Product Development actually gets in the way of learning about customers.
  12. While we obviously can’t eliminate development and QA, we can shorten the cycle time from requirements to release so we can get to the learning parts faster. That is exactly what Continuous Deployment does. Continuous Deployment shortens the cycle time it takes to build, test, and deploy features. Shorter cycle times mean we get feedback faster and learn faster.
  13. While we obviously can’t eliminate development and QA, we can shorten the cycle time from requirements to release so we can get to the learning parts faster. That is exactly what Continuous Deployment does. Continuous Deployment shortens the cycle time it takes to build, test, and deploy features. Shorter cycle times mean we get feedback faster and learn faster.
  14. While we obviously can’t eliminate development and QA, we can shorten the cycle time from requirements to release so we can get to the learning parts faster. That is exactly what Continuous Deployment does. Continuous Deployment shortens the cycle time it takes to build, test, and deploy features. Shorter cycle times mean we get feedback faster and learn faster.
  15. While we obviously can’t eliminate development and QA, we can shorten the cycle time from requirements to release so we can get to the learning parts faster. That is exactly what Continuous Deployment does. Continuous Deployment shortens the cycle time it takes to build, test, and deploy features. Shorter cycle times mean we get feedback faster and learn faster.
  16. While we obviously can’t eliminate development and QA, Lean Startups shorten the cycle time from requirements to release by continuously deploying features and involving customers throughout the development process. These shorter cycle times translate to faster feedback and faster learning for the startup.
  17. Here’s an overview of what I’ll be talking about today. I’ll describe what my development process looked like before and after continuous deployment. I’ll talk about how I got started and how I build features now.
  18. So, before Continuous Deployment, we used to release on a 2 week cycle which is fairly fast by most standards. We used to spend about a week in development and then QA tested for another 2-3 days before we deployed to customers. Now we release multiple times a day.
  19. Before Continuous Deployment, we had a common staging area that mirrored production. This is what we used for development and QA. It worked fine in the early days but as we grew, coordinating around a single staging area became a problem. Now we build complete standalone sandboxes for development and QA. Each developer has the complete system on their workstation which gives them a lot more freedom to experiment. Each QA machine also runs on a standalone sandbox which makes it easier for us to do isolated testing as well as scale the testing infrastructure horizontally.
  20. Before Continuous Deployment, releases were all day events. We would do a code freeze typically on a Thursday and spend most of Friday building, testing and packaging a release. Now a release is triggered automatically every time we commit code. The system is run against a battery of tests and only deployed into production if it passes all the tests. We constantly monitor the production environment and can tell good changes from bad changes quickly and revert a release if we need to. Our release process currently takes about 20 minutes.
  21. Before Continuous Deployment, the average size of a release was measured in hundreds of lines of code. Now a typical release is under 25 lines of code.
  22. When you are committing 25 lines of code versus hundreds per release, the impact on the system is much more localized. This has led to fewer production emergencies and less firefighting for us.
  23. But most important of all, if you are a technical founder like me, you constantly have to trade-off outside the building activities like customer development against inside the building activities like product development. Before Continuous Deployment, I had to schedule my week for coding days and customer days. Now I can do both in the same day. I schedule my coding in 2 hour blocks usually early in the day. That leaves the rest of the day open for everything else.
  24. So, Continuous Deployment sounds great in theory.
  25. But taking the plunge was still scary. The biggest reason for us was having the feeling of there being no safety net. With a traditional development process, there is a QA cycle before deployment which provides a safety net of time and there is some comfort in sharing testing responsibility with someone else.
  26. But taking more time in QA was not always optimal for us: - despite our best testing efforts, bugs still crept into production - bugs got more expensive and harder to fix the longer we waited - but most important of all, we felt we weren’t learning anything about customers during that time The answer isn’t taking more time in QA but less through test automation and getting better at detecting and fixing issues in production.
  27. But taking more time in QA was not always optimal for us: - despite our best testing efforts, bugs still crept into production - bugs got more expensive and harder to fix the longer we waited - but most important of all, we felt we weren’t learning anything about customers during that time The answer isn’t taking more time in QA but less through test automation and getting better at detecting and fixing issues in production.
  28. But taking more time in QA was not always optimal for us: - despite our best testing efforts, bugs still crept into production - bugs got more expensive and harder to fix the longer we waited - but most important of all, we felt we weren’t learning anything about customers during that time The answer isn’t taking more time in QA but less through test automation and getting better at detecting and fixing issues in production.
  29. But taking more time in QA was not always optimal for us: - despite our best testing efforts, bugs still crept into production - bugs got more expensive and harder to fix the longer we waited - but most important of all, we felt we weren’t learning anything about customers during that time The answer isn’t taking more time in QA but less through test automation and getting better at detecting and fixing issues in production.
  30. But taking more time in QA was not always optimal for us: - despite our best testing efforts, bugs still crept into production - bugs got more expensive and harder to fix the longer we waited - but most important of all, we felt we weren’t learning anything about customers during that time The answer isn’t taking more time in QA but less through test automation and getting better at detecting and fixing issues in production.
  31. So lets take a look at how we got started.
  32. Here’s some background on WiredReach and the type of products we build. We’ve been in business for 7 years and have launched 2 products - BoxCloud and CloudFire. The first product BoxCloud was built using a release early, release often methodology while CloudFire was built using Lean Startup techniques. Both products are hybrid web/desktop applications. What I mean by that is they have both a web component and a downloaded client component which runs on mac and windows.
  33. Here’s some background on WiredReach and the type of products we build. We’ve been in business for 7 years and have launched 2 products - BoxCloud and CloudFire. The first product BoxCloud was built using a release early, release often methodology while CloudFire was built using Lean Startup techniques. Both products are hybrid web/desktop applications. What I mean by that is they have both a web component and a downloaded client component which runs on mac and windows.
  34. Another problem with tests is that over time, they get out of date and start failing. I’ve worked in places where developers start ignoring these which is a slippery slope as the problem only keeps getting worse. In Continuous Deployment, these tests are your only line of defense before deploying code, so you have to take failing tests very seriously. We only deploy a release if it passes all the tests. Otherwise, we stop and fix the tests first.
  35. The first and most important practice we adopted was fitting releases into small batch sizes. Coding in small batches is the key concept in continuous deployment and can directly be attributed back to shorter cycle times, faster feedback, and a better work flow. For me, a small batch is the output of a 2 hour work block. We can not always build a full feature in 2 hours but we have gotten good at deploying features incrementally. We start with non-user facing changes first, like api updates and database changes, before building user-facing changes. Even deploying these changes early greatly help to lower the integration risk of a feature.
  36. Before Continuous Deployment, the average size of a release was measured in hundreds of lines of code. Now a typical release is under 25 lines of code.
  37. When you are committing 25 lines of code versus hundreds per release, the impact on the system is much more localized. This has led to fewer production emergencies and less firefighting for us.
  38. We now have a practice of writing a new functional test with every user facing change, but we didn’t start that way. We got started by writing a single test for the user activation flow first. This is the path users take when they first signup, download and interact with our product. If something goes wrong here, nothing else matters after that.
  39. The next thing we did was not try to achieve 100% automation from the start. We kept deploying these small batch releases manually for a while and audited everything we did. This helped us build confidence in the process and overcome some of the initial fear of loosing control. We already had a continuous integration server that ran a large collection of unit tests but once we took out the formal QA step, we found ourselves preferring functional tests over unit tests since they were much better at reflecting what users actually did with the system.
  40. You’ll eventually want to build one of these cluster immune systems (just hopefully not that one) that can automatically tell good changes from bad ones and do something about it. But here too, it’s important to build it out incrementally. We got started simply monitoring the health of production servers using off-the-shelf tools like ganglia and nagios. Over time we built other application and business level monitoring into it. We did this mostly reactively to production issues. 5Whys.
  41. Lastly, I want to spend some time talking about how I build features. Continuous Deployment shortens the cycle time it takes to deploy features but how do you make sure you’re actually building what customers want and not simply cranking out new features faster. Here are some rules we follow.
  42. Features must be pulled not pushed. If you’ve followed a customer discovery process, identified your top 3 problems, and defined a mvp, you do not need to push more features until you have validated your mvp. This doesn’t mean you stop development, but most of your time should be spent measuring and improving existing features versus chasing after new problems to solve. From experience, I know this can be a hard rule to enforce and the next rule helps with that.
  43. A good practice for ensuring the 80/20 rule is constraining the features pipeline. This is a common practice from Agile and Kanban, but with the addition of a validated learning state. Here’s how it works: Ideally, a new feature must be pulled or tested with more than one customer for it to show up in the backlog. The number of features in-progress is constrained by the number of developers and so is the number of features waiting for validation. This ensures that you cannot deploy a new feature until a previously deployed feature has been validated.
  44. So how do you validate a feature? Unless you have a lot of traffic, quantitative metrics can take some time to collect. For this reason, I prefer to validate a feature qualitatively first. Once a feature goes live, I directly contact customers that expressed interest in that feature and ask them for feedback. It’s important not just to test the coolness factor of a feature but that it actually solves a customer problem and more importantly makes or keeps the sale. If I don’t get a strong initial signal, I try and figure out why and either improve or kill the feature. We use google website optimizer, KISSmetrics, Mixpanel, and homegrown scripts to collect quantitative data. It’s important here too, to focus on the macro and track key metrics over time, like revenue and retention, versus just clicks.
  45. So when is the best time to adopt Continuous Deployment? I believe the ideal time is as early in the product development cycle as possible - when you are small and have a few or even no customers. Continuous Deployment is an incremental process that you have to practice to get really good at. But even adopting simple practices like “coding in small batch sizes” paid off for us very quickly. The biggest benefit we have derived from Continuous Deployment is the ability to integrate Customer Development with Product Development. The fundamental call to action from Continuous Deployment is to “Ship More Frequently”. Once you take that first step, what you need to do next becomes clearer. Thank you.