330 likes | 649 Views
Agile Programming. Advanced C++ Programming Seminar Anton Kaiser, Summer Term 2012. Outline. Overview Agile Manifest Agile Methods Extreme Programming Values Principles Rules and Practices Lifecycle Scrum Backlogs Sprints Daily Scrum Review and Retrospective Summary
E N D
Agile Programming Advanced C++ Programming Seminar Anton Kaiser, Summer Term 2012
Outline • Overview • Agile Manifest • Agile Methods • Extreme Programming • Values • Principles • Rules and Practices • Lifecycle • Scrum • Backlogs • Sprints • Daily Scrum • Review andRetrospective • Summary • Common Mistakes • RemarksandConclusions • Sources
Overview: Agile Manifest We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: • Individuals and interactionsover processes and tools • Working softwareovercomprehensivedocumentation • Customer collaborationovercontractnegotiation • Responding to changeover following a plan
Overview: Agile Methods • Extreme Programming (XP) • Scrum • Agile Unified Process (AUP) • Crystal Clear • Feature Driven Development (FDD) • GSD • Kanban (development) • Open Unified Process (OpenUP) • …
Outline • Overview • Agile Manifest • Agile Methods • Extreme Programming • Values • Principles • Rules and Practices • Lifecycle • Scrum • Backlogs • Sprints • Daily Scrum • Review andRetrospective • Summary • Common Mistakes • RemarksandConclusions • Sources
Extreme Programming • Extreme Programming isbased on • Simplicity • Communication • Feedback • Courage • Respect • Extreme Programming • Brings thewholeteamtogetherwith simple practices • Givesfeedbacktotheteamandenablesitto tune thepracticestotheiruniquesituations
Extreme Programming:Values • Communication • On-sitecustomer • User Stories • Pair Programming • Collective Ownership • Daily Standup Meetings • Simplicity • KISS – „Keep it simple, stupid“ • YAGNI – „Youain‘tgonnaneedit“ • DTSTTCPW – „Do thesimplestthingthatcouldalreadywork“
Extreme Programming:Values • Feedback • Feedback fromcodebyunit-testingregularily • Short iterationcyclesforcontinuousfeedback • Integratingthecustomerforimportantfeedback • The morefeedback on all levelsthebetter • Courage • Open communicationwith all teammembers, includingthecustomer • Prototypesshallbethrownaway • Refactoring
Extreme Programming:Principles • Embracechange • Itisbettertolearnhowtoreacttochangesthantopredictthefuture • IncrementalChanges • Small stepsarefasterandeasier • Quality • The teamhastobeproudofitswork • Communication • Usethecollectiveknowledgeofthewholeteam
Extreme Programming:Rules and Practices • Managing • Provide a dedicated open workspace • Set a sustainablepace • Start thedaywith a stand upmeeting • Measuretheproject‘svelocity • Move peoplearound • Fix XP whenifbreaks
Extreme Programming:Rules and Practices • Coding • The customerisalwaysavailable • Code theunittestsfirst • Agree on collectiveownership • Code must bewrittentoagreedstandards • All productioncodeispair programmed • Integrateoften • Refactorwheneverandwhereverpossible
Extreme Programming:Rules and Practices • Designing • Simplicity • Choose a systemmetaphor • A visionforthewholesystem • Also meanschoosingappropriatenamesandlocationsforfunctions • Write class-responsibility-collaborationcards (CRC cards) forbrainstorming • Nofunctionalityisaddedearly
Extreme Programming:Rules and Practices • Testing • All code must haveunittests • All code must pass all unittestsbeforeitcanbereleased • When a bugisfound, testsarecreated • Acceptancetestsarerunoften
Outline • Overview • Agile Manifest • Agile Methods • Extreme Programming • Values • Principles • Rules and Practices • Lifecycle • Scrum • Backlogs • Sprints • Daily Scrum • Review andRetrospective • Summary • Common Mistakes • RemarksandConclusions • Sources
Scrum • Scrum • Is an empiricalprocesscontroltheory (EPC) • Iterative, incrementalapproach • Optimizepredictabilityandcontrolrisk • Can beseenas a frameworkwithinwhichyoucanemployvariousprocessesandtechniques • The threelegsthatuphold EPC are • Transparency • Inspection • Adaption
Scrum: Daily Scrum • The dailyscrum • Takes 15 minutesatthestartofeachday • Every teammemberanswerstothreequestions: • Whathave I accomplishedsincethe last dailyscrum? • Whatgot in myway? • What will I do untilthenextdailyscrum?
Scrum: Common Mistakes • Changingthebasics • „Let‘smakeeachsprint last 6 Weeksforthenext 5 months“ • „Daily scrum will beeverysecondday“ • „All featureshavefirstprioritytome!“ • Prolongingthedailyscrumintoendlesstechnicaldiscussions • KeepingdistancefromtheProductOwner • „He istoobusyforourdailyscrum“ • Switchingandmergingroles • Productowner + scrummaster = projectmanager • Team • Creatinghugeteams (> 9 developers) • Tools insteadof oral communication • Letthe „rock stars“ do thewholework
Scrum: Common Mistakes • Tools • „I don‘tneedto understand scrum, mytool will manage everythingforme“ • „Whyuseflipcharts? Wehave expensive toolsforcommunication!“ • Not makinguseofscrumtoolsat all
Scrum: Common Mistakes • Artifacts • ProductBacklog • Nopreparationforsprintplanningmeetings • User stories withoutanystatement • Stories aretoobig • Sprint Backlog • Not visible in thedailyscrum • Toomanytasks „in progress“ • Burndown Chart • Not visible in thedailyscrum • Usedasmanagementcontrolinstrumentinsteadof a helpinginstrumenttotheteam • Not drawingconsequencesfromunfavorableprogresschart
Outline • Overview • Agile Manifest • Agile Methods • Extreme Programming • Values • Principles • Rules and Practices • Lifecycle • Scrum • Backlogs • Sprints • Daily Scrum • Review andRetrospective • Summary • Common Mistakes • RemarksandConclusions • Sources
RemarksandConclusions on Agile Processes • Agile programming = common sense! • Easierandfasterreactiontochanges • Alwayshaving a compilingandrunningprogramisgreat! • Lessbugsthankstoconstanttesting • Satisfactionwithbothprogrammersandcustomers • Heavy focus on communication Hardtoapplywith offshore development
Sources • Agile Principles, Patterns, and Practices in C#, Martin C. Robert, Prentice Hall, 2006 • http://www.XProgramming.com • http://www.it-agile.de • http://www.agile-process.org • Presentation „Überblick über XP“ by Dr. Martin Geier, methodpark AG, 2011 • Presentation „Anleitung zum Ruinieren eines Scrum-Teams“, Udo Wiegärtner, .NET day Franken 2012 • Video „ExplainingScrum in lessthan 120 seconds“ (http://youtu.be/WxiuE-1ujCM)