Program Increment (PI) Planning
What is PI Planning?
Program Increment Planning (PI Planning), is a critical event in the SAFe (Scaled Agile Framework) that serves as a key ceremony for Agile Release Trains (ARTs) to align teams and stakeholders around a shared vision and mission for the upcoming Program Increment (PI). A Program Increment is typically a fixed time frame, usually 8-12 weeks, during which Agile teams deliver incremental value in the form of working, tested software and systems.
PI Planning is a critical aspect of lean portfolio management (LPM). For organizations adopting agile without SAFe, (i.e. a broader, less prescriptive flavor of agile portfolio management) PI Planning is still important. The idea of planning out your organizational roadmap for the medium term is still vital; it’s principles can be embedded within your quarterly business review (QBR) or similar. The principles that Program Increment planning teach us, in particular its goals and methods remain important, regardless of whether or not you’re religiously following SAFe and Lean Portfolio Management.
You can read more about PI Planning on the SAFe website here.
What is the goal of PI Planning?
The goal of PI Planning is to ensure a cohesive approach to delivering value by aligning all stakeholders and teams around shared objectives for the upcoming Program Increment. Key focuses include:
Scheduling and prioritization: Aligning on the highest priority work to ensure focused efforts on delivering maximum value.
Capacity and utilization: Ensuring a balance between utilization of team capacity, and realistic commitments.
Dependency management: Identifying and resolving dependencies between ARTs to facilitate smooth execution, reduce handoffs and eliminate blockers.
2 Day Schedule (Indicative)
To help you get started with your first PI Planning event, we have created an example schedule/agenda for a two day PI Planning event, you can find it here. Note that mature organizations with embedded ways of working should not need a full two days, but it’s a good place to start if you’re just getting going.
Getting started with PI Planning in Kiplot
If you haven’t already familiarized yourself with the Outcome Planner, we recommend reviewing that section first.
Pre-requisites
Required:
You have set up some Teams in Kiplot
You have configured the Lifecycle in Kiplot
You have created some outcomes that you wish to schedule as part of the PI Planning event
Ideally:
You have configured the Jira Integration to write backwards and forwards asynchronously with the Jira Projects in scope for your PI Planning event
You have assigned estimates to the work you are looking to schedule
You have assigned Capacity to the Teams in scope of the PI Planning event
Step 1: Prioritizing Work
First, visit the Portfolio Kanban and ensure that all of the Outcomes you are expecting to schedule are assigned to the correct lifecycle stage. In the screenshot below, we have assumed that the SAFe Framework is being followed out of the box, and the relevant stages are being used.
Filter the view for the team(s) that you want to focus on and ensure that everything you want to schedule in the PI Planning event is assigned to the correct stage.
Step 2: Preparing the PI
Next, prepare the PI board. Filter for the team(s) you wish to focus on. You can change the lens to show the current lifecycle stage of each outcome in the plan.
You want to be removing any outcomes that have been planned out in the future, that are not “Ready” or beyond. We can see in the example below that “Bio-Login” is in the Idea/Funnel stage, and should not be planned out in Program Increment 6.
We can simply drag and drop to remove it.
We should be left only with Outcomes that we already working on, or Outcomes that we are planning to work on and want to schedule and prioritize for the upcoming PI.
Step 3: Planning & Scheduling
In our Planning Increment (PI), we should only include Epics that we plan to work on or are currently working on.
Each period within the PI can be a sprint, an iteration, or any capacity block your team uses. In the accompanying video, we display periods as months, but you might have them configured as sprints or other iterations.
The capacity indicators under each “Period” show the remaining capacity for that team, broken down by skill. This allows you to see how much work can still be assigned without overloading the team.
Our goal is to efficiently schedule Epics into these available capacity slots. By doing so, we aim to fill each sprint (or period) with the maximum possible work, thus maximizing utilization.
In this view, you can see the total estimate for each Epic, which helps in understanding the workload and planning accordingly. Additionally, the total capacity for each team is displayed, segmented by skill sets, ensuring that the right resources are allocated to the right tasks.
We now want to move work from our “Ready” pile into the available slots within the periods, ensuring that each team's capacity is utilized effectively.
Step 4: Resolving Dependencies
Finally, we should review the schedule for each of the teams to ensure interdependencies between teams not broken.
We can see the dependency status on an Outcome with the “link” icon. It will be linked where the dependency is not broken, and red where it is broken.
In the screenshot below, we can see two unbroken dependencies between the Digital and Mobile team.
In the next screenshot, we can see a broken dependency. To resolve the dependency, simply drag and drop the Outcome into a different planning period.