Successfully reported this slideshow.

Agile practices and benefits


Published on

PPT from a presentation I give periodically around how to select agile practices within enterprise software delivery teams. Was developed with tons of help from my friend Peter Schuh

Agile practices and benefits

  1. 1. Agile Practices and BenefitsFor Northern Developer NetworkBy Rich Stone and Peter Schuh1
  2. 2. Agile• ag·ile (aj-uhl, -ahyl)adj.– 1. Characterized by quickness, lightness, and easeof movement; nimble.– 2. Mentally quick or alert: an agile mind.2
  3. 3. Agile Manifesto• Individuals and interactions over processesand tools• Working software over comprehensivedocumentation• Customer collaboration over contractnegotiation• Responding to change over following a plan3
  4. 4. Agile Software Development• An iterative and incremental (evolutionary) approachto software development• which is performed in a highly collaborative manner• by self-organizing teams within an effectivegovernance framework• with "just enough" ceremony• that produces high quality solutions• in a cost effective and timely manner• which meets the changing needs of its stakeholders.4
  5. 5. Agile Methodology?5XP, SCRUM, FDD, DSDM, Crystal Clear – are all agile “process frameworks” – thatrecommend a group of related practices.All come from a consulting mind-set, and all have fairly prescriptive approaches– rather than value selected approaches – so they look like a consultant with amethodology. Not that they don’t add value, but is it the value you need? Onlyyou can decide that.
  6. 6. Why Agile?More Value, Higher Quality,Less Risk, More Predictable,and yes, More Productive6
  7. 7. Simply Agile• Recognize that value is a more important driver forsoftware asset creation than schedule or cost.• Admit that we don’t/can’t know everything needed to getdone before you start so details can emerge.• Decentralize decision making to empower the productteam as much as possible, flattening team structures,replacing command and control with intense collaboration.• Exercise all your skill areas concurrently to increaseinformation flow (for the software development system) byshortening all feedback loops.• Build, Borrow, Buy automation tooling to make thingseasier, faster, more reliable.7
  8. 8. Agile Buzzword Bingo?First one to get four in a row wins acheeseburger!8
  9. 9. Agile Practices• We have a list of practices and a bingo card.• We are going to walk through a list ofpractices that are common and valuable.• If you are on a team that is doing the practicenow, put a chip on your card.• If you are not sure if you are doing it, ask.• Questions are valuable – ask away.9
  10. 10. Iteration ZeroSpend a time box to put delivery infrastructureand product backlog in place (devenvironment, test environment, test and buildautomation, user stories, mockups, etc)Think of it as build a road before we drive thecar.Improves Predictability10
  11. 11. Continuous IntegrationIntegrating small bits of completed functionalityinto the team codebase many times a day, andusing manual or automated process to ensurethat the codebase is clean after each check-in.Continuous integration aims to improve the quality,and to reduce time to deliver, by replacing thepractice of applying quality control to largerdeliverables.Increases Quality, Reduces Risk11
  12. 12. Walking SkeletonA Walking Skeleton is a tiny implementation of thesystem that performs a small end-to-endfunction.It need not use the final architecture, but it shouldlink together the main architectural components.The architecture and the functionality can thenevolve in parallel.Improves Productivity, Reduces Risk12
  13. 13. Test Driven DevelopmentTest-driven development (TDD) is a softwaredevelopment process that relies on the repetitionof a very short development cycle:first the developer writes a failing automated testcase that defines a desired improvement or newfunction,then produces code to pass that test and finallyrefactors the new code to acceptable standards.Improves Quality, Reduces Risk13
  14. 14. Automated Unit TestingA systemic suite of tests, coded by individualdevelopers to test at the method level, basedon restorable data, run after each successfulbuild, to provide immediate feedback on anynew code added to the system.Improves Productivity, QualityReduces Risk14
  15. 15. Simple DesignThis is an extension of YAGNI and satisficing (goodenough) design concepts.Dont design for the ultimate scenario, or anticipatefuture needs, design only what is needed for thecurrent story/requirement.Works best when used with other practicesincluding continuous integration, automatedbuild, refactoring, etc.Improves Productivity, Value Delivery15
  16. 16. Acceptance TestingWrite tests for each story (requirement) beforedevelopment (for that story) is complete.Acceptance tests are defined by the customer asthe acceptance criteria for the story.Performed as each story is completed, ratherthan at the end of a time box or immediatelyprior to release.Improves Quality, Reduces Risk16
  17. 17. Co-located TeamSeating the entire team in an open-spaceenvironment where conversation can beoverheard, design and analysis sessionsorganically emerge, questions can beanswered without anyone leaving their chair.Improves Productivity, Quality17
  18. 18. Incremental ReleasesRelease product to production as soon as youhave something of value, rather than waitingfor the entire scope of value to be complete.Moves the flow of information about value backto product team and product owner as earlyas possible.Improve Value Delivery, Reduce Risk18
  19. 19. Product BacklogSequenced list of features or stories that havevalue and effort estimates associated withthem.Used in all planning exercisesIncreases Value Delivery19
  20. 20. Emergent RequirementsAny requirements method that acknowledgesthat we dont know everything “up front”.Starting with what we know, and expecting tolearn more through design, development andfeedback from customers.Yield requirements that are independent andcan be sequenced.Improves Value, Productivity20
  21. 21. Emergent PlanningA form of planning, where one works top down,identifying large chunks of work and estimatesin gross to form a baseline schedule, thentakes a shorter window of time to “elaborate”the plan in more detail (focusing on the near-term deliverables), and continues over time.Improves Predictability, Reduces Risk21
  22. 22. Time BoxingThe time box (iteration, sprint) is the feedback ormeasurement cycle of your project.By choosing short time boxes, you increase theinformation flowing into your developmentprocess, so that genuine process improvementcan result.Requires planning through sequencing and teamcommitment of deliverables.Improve Productivity, Predictability,Reduces Risk22
  23. 23. Planning GameMaking sequencing (a form of prioritization) ofstories or features into a game.Designed to reduce emotions in planning.Goal: put the greatest possible value intoproduction over the life of the game.Improves Value Delivery23
  24. 24. RetrospectiveIn agile development retrospectives play a veryimportant role in iterative and incrementaldevelopment. At the end of every time box aretrospective is held to look for ways toimprove the process for the next time box.Improve Productivity, Reduce Risk24
  25. 25. Burn-up/down ChartA bar chart, or line graph, showing the passageof time on the X axis, and the remaining workestimate on the vertical axis.Useful for determining if the team is burningwork, according to a pre-determined scheduleor commitment (like within a time box)Improves Predictability25
  26. 26. Other Practices• The following practices were weeded out,solely on the basis of our need to restrict thesize of the BINGO card.• Just sayin’26
  27. 27. Blitz PlanningA single planning activity, attended by membersacross the project, that can produce a draftproduct backlog, release plan, andsequencing.Improves Predictability27
  28. 28. RefactoringRefactoring is the process of changing a softwaresystem in such a way that it does not alter theexternal behavior of the code yet improves itsinternal structure.When developers encounter unnecessarycomplexity in the area of code they are workingon, they can simplify and clean the code, therebypaying down technical debt.Improves Quality, Reduces Risk28
  29. 29. Automated DeploymentAutomated deployment of a build to a user-configured environment (for example: DEV,QA, STAGE, PROD) enables early testing of thesystem in production-like environments anddrastically reduces the possibility formigration-based errors.Reduces Risk29
  30. 30. Solution SheetsA simplified analysis document that articulatesthe essential requirements, business logicand/or design of a user story prior to itsdevelopment.Improves Predictability30
  31. 31. Kanban BoardA visual, work queue-based approach toplanning and tracking that:(1) puts the teams value stream at the center ofthe development process and(2) easily communicates prioritization andongoing activity across the team and itsstakeholders.Improves Productivity, Value Delivery31
  32. 32. Effort EstimatesEstimating effort instead of duration:- not when will I have this done, but how muchof my time will I spend on this specific work.- allows work to be split across team members,and estimates to calculate mathematically.- allows the development of a cost estimate anda scheduleImproves Predictability, Reduces Risk32
  33. 33. On Site CustomerA practice that engenders a highly-collaborativeenvironment with speedy turn-around times,constant adjustment to user-driven feedbackand low documentation. It costs thededication of a "super user" and the co-location of that individual with the deliveryteam.Improves Productivity, Value Delivery33
  34. 34. User StoriesA lightweight, INVEST-based approach to projectfeatures/requirements, making themIndependent, Negotiable, Valuable,Estimatable, Small, Testable.Improves Value, Productivity34
  35. 35. Daily StandA brief daily whole team meeting (15 min orless) focused on a simplified status of work inprogress or recently completed.Helps to identify issues and obstacles, beforeany commitments are impacted.Improves Productivity, Reduces Risk35
  36. 36. Thank YouThanks for playing along.We hope that you were able to glean somevaluable nuggets of information.We hope that you will consideradopting/adapting some of the practicespresented here for your team’s benefit.The spreadsheet attached to the invite also haslinks to external (to Northern) informationresources regarding Agile Practices36