KTH January 24, 2013 How Does Agile Software Development Work?

Transcription

KTH January 24, 2013How does Agile softwaredevelopment work?Yassal Sundman

AgendaLet's have some fun :)Yassal Sundman

A Condensed Historyof SoftwareDevelopmentYassal Sundman

1950s to 1960sComputers areexpensive, singlepurpose and have along turnaround time.Yassal Sundman

1970s to 1980sEdsger Dijstra's TuringAward Lecture in 1972characterizes theSoftware Crisis: Development isexpensive and slowPrograms are toocomplex and difficult tomaintainSoftware is unreliableYassal Sundman

1970 - Waterfall1970, Winston Roycedescribes the waterfallmodel. Complete program designbefore analysis and codingbeginsDocumentation must becurrent and completeDo the job twice if possibleTesting must be planned,controlled and monitoredInvolve the customerFocus on documentation, aslittle movement possiblebetween the different stages.Recognizes importance of thecustomer, introduces the ideaof a prototype.Yassal Sundman

1975 - Mythical ManMonthFred Brooks revolutionarybook comes out. Mostimportant takeaway: Menand months are notinterchangeable.Also coined Brooks law:adding manpower to a latesoftware project makes iteven laterSolutions: DocumentationSpecialized teammembersSeparation ofresponsibilitiesYassal Sundman

1990s - 2000sThe 90’s are a time when newmethodologies are created andtested. Lean softwaredevelopment is being practicedwith methodologies taken fromproduct development.In the mid 1990's Kent Beckformalizes XP, and JeffSutherland and Ken Schwaberformalize Scrum. In 1995 FredBrooks revises his book – aniterative approach is betterthan waterfall.In February 2001 the AgileManifesto is written and signedby the newly formed AgileAlliance.Yassal Sundman

Why Agile?Agile methodologiesaddress the three mainproblems that characterizethe ongoing SoftwareCrisis: Development isexpensive and slowPrograms are toocomplex and difficult tomaintainSoftware is unreliableMartin Fowler has a greatblog entry explaining agilemethodologies.Yassal Sundman

What We Wish vs.RealityOur expectations are not insync with reality. Waterfallbuilds on what we wishreality was, agile addressesthe way softwaredevelopment usually is.Yassal Sundman

Deliver Fast andFrequentlyThe first and third principleof agile are: Customer satisfactionby rapid delivery ofuseful softwareWorking software isdelivered frequently(weeks rather thanmonths)A list of all the agileprinciplesYassal Sundman

SimplicityThe tenth principle of theagile manifesto is:Simplicity- The art ofmaximizing the amount ofwork not done - is essentialYassal Sundman

IterateShort cycles that delivervalue to the customer, andgive feedback todevelopers.Yassal Sundman

QualityTest early, test often.Delivering fast meansintegrating frequently,problems are found earlierand fixed faster.Yassal Sundman

Embrace ChangeThe second principle of theagile manifesto is:Welcome changingrequirements, even late indevelopmentYassal Sundman

ScrumWhat is Scrum, and howdoes it address theshortcomings of traditionalsoftware development?Yassal Sundman

History of ScrumFrom 1993 - 1998 twopapers are written onScrum. In 2001 the firstbook is published.XP is being developed inthe mid 1990s by KentBeck who collaborates withJeff Sutherland.Jeff Sutherland's ScrumPapers provides detailedinformation about Scrum.Yassal Sundman

Scrum Is:From the Scrum Alliance A product ownercreates a productbacklog.The team creates thesprint backlog duringthe sprint planning2-4 week sprint withdaily scrums, thatproduces a potentiallyshippable productThe sprint ends with asprint review andretrospective.Yassal Sundman

Creating a BacklogThe product owner breaksdown the product with theteam’s help. The teamestimates functional items,relative to each other. Thevalue of each item iscalculated. A backlog iscreated. More informationis known, and the items aremore detailed higher on thelist.Yassal Sundman

Scrum TeamEach team has all of theareas of expertise it needsto be able to deliver. Theteam members each havea primary skill, but they alsohave overlapping skills. Thegoal is to share knowledgeso that anybody in the teamcan help out with any task.Yassal Sundman

Incremental, Iterative,DevelopmentDon't expect to get theproduct right the first time.Deliver a working productto get feedback, and keepadding features.Yassal Sundman

TimeboxingSprint lengths are notvariable. The goal of eachsprint is a potentiallyshippable product. Thedelivery date is alwaysknown.Yassal Sundman

Release PlanningThe team's velocity iscalculated based on pastperformance, and a releaseplan is communicatedbased on the velocity.Changes in the velocityalert early that the plan willbe delivered with morefunctionality, or will need tocut functionality.Yassal Sundman

RequirementsWhat are we building?Yassal Sundman

User StoriesMyth: If you write down therequirements the users getwhat they want!Yassal Sundman

User FeedbackIt's important to getfeedback throughout thedevelopment process. Demo for real users.Follow users at theirjobsA/B testingUser testingYassal Sundman

Lean and KanbanYassal Sundman

DemingIn the 1950s W. EdwardsDeming goes to Japan andworks with productdevelopment andmanufacturing. He'sinterested in improvingprocesses. His focus is onquality.Yassal Sundman

Toyota ProductionSystemSpearheaded by TaiichiOhno in the late 1950's.The tenets are: Just in time: make theright thing at the righttime and the rightamountJidoka - build quality into the processKaizen - continuousimprovementThe goal is to increaseincome by eliminatingwaste. Provide the highestquality product at thelowest possible cost.Yassal Sundman

Kanban in ProductDevelopmentSix rules of Kanban: Customer(Downstream)processes withdraw items inthe precise amounts specifiedon the Kanban.Supplier(Upstream) producesitems in the precise amountsand sequences specified bythe Kanban.No items are made or movedwithout a Kanban.A Kanban should accompanyeach item, every time.Defects and incorrectamounts are never sent to thenext downstream process.The number of Kanbans isreduced carefully to lowerinventories and to revealproblems.Yassal Sundman

Kanban in SoftwareDevelopmentVisualize and limit work inprogress.Yassal Sundman

Kanban PullThe downstream job has topull from the upstream.Yassal Sundman

Kanban PracticesSix core practices: VisualiseLimit WIPManage FlowMake policies explicitImplement feedbackloopsImprovecollaboratively, evolveexperimentallyYassal Sundman

What Not HowKanban in softwaredevelopment focuses onwhat the organizationneeds to do, not how. Thehow will be specific to eachorganization’s needs andstructure, and should bedecided by the members.Yassal Sundman

Lean StartupHow does an agile startupcompany do softwaredevelopment? LeanStartup, developed by EricRies starting in 2008, is abusiness strategy to helpstartups get up and runningin today's market.Yassal Sundman

Build Measure LearnStarting to look familiar?The fifth principle is the onepeople think of when theyhear Lean Startup forsoftware teams: build measure -learn. Figure outwhat your MVP is(minimum viable product),get your MVP out fast andmeasure your customers’reaction. Now iterateforward by changing yourproduct to match what thecustomers want.Yassal Sundman

Example Lean StartupEven for a tech venture youcan start really simple.Manual steps the wholeway to test out your idea.The goal is not havinghappy users, but ratherhigh conversion rates. Tohave a successful startupyou need: Continuous customerinteractionRevenue goals from day oneNo scaling until revenueAssumes customer andfeatures are unknownsLow burn by design - notcrisisSlides on Lean Startup.Yassal Sundman

Problem UnknownLean Startup explicitlystates that the problem thatthe organization is trying tosolve is unknown. You willdiscover what the marketand your customers wantas you build it.Yassal Sundman

Continuous DeliveryDeliver when you want toas often as you want to.Jez Humble's bookContinuous Delivery cameout in 2010, and there's agreat blog entry describingcontinuous delivery.Yassal Sundman

Continuous DeliveryPipelineIntegrate automatically,deploy to test environmentsautomatically, testautomatically. Deploy toproduction on demand.Yassal Sundman

ContinuousDeployment PipelineIntegrate automatically,deploy to test environmentsautomatically, testautomatically. Deploy toproduction automatically.Yassal Sundman

Thank You!Thank you for having mehere! And a huge thanks toall the Crisp consultantswhose material I've used inmaking these slides: HansBrattberg,ThomasBjörkholm and HenrikKniberg.Yassal Sundman

Continuous Delivery Deliver when you want to as often as you want to. Jez Humble's book Continuous Delivery came out in 2010, and there's a great blog entry describing continuous delivery. Yassal Sundman. Continuous Delivery Pipeline Integrate automatically, deploy to test environments