Disciplined Agile Delivery - Agile best practices for incremental delivery of high-quality consumable solutions
Agile software development has been widely accepted and is being preferred over traditional waterfall method due to multiple benefits ranging from optimal productivity, reduced delivery cycle and decreased time-to-market to increased feedback loops, better visibility and enhanced customer satisfaction. Agile methods like Scrum help to incrementally deliver a software product to end-users regularly, early and often.
But, do we always give a conscious thought on whether the software that is being developed at certain cadence is of real use to the customer or whether the end-users would really use the product features released? Have we ever wondered if the users will accept the changed features and take time out to bring the released features into actual use for which it was envisaged?
There are many such questions that need to be considered while planning development of product features and their delivery to fulfill business needs. The frequency and time interval in which a software is supposed to be developed and released must be at fixed cadence and ready to be delivered on demand. The released solution should meet the business requirements considering stakeholders’ involvement and contribution along with appropriate business planning and meeting market demands. End-users should be fully aware well in advance of the prioritized features likely to be available incrementally that would fulfill the expected business requirements.
The incrementally delivered products should be focused towards achieving one or more of the following characteristics:
- Delivering Continuous business values
- Maximizing Return on investment (ROI)
- Releasing valuable features early and often
- Increasing the number of end-users’ feedback loop
- Testing new features in order to ascertain acceptability
- Providing End-user and stakeholder satisfaction
Usually, product development teams can consider breaking down product features into multiple inter-related user stories, where a certain set of user stories might represent a business theme. These user stories should meet INVEST criteria – Independent, Negotiable, Valuable, Estimable, Small, and Testable. Such stories, when completed, should comply with the Definition of Done and defined Acceptance criteria.
Software Product Increments
The software increments produced at certain cadence are expected to have a certain level of maturity as given below:
Figure 1: Software Product Increments
- Working Software It is produced at the end of every iteration. Usually, a working software consists of product features developed in the iteration and is one which meets the Definition of Done and Acceptance criteria. Developed product features are fit for a demo to be provided to customers and stakeholders. But these working softwares may or may not be Potentially Shippable or Releasable.
- Potentially Shippable It is produced at the end of one or more sprints. Working software produced at the end of every iteration might not be Potentially Shippable (or Releasable) until it’s fully integrated, well-tested and any need for test or release pipeline automation is completed. Software that is ready to be released on demand is qualified as Potentially Shippable/ Releasable Software. If the product increments have partially completed features and have been tested thoroughly, then these features can also be considered for release with the product increment but those features might not be consumable for end-users. Here, we can safely assume that a feature might consist of multiple user stories that have been completed as per the Definition of Done and meeting the Acceptance criteria as defined.
- Consumable Solution It is produced at the end of a group of sprints (sometimes called releases). These product features are Potentially Releasable, desirable and consumable by end-users. Consumable Solution must bundle completed features addressing the real business needs, provide functions with higher business value and fully meet end-users’ requirements. It should also fulfill all the necessary requirements related to hardware, software, network, security etc. in order to utilize the solution.
Figure 2: Lifecycle of producing Consumable Solution
How to Maximize Delivery of Consumable Solution?
You must have a certain level of planning and reorganization of product features to bundle software features in a way that fulfills expected business benefits in delivering values. This can be achieved through appropriate planning, refinement, disciplined development and delivery approach throughout the product engineering lifecycle. Following are some of the practices that can benefit you:
Plan around Feature Teams
- Prefer formation of Feature Team instead of Component Teams structure
- Appropriately distribute and allocate features across feature teams and proactively resolve cross-team dependencies (be it technical, functional, organizational, or others)
- Reorganize/ reorder features such that teams are able to select and work without any hiccups. Also, distribute features in such a way that there is a balance between the values delivered by each team
Follow Product Management
- Prioritize product features both at portfolio & program levels by using Lean Kanban method
- Proactively consider feature dependencies, business values, associated risks and criticality while planning
Practice Epic to User Stories Journey
- Continuously apply best practices of requirement envisioning and refinement
- Plan at portfolio, program and team levels in order to align with core requirements
- Apply Story Mapping and Value Stream Mapping for your journey from Epic to User Stories
Follow Continuous Feedback Loop
- Increase feedback loop by having higher and frequent involvement of end-users
- Make sure that feedbacks from business users (can be in the form of changes in the current state or new additions altogether) are fed into the product development process on a priority basis
Optimize the Whole System
- Optimize the whole system with a focus on delivering Minimum Viable Product (MVP) at each iteration
- Align or change business processes as required based on new business rules/ processes formulation and functional structure
Almost all the well-defined Scaled Agile methods like DAD, SAFe, LeSS etc. directly or indirectly stress on producing and delivering Consumable Solution.
Working software produced iteratively and Potentially Shippable delivered incrementally can effectively make you capable of achieving the ultimate goal of delivering Consumable Solution accompanied by continuous business feedbacks. This will put you at an advantage in filling performance and expectation gaps (of businesses as well as end-users) enabling customer satisfaction faster and earlier in product life. Agile software development helps in delivering products not only incrementally but also satisfactorily thereby fulfilling business needs of business as well as end-users expectations.
- Disciplined Agile 2.X: Consumable Solutions http://www.disciplinedagiledelivery.com/consumablesolutions/
- Disciplined Agile 2.X: Potentially Shippable Software Isn’t Sufficient: The Glass of Water Analogy http://www.disciplinedagiledelivery.com/potentially-shippable-software-isnt-sufficient-the-glass-of-water-analogy/