Agile planning tools for capacity calculation and basic scheduling of epics.
Project description
Agile Planner
For some projects, as an Engineering Leader responsible for delivery, you can often get by with just enough planning and you leave the door open for adjusting as you execute the plan. Adjustments are in the form of flexing either or both the schedule and scope. For other projects, you might be faced with strict deadlines forcing you to fix the dates. This at least gives you some wiggle room to flex the scope as you execute the plan.
The most challenging types of projects are where the dates are fixed, and the scope has been reduced to the bare bones. This leaves no margin for error and therefore exposes the project to significant risk. This is what is known as the “Iron Triangle”. What might you do in such a situation? One option is to run. Another option is to fight it. If you do nothing, you run the real risk of having to rely on heroics to meet the dates leading to team burnout and attrition.
There is another option. As a leader, you can take this environment as a constraint and work with it. To mitigate the risks, forces you to improve planning discipline.
These tools were conceived out of necessity when the author was faced with such a situation.
The tools enable capacity to be determined for a team or organization, for a specific period. This is usually, but not always a quarter.
In addition, scheduling tools are provided that consider, the type of work (epic) matching the skillset of the team. The start date and end date for an epic (if the work fits) is calculated and can be subsequently plugged into your tool of choice (Jira is a popular choice). As the project progresses, you can easily determine if the project is off-track if epics are not starting or finishing on time. These indicators do not replace any metrics you might have in place at the sprint level. They can be used in addition to get a sense of whether the project is on-track or not.
Be sure to checkout the cookbook to learn how to use Agile Planner.
Capacity estimation tools
- How much QE capacity do we have for a given time period? (e.g. remaining for the quarter, Q2, Q3)
- How much front end capacity do we have for a given time period for a specific team?
- How much total back end capacity do we have for the entire org for Q2?
- What is the estimated capacity for a team's sprint?
All it requires is that we have details of each team and person on that team to be captured in a YAML.
team:
name: DevOps team
persons:
- name: Billy Ted
start_date: '2023-09-13'
end_date: '2030-12-31'
front_end: False
back_end: False
qe: False
devops: True
documentation: False
reserve_capacity: 0.35
location: Ukraine
out_of_office_dates:
- '2023-10-03'
- '2023-10-04'
- '2023-10-05'
- '2023-10-06'
- '2023-10-09'
- '2023-10-10'
Given this, we can generate a capacity spreadsheet (CSV) broken down by person and by day for each person on the team for any time period.
You can easily combine teams together enabling capacity to be calculated for an entire organization.
A pandas DataFrame can easily be created from the team capacity, enabling querying and exploring of the available capacity. For example, you might want to query how much capacity you have for QE or Documentation.
Epic scheduling tools
Once we have capacity calculated, it opens up the possibility to perform basic epic scheduling.
Sample use cases:
- Given capacity and epic rough sizes, what is the estimated epic start date? end date? - so that we can determine if we are on-track or not
- Will the epics allocated to a team fit in the specified time period (e.g. Q2)?
To support this simple details about the epics are required in YAML as follows:
features:
- key: CSESC-52
epics:
- key: CSESC-1022
estimated_size: 171
epic_type: FRONTEND
- key: CSESC-1023
estimated_size: 50
epic_type: BACKEND
Each epic can be of the following type:
- FRONTEND
- BACKEND
- QE
- DEVOPS
- DOCUMENTATION
Epics that are of mixed types are not supported at this time. I need to figure out what that might look like.
Here's an example of basic scheduling. We have a short time-period of 4 days. Notice how there 10/22 is a weekend and so there is zero capacity. There are no US holidays detected in the time-period and the people on the team do not have any planned PTO. The team of 3 is available for the entire time-period. We use a classic ideal hours calculation of 6 hours per day (6/8 = 0.25). This allows time for the team ceremonies, PRs etc.
We load the team with 4 epics each with a size of 2 points each. The scheduler forecasts the start date and the edn date for each epic. Notice how the scheduler notifies that the final epic CSESC-1974 is not forecast to complete within the time period.
Team Person Location Start Date End Date Front End Back End QE DevOps Reserve Capacity 2023-10-22 2023-10-23 2023-10-24 2023-10-25 Total
0 Provisioners Alice US 2023-01-01 2030-12-31 T F F F 0.25 0 0.75 0.75 0.75 2.25
1 Provisioners Sue US 2023-01-01 2030-12-31 T F F F 0.25 0 0.75 0.75 0.75 2.25
2 Provisioners Bob US 2023-01-01 2030-12-31 T F F F 0.25 0 0.75 0.75 0.75 2.25
3 Provisioners Total - - - - - - - - 0 2.25 2.25 2.25 6.75
CSESC-1971 sized 2 starts on 2023-10-23 and is scheduled to complete on 2023-10-23 with 0 points remaining
CSESC-1972 sized 2 starts on 2023-10-23 and is scheduled to complete on 2023-10-24 with 0 points remaining
CSESC-1973 sized 2 starts on 2023-10-24 and is scheduled to complete on 2023-10-25 with 0 points remaining
CSESC-1974 sized 2 starts on 2023-10-25 and is scheduled to complete on WILL NOT COMPLETE IN TIME with 1.25 points remaining
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for agileplanner-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8db7de3dd45529977bfed89960e4c096d6c660e03835cdb271e446f6454879b |
|
MD5 | d7b36c2f767efc62a79bf120466fc0f5 |
|
BLAKE2b-256 | b669c81e8912d75fc7fee284d9c96cef807d54b029b4d14ca869123903ce4f6c |