Engineering Practices for Innovation

Size: px
Start display at page:

Download "Engineering Practices for Innovation"

Transcription

1 Engineering Practices for Innovation Jez Humble, ThoughtWorks #continuousdelivery Annual PMI Silicon Valley Symposium October 6, 2011

2 agile 101 "Agile" team Analysis + Design Development Centralized QA Integration + QA IT Operations Release and operation Customer Testing + Showcase Iteration The "last mile"

3 social web disrupting traditional businesses

4 releasing frequently feedback from users Customer developent Agile product development Eric Ries, The Lean Startup

5 releasing frequently feedback from users reduce risk of release John Allspaw: Ops Metametrics

6 releasing frequently feedback from users reduce risk of release real project progress

7 agile manifesto Our highest priority is to satisfy the customer through early and continuous delivery of valuable software

8 agile triangle Jim Highsmith: Agile Project Management

9 do less Far more than 50% of functionality in software is rarely or never used. These aren t just marginally valued features; many are no-value features. The Standish Group, reported in the IEEE conference 2002

10 innovate You can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new. Steve Jobs

11 scientific method create hypothesis Customer developent deliver minimum viable product Agile product development get feedback Eric Ries, The Lean Startup

12 continuous delivery Customer Delivery team Constant flow of new features into production

13 production-ready software Fast, automated feedback on the production readiness of your applications every time there is a change - to code, infrastructure, or configuration

14 continuous delivery Automation: build, deployment, testing, release, infrastructure, databases Patterns and practices: continuous integration, config management, deployment pipeline Collaboration: developers, testers, operations (devops) work together throughout

15 build quality in Cease dependence on mass inspection to achieve quality. Improve the process and build quality into the product in the first place W. Edwards Deming

16 different kinds of testing AUTOMATED Business facing MANUAL Support programming Functional acceptance tests Unit tests Integration tests System tests Showcases Usability testing Exploratory testing Non-functional acceptance tests (performance, scaling,...) Critique project AUTOMATED Technology facing MANUAL / AUTOMATED Diagram invented by Brian Marick

17 getting started configuration management continuous integration automated testing

18 Develop Local Workstation Mainline Server Build pull Build push Build Done!

19 Develop Local Workstation Everyone Commits Mainline Server Build To the Mainline pull Build Every Day push Build Done!

20 deployment pipeline an automated implementation of your system s build, deploy, test, release process visibility feedback control

21 deployment pipeline Delivery team Version control Build & unit tests Automated acceptance tests User acceptance tests Release Check in Trigger Feedback Check in Trigger Feedback Trigger Feedback Check in Trigger Feedback Trigger Feedback Feedback Approval Approval

22 deployment pipeline

23 ask this question How long would it take your organization to deploy a change that involved just one single line of code? Do you do this on a repeatable, reliable basis? Mary and Tom Poppendieck, Implementing Lean Software Development, p59.

24 process optimization Donald Reinertsen, The Principles of Product Development Flow, p60.

25 reducing release risk automate provisioning and deployment ensure devs, testers and ops collaborate throughout

26 release incrementally DEPENDENT SERVICE Database Abstraction layer Abstraction layer STATIC CONTENT /static/1.1 APPLICATION /static/1.0 Router / Load balancer Interwebs

27 culture collaboration is king get everyone together at the beginning inceptions, showcases, retrospectives devs hold pagers people rotate through teams

28 enabling agile create autonomous, cross-functional product teams create feedback loops continuous Improvement: the retrospective is the key agile process

29 thank you! #continuousdelivery