• Build continual planning and customer feedback into the process
    • Value is maximized throughout the development process [1]
    • “As a result of this iterative planning and feedback loop, teams are able to continuously align the delivered software with desired business needs, easily adapting to changing requirements throughout the process.” [1]
  • Early and frequent delivery of value to customers
    • Agile development “accelerates the delivery of initial business value” [1]
      • This can be empirically measured, such as the in-class penny exercise that proved that iterative small batches results in faster delivery of value to the customer
    • Customers will reduce the value they place on something if they have to wait too long, so early delivery is better [4]
    • Early delivery means early money to use for other business needs and investments [3]
    • Continual cash flow is healthier for the business than waiting for money at the end of a project [3]
  • Iterative development
    • Ideas, concepts, and software features depreciate over time and have a “freshness window” before people place no value in them, so Agile development works within that 1-4 week timeframe to stay on top of customer needs and market demands [4
    • Iterative software product produces less value more frequently and is able to achieve higher overall value before depreciating revenue-wise [4]
    • Risk is “reset” every iteration due to iterative reevaluation of product [4]
    • Bug cost is reduced because they are continually tested and squashed instead of looked at far after the code is written [4]

GitHub Logo

Figure 2. Charts showing value proposition of Agile Development (red) vs. Traditional Development (gray). Source: VersionOne Enterprise Agile Solutions [1]

  • Theory of constraints - “The chain is no stronger than its weakest link” [5]
    • Limiting amount of work that causes constraint or bottleneck
    • Diverting work away from the bottleneck
    • Increasing limitation of bottleneck by buying systems or hiring people
  • Use of agile methodology to reduce cost of failure [5]
    • Faster feedback from stakeholders
    • Increasing flow of information within participating entities in a scrum
    • Decreasing the risk of one person failing by reducing number of dependencies on that person and distributing work equally amongst everyone
    • Focusing more on simplicity and reducing complication
  • Importance of refactoring in agile [6]
    • More cost is incurred for adding features than the business benefits of adding these features if software system becomes dysfunctional and complicated
    • Refactoring is safest and cheapest when done in many small chunks
    • Use of business requests as catalysts for refactoring rather than call from technical teams
    • Team cohesion in terms of communication and collaboration in regards to which tools, techniques, and practices to use in refactoring
    • Team’s openness and honesty with all stakeholders about the cost of refactoring

GitHub Logo

Figure 3. Diagram illustrating how refactoring reduces complexity and costs in agile software development. Source: Richard Fridrich [5]

  • Shorter feedback loops [7]
    • In agile, risks are cut down because of short releases in contrary to multi-year waterfall projects. Hence, feedback reduced to a smaller period
    • Comparison of the opportunity cost of agile and waterfall results in identifying waste of money and missing opportunity of working on more profitable projects in waterfall
    • User satisfaction has value too and not just return on investment in the form of money

    • Unit Home