Agile Software Management Economic Unit Practices and Theories
- 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]
- Agile development “accelerates the delivery of initial business value” [1]
- 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]
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
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