As many have learned, using Agile methods can provide solid business benefits including earlier return on investment, earlier detection of failed efforts, and more satisfied stakeholders. However, when applying Agile methods to product-lines (and projects therein), often there are dependencies on other products (and their projects), services, and organizations that may run in a more waterfall or hierarchical manner. If the Agile project and product therein are self-sustaining with no dependencies on outside factors, life can be quite good. But most of the Agile projects I have worked with or visited have varying degrees of dependencies on other products or services that run in a more waterfall or hierarchical manner.
How do you solve the problems which occur when the agile world must interact with more traditional or hierarchical world? This can present a significant challenge to the agile projects. One strategy to help solve this challenge is to introduce release management.
Basics of Release Management
Release management is a super discipline that provides a context model to ensure that software engineering disciplines such as planning, requirements, CM, test, etc., work together to focus on the release. The release is the center piece of release management (or should be) where the activities or practices focus on getting the release one more step closer to production while maintaining a high-level of quality. Much like release management, agile focuses on the release with as minimal effort and waste as possible.
Release management also focuses on coordinating pieces of various product releases that must come together to work in an integrated release package. This ensures that dependencies and traceability are recognized and managed. This is particularly important if an Agile project is dependent on other products that may be managed in a more waterfall manner or services that are typically managed in a more hierarchical manner. In addition, release management ensures that product timelines are planned and managed so that future dependencies can come together when they are needed.
Allowing Release Management to Help You Track Dependencies
Release management helps in dependency management across projects when there are release impacts. Essentially release management ensures that the right pieces are available when you need them. Some key areas where release management can help an agile project track dependencies include:
· Facilitates the sharing of the agile project's requirements/stories to other projects/products that may be impacted.
· Ensures that other products' requirements/stories that impact the agile project are known by the agile project.
· Communicates changes to requirements/stories to and from the other dependent products (and projects therein).
· Ensures that parallel and external deliverables arrive at the appropriate time (build time deliverables, run time deliverables, etc.)
The Product Manager and Release Manager Roles
The product manager (or product owner in agile) should focus on product direction, continuous interaction with customers, prioritizing the functionality, becoming a champion of the methods and practices used, and removing roadblocks for the project team. Essentially, their focus is the product they own and manage. However, as is the case in most products, they may have dependencies to other products and services. This is where the role of release manager can significantly help the product manager.
The primary role of the release manager is to focus on the details of bringing together the various dependent components to satisfy the needs of a release. In an agile world, this may include ensuring that requirements or stories that are needed for a successful release that are outside the control of the project are delivered to the product manager that owns the functionality and a timely delivery back to the agile project occurs. It may also include working with service organizations to ensure that the service is available when needed. And more significantly, the interdependent products and services are typically either waterfall or hierarchical in nature so the release manager can investigate ways to align the different methods and practices used across dependent products and services so that the release and future releases have an easier time integrating and providing for each other.
Additional tasks that a release manager will handle are: helping coordinate requirements/story sharing across product lines; coordinating integration, functional, and acceptance testing across product lines; participating on other product lines change control boards (for more traditional projects) or early iteration discussions (for agile projects) and communicating challenges and impacts to external products or services.
Integrating a Release Manager Role IntoAgile Projects
Now some folks will say that a product manager can perform the role of the release manager. In some cases they can. The release management role includes a set of specific tasks and activities that ensure interdependent products and services come together when they must. If the product manager or project manager has the bandwidth or when the interdependencies are minimal, then the role can be played by the product manager. However, the product manager is quite busy working with vendors and customers on the one side and the project team on the other so sometimes this is not possible. Quite frankly, the product manager will be more concerned with things that impact their releases and less concerned about other products' releases. A release manager will ensure all products' releases are equitably prioritized and managed. Effectively, the release manager can provide the glue especially when the agile world meets the more traditional world.
So, how would a release manager fit into an agile project structure? First, keep in mind that a release manager would provide release management services typically to several projects at the same time. One release manager can typically support four to five projects at a time. So with this in mind, one strategy is to identify clusters of products that typically have inter-dependent projects and assign a release manager to support the product managers (and products therein) within this cluster.
Specific to a project, ensure the release manager gets invited to the daily stand-up meetings of the projects (as reasonable). This ensures that the release manager is immediately aware of any dependency issues across products and can begin resolving them without delay or hearing the issue second-hand (which can cause further delay) if it was translated incorrectly or if additional information is needed.
Why release management for agile teams? Release management can help bridge the gap between an agile world and a waterfall and hierarchical world. If you are on an agile project that supports a product-line that has many dependencies on products outside of its sphere of influence then these dependencies need to be managed effectively and formally, and not as a second thought. This may include getting requirements or stories to the right product team where dependencies exist, to ensuring build or runtime deliverables are in place at the right time for testing reasons. Ultimately, as complexity of dependencies to other products and services increases, so does the risk of breakage in unexpected ways. This is where Release Management can provide the Product Manager/Owner and Agile project team with strong value.