Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories
Untangling Stories

Editor's Notes

  • #2 SLIDE 1 [INTRODUCTION] [THANK YOU] – Invited to talk [HONOURED] – to be given the opportunity with share our ideas at this event [WHO WE ARE] – Software Engineering Consultants at Ordnance Survey Mentoring, software development and testing Working with customers and stakeholders in agile teams Providing consultancy on engineering improvement across the organisation
  • #3 SLIDE 2 [DISCLAIMER] [PERSPECTIVE] Software engineer’s perspective [INSIGHTS] How business analysis can profoundly affect software delivery and outcomes Business analysis can directly influence what software is built AND how it is built [NATURE OF AGILE DEVELOPMENT] Identifying needs vs. building to requirements can have a significant effect Difficult to identify customer needs. Easy to build software that diverts from those needs Software engineering practices can help us to identify value Business analysts should work with teams iteratively to discover value and deliver iteratively
  • #4 SLIDE 3 [THE IMPORTANCE OF BUSINESS ANALYSIS] [SUCCESS] Ongoing business analysis provides the team with a direction to steer towards customer value. Costs and time minimised Software can cope with changing requirements or priorities [DANGER] Business analysis diverts the team away from truly valuable software Increase costs and time building the wrong thing Divert the customer away from building the next more important thing – opportunity cost Upfront business analysis does not cope with changing priorities and value discovery Software cannot cope with changing requirements and priorities
  • #5 SLIDE 4 [DELIVERY TEAM AS STAKEHOLDERS] [PROXY] Business analyst acts as a proxy for many conflicting interests and priorities Delivery teams want to build high quality software with real value [COLLABORATION] Continuous prioritisation and collaboration with the team is crucial Customer NEEDS will change constantly [TWO-WAY INFLUENCE] Legacy software, systems and interfaces can influence analysis HOW needs are described can influence how software gets built
  • #6 SLIDE 5 [VALUABLE SOFTWARE vs. WHAT’S ASKED FOR] [NEEDS] Hard to discover What is truly valuable? How do we know what is valuable? Can we measure value? [WHAT IS ASKED FOR] Typically has some overlap with what is valuable [WASTE AND LOST OPPORTUNITIES] If needs (value) and what is asked for don’t align we get waste and lost opportunities [ALIGNMENT] Constantly moving target to align needs with what is asked for Alignment requires continuous prioritisation and delivery
  • #7 SLIDE 6 [INVEST] [CHARACTERISTICS OF A GOOD USER STORY] MNEMONIC created by Bill Wake. Many people know about INVEST for user stories. Takes real discipline to apply. I – Independent – Stories should not overlap or depend on each other. They should lead to independently deliverable features N – Negotiable Should exist purely in the problem space and can always be rewritten and changed V – Valuable Should deliver REAL value to the end user. Not necessarily what is initially asked for E – Estimable Is there enough supporting information so that it can be estimated to provide predictability S – Small Small stories complement an iterative approach. Discover value by describing needs in small pieces. T – Testable - How does a development team know they have met the customer’s NEEDS?
  • #8 SLIDE 7 [TANGLED STORIES] [COMPLICATED] [STORIES] Stories that overlap, depend on each other or exist in an artificial hierarchy Mixture of large and small stories Mixture of valuable and low value stories Stories that are hard to test due to poor understanding and dependencies [SOFTWARE] Complicated software usually results due to poor overall understanding of NEEDS Software delivered in order with late integration and high technical risk Projects usually start fast and get slower over time High cost to change
  • #9 SLIDE 8 [UNTANGLED STORIES] [SIMPLE] [STORIES] Stories that can be delivered independently Stories that are small so that they can be delivered frequently Stories that can be tested simply so they can be released early Stories that have been identified as valuable [SOFTWARE] Small components relating to isolated, identified needs Loose coupling with evolving interfaces Software that is easy to change based on changing needs
  • #10 SLIDE 9 [HOW DO STORIES BECOME TANGLED?] How might business analysis take us along the path to tangled stories and unnecessarily complicated software?
  • #11 SLIDE 10 [ABSTRACTION IN TO COMPONENT TEAMS] [ORGANISATIONAL ANTIPATTERN] Stories are immediately divided by component team Each team has an independent backlog and set of priorities Teams have lost the original purpose Organise people into feature teams and have everyone necessary to do the work
  • #12 SLIDE 11 [ABSTARCTION IN TO COMPONENT TEAMS] [ORGANISATIONAL ANTIPATTERN] [FEATURE TEAMS] Feature teams understand the whole problem and sense of urgency More likely to deliver simple solutions [COMPONENT TEAMS] Component teams divide the work Customer become disengaged – work focuses on the organisational design and alignment Separate backlogs and sense of urgency
  • #13 SLIDE 12 [ABSTARCTION IN TO COMPONENT TEAMS] [ORGANISATIONAL ANTIPATTERN] Component teams reinforce architectural patterns Conway’s Law – more likely to design software to reflect our organisational structure Constant problem of alignment and integration Complication increases Testing becomes harder as more functionality is handled in fewer components
  • #14 SLIDE 13 [ABSTARCTION IN TO COMPONENT TEAMS] [ORGANISATIONAL ANTIPATTERN] [FEATURE TEAMS] Aligned with sense of urgency More likely to design the simplest solution to the problem Not aligned with the organisational structure –write software without organisational constraints Have everyone in the team necessary to solve the problem More likely to deliver early and often
  • #15 SLIDE 14 [ABSTRACTION IN TO DESIGN] [EARLY ABSTRACTION IN TO DESIGN/SOLUTION SPACE] Can occur during analysis [EXAMPLE] Three customers independently NEED to compare data Could be described with independent stories and delivered early Early abstraction in analysis introduces a dependency between all the stories “Central comparer” – now describes a lower value need and has increased complication
  • #16 SLIDE 15 [ABSTRACTION IN TO DESIGN] [EARLY ABSTRACTION IN TO DESIGN/SOLUTION SPACE] Treating needs simply and iteratively – more likely to design simple software Early abstraction in analysis to design – likely to introduce premature generalisation Increases difficulty in testing and development Causes late integration of many components
  • #17 SLIDE 16 [ABSTRACTION IN TO DESIGN] [EARLY ABSTRACTION IN TO DESIGN/SOLUTION SPACE] Tester begins to focus on testing the consequences of the design rather than the need Typically becomes driven by integrated tests Project dominated by integration and logic problems Original customer need has been reduced in significance [T] - Harder to test, getting harder [I] - Three customers may have to wait for the comparer to be completed - dependency [E] - Difficult to estimate when all the work will be done [N] – Customers have less ability to negotiate their original need [V] – “Comparer” has lower value [S] – Comparer may have increased the size of the development effort
  • #18 SLIDE 17 [ABSTRACTION IN TO DESIGN] [EXAMPLE] [BUSINESS ANALYSIS] Customer has a NEED to know the currency of their data Business analysis constrained by existing contract/interface – output in blocks Increased complication for customer – based on a legacy system Need expressed through requirement expressed through design/architecture Customer reluctantly agrees
  • #19 SLIDE 18 [ABSTRACTION IN TO DESIGN] [EXAMPLE] [SOFTWARE DELIVERY] Development concentrates on delivering to the design Less effort spent delivering the need in a simple manner Testing concentrates on the contract/interface – based on functionality rather than customer value Effort spent testing compliance with the design
  • #20 SLIDE 19 [ABSTRACTION IN TO DESIGN] [EXAMPLE] [SOFTWARE DELIVERY] Testing becomes focused on the contract/interface Delivery team has lost its understanding of customer value Tangled stories -- Increasing development costs on low-value tests
  • #21 SLIDE 20 [ABSTRACTION IN TO DESIGN] [EXAMPLE] [SOFTWARE DELIVERY] Testing really should be concentrating on the customer need Currency of the data Untangled stories – tests for customer value
  • #22 SLIDE 21 [ACCIDENTAL COMPLICATION] [INTRODUCING UNNECESSARY COMPLICATION] Original customer need/value converted into a requirement converted in to a design Contracts/interfaces are 2nd class requirements Delivery team was excluded from an initial understanding of the problem Development to contracts reinforces the life of those contracts – software increasingly harder to change [ESSENTIAL COMPLICATION] Derive value through test-driven development Base acceptance criteria on stories and deliver first-class requirements
  • #23 SLIDE 22 [ACCIDENTAL COMPLICATION] [INTRODUCING UNNECESSARY COMPLICATION] Needs immediately converted to requirements representing the current contract/interface Probably because an interface was created early Current contract offers the delivery team no chance to offer improvements/changes based on problem Less opportunity to find a quick, simple, small, testable, independent solution to the customer’s problem Introduces unnecessary complication and work based on the design or interface or silo
  • #24 SLIDE 23 [ACCIDENTAL COMPLICATION] [INTRODUCING UNNECESSARY COMPLICATION] [HOW SHOULD IT HAVE BEEN DONE?] Discover true customer needs with ‘5 Why’s’
  • #25 SLIDE 24 [WHEN SHOULD WE ABSRACT OUR ANALYSIS IN TO DESIGN?] - Deliver software components with a single responsibility to address an isolated need - Abstract software design when these needs have been fulfilled - Independent software components express the true need by this point
  • #26 SLIDE 26 [TAKEAWAY] [SPOTTING TANGLED STORIES] Focus concentrates on understanding the design rather than the customer need Stories are organised by component team Stories are organised by legacy software system or contract/interface Stories mix the problem space with the solution space Abstracted designs accumulate functionality – becomes harder to test over time Customer doesn’t recognise the work – unengaged – only understands business need
  • #27 SLIDE 27 [TAKEAWAY] [SPOTTING UNTANGLED STORIES] Discover value through 5 Whys? Keep backlogs small – requirements ROT – more likely to deliver backlog vs need Stories should describe the original problem Ensure the team is fully engaged with the problem – discover simple solutions Small, independent, testable stories that can released easily Customer is more likely to remain engaged
  • #28  SLIDE 28 [THANK YOU] Thank you Hope you have found our talk interesting and useful Any questions?