This post is from the Collabnet VersionOne blog and has not been updated since the original publish date.
Improving Agile Portfolio Management Coordination
Simply producing status reports in an enterprise with hundreds of software development teams isn’t enough to ensure that your products will be delivered on time. You have to ensure that the plans, dependencies, progress and schedules of those teams are all coordinated. So, how can you coordinate the software delivery across multiple large/scaled systems across hundreds of enterprise software development teams? Enterprise Software Development Coordination Whether you’re coordinating several teams or hundreds of enterprise software development teams, you need clear visibility of plans, dependencies, progress and schedules across your portfolios, programs and projects. While it's simple and easy to look at just a single feature and understand the dependencies and progress of various teams, it’s much more complex when you're working with a portfolio or program that includes many features that can raise questions about what should be prioritized first in the various backlogs. As a portfolio or program manager you have to do some juggling, planning and coordination to make sure that the portfolio and program level features are moving and progressing as they should, and that all of the work that is needed to support and deliver your programs is really happening down at the team levels. Let’s take a relatively simple example of an organization with multiple products in a suite. Each product has a team dedicated to its development. Some features are product specific and left to the product owners to drive per product. Some organizational level initiatives, however, may cross all of the products to drive forward company/wide strategies. If this is, say a U.S. company with a corporate initiative to expand into foreign markets, there can be many product and organization ramifications. Sales and services capabilities must exist in Europe. Products must support Value Added Taxes and multiple currencies, perhaps even multiple languages. Support teams must be able to handle extended hours and languages. Clearly, there is a great deal of coordination required to deliver on such an initiative and the better a businesses can handle such a challenge, the better its chances of thriving in a global marketplace. Coordinating Plans Each product that an initiative touches must be delivered in a coordinated fashion to provide the most business value possible. So you must plan out an initiative that spans multiple systems as a whole unit. That starts with prioritizing the work at the initiative level, then prioritizing and scheduling the various features that need to be delivered across teams in order to realize the business value of that initiative. By planning first at the initiative and then feature level, we can minimize Work//In/Progress (WIP) and get more value delivered quicker. From a coordination standpoint it's important to be able to see what the teams are planning as they're doing the work, and to see whether or not they look like they're on track to be able to deliver at the level where the business value can actually be realized. If we have three systems that are all working together to support a given initiative and only two of the systems deliver their parts within the scheduled release, we’ve wasted the effort of the two teams that did deliver. Take for example a feature that essentially is a transaction that goes from system A to system B to system C. If systems A and C plan their features for Release 1, but B plans its feature for Release 2, we don't get to realize the value of that initiative until Release 2. A and C would be better off planning capabilities for Release 1 that could be used by the customer when Release 1 is delivered. Coordinating Dependencies An important consideration in coordinating your software teams is to understand which stories and teams are dependent on each other to produce a working release of software. It's important to be able to quickly understand where those specific dependencies exist and how they fit into your greater program. On related features across products, not every story will have a dependency. It is important to understand, identify and track those stories and features that have dependencies across teams. For example, system A may require an update to a central security component that is managed by a specialized team. Both system A’s team and the security component team need to understand that linkage, coordinate the timing and track the plans of the other team as they evolve. Building a dependency diagram at the epic level of your program will help you understand what features and initiatives are dependent on each other. Mapping your program’s dependencies provides visibility into the teams that require extra coordination and communication to remain in lock/step so they can deliver your product on time. [caption id="attachment_5062" align="alignleft" width="500"] Agile Portfolio Management Dependency Diagram Screenshot from VersionOne[/caption] Coordinating Progress In addition to tracking progress at the team level, it is important to track at the feature and initiative level as well. Business value resides at these higher levels, so it is imperative that organizations work to track progress and throughput at that level to keep the focus where the business value lives. This is best accomplished by having Kanban boards to view and understand the progress at the various levels of your program. Depending on the size of your organization you may have multiple levels of planning and monitoring. Large enterprises typically have an overarching portfolio level, followed by a program level and finally a team or project level. At the portfolio and program level there are high/level initiatives that are being developed which will typically be decomposed into multiple features that may spread across several different systems. Those features then get broken down into stories the teams are going to deliver. To effectively monitor these multiple levels, you’ll want the flexibility of tracking each level independently and understanding the context of features and how they relate to the higher level initiatives being driven. Agile Portfolio Management Kanban Board Screenshot from VersionOne [caption id="attachment_5063" align="alignleft" width="500"] Agile Portfolio Management Dependency Diagram Screenshot from VersionOne[/caption] At the team or project level, create storyboards and make sure the individual stories are part of epics that represent a program or feature on your program board. Storyboards enable you to see all the low level details of stories and how those details roll up into a feature. This allows you to drill down into the next level of detail needed. By mapping your programs with epic boards and storyboards you have the visibility to see your programs’ high level flow, medium level flow and low level flow. The dependency diagram lets you easily understand which initiatives, programs, epics, projects and stories are dependent on one another so that you can coordinate their progress. Coordinating Time Easily viewing progress and dependencies across an entire portfolio helps overcome many of the challenges associated with scaling agile across large enterprises, but it will not cure all ills. In order to fully coordinate your portfolio and programs you must be able to view progress and dependencies in relation to your delivery schedule. This is where it is good to have a timeline view. Your timeline should be connected to your dependency diagrams, epic boards and storyboards, enabling you to drill down into initiatives, programs, epics, projects and stories. [caption id="attachment_5064" align="alignleft" width="500"] Agile Portfolio Management Timeline from VersionOne[/caption] With a timeline view you can take an initiative and drill down into the features. This allows executives and PMOs to have visibility into when all the features are scheduled within a single view. Within a single view you can get an understanding of whether or not the delivery dates for programs, features and stories are coordinated across various levels of the portfolio and programs. For example if you have an initiative that you're thinking you're going to deliver in June, but then when you drill down into it you see that you have features for that initiative spreading out into July and August, that could be a problem. Being able to see views like that enables you to understand what may be at risk and what changes may need to be made. Coordinating the Portfolio By tracking progress, dependencies and release dates you can easily coordinate the progress of your portfolio from the very highest level, that of the initiative, to the very lowest level, that of the stories. Coordinating the portfolio will help increase the throughput of business value. These three views enable you to drill down and be able to see the progress of all your features from a delivery standpoint. Are they completed? Are they in progress right now? Do we have some that we haven't even started yet? What is the status? What are the plans for this? Epic boards, dependency diagrams and timelines provide you with visibility into the progress of all of your initiatives. They allow you to see all of the features that a given organization might be working on. Or, they can show you all of the features that roll up into a certain initiative, providing that next level of detail to see what's where from a delivery standpoint. Whether you are an executive, line of business person, or a program manager, you can take a look at whether your teams are coordinated up and down the portfolio, program and team delivery levels. Being able to track across the various levels is extremely important. That's the ideal way to manage the course of delivery. We're tracking, monitoring, watching and having conversations between those various levels of delivery. Conclusion Coordinating software delivery across an enterprise of software development teams isn’t easy. However, if you organize, plan and track your portfolio as laid out above, you will not only deliver software on/time but you’ll help your organization maximize the throughput of business value. So, how are you coordinating software delivery? VersionOne can help.