Overview
Every project can specific the types of tasks that are relevant to the project. Similarly, the tasks project may also come up with a categorization of priority to determine the order in which tasks must be carried out. Deeper dive of these tasks by the priority assigned to them will ensure that the time spent on such analysis helps with the value realization of the MVP (minimum viable product). Whether a project is plan-driven, adaptive, or hybrid, looking into these priority level analysis can build the project team to self-organize and be proactive in avoid project delays.
Task Priority Setup in Spira
In Spira, the Task Priority is set up as part of the template used for the product. Shown below is where the task priority can be accessed and set up.
Query
Given below is the Query
select
T.TASK_PRIORITY_NAME,
SUM(T.NOT_STARTED) as NS_COUNT,
SUM(T.IN_PROGRESS) as WIP_COUNT
from
(
(select
Case when R.TASK_PRIORITY_NAME is null then "Unknown Type" else R.TASK_PRIORITY_NAME end as TASK_PRIORITY_NAME,
COUNT(R.TASK_ID) as Not_Started,
0 as In_Progress
from
SpiraTestEntities.R_Tasks as R
where
R.PROJECT_ID = ${ProjectId} and
R.IS_DELETED = False and
R.TASK_STATUS_NAME ="Not Started"
group by
R.TASK_TYPE_NAME)
union
(select
Case when R.TASK_PRIORITY_NAME is null then "Unknown Type" else R.TASK_PRIORITY_NAME end as TASK_PRIORITY_NAME,
0 as Not_Started,
COUNT(R.TASK_ID) as In_Progress
from
SpiraTestEntities.R_Tasks as R
where
R.PROJECT_ID = ${ProjectId} and
R.IS_DELETED = False and
R.TASK_STATUS_NAME ="In Progress"
group by R.TASK_PRIORITY_NAME)
) as T
group by
T.TASK_PRIORITY_NAME
Query Explanation
- This query combines inner queries.
- The first inner query focuses on counting the tasks associated by the task priority for tasks in the not started state. It assigns 0 to the in progress state.
- The second inner query focuses on counting the tasks associated by the task priority for tasks in the in progress state. It assigns 0 to the not started state.
- The outer query summarizes the results of the two inner queries.
- The where clause in each inner query
- filters for specific status (e.g.: TASK_STATUS_NAME = "In Progress")
- picks tasks that are not deleted (IS_DELETED = False)
- applies the current project selection (PROJECT_ID = ${ProjectId})
- NOTE: This query still needs to use the TASK_STATUS_NAME in the subquery where clauses.
Output
Given below is the resulting data.
Graph
Given below is the graph.
Graph Interpretation
- The lean principle of flow preservation in any project requires why tasks remain in the WIP state. For the various task priorities mentioned, this may provide insights related to the direction and self-organization required for how priority is assigned. While the graphs themselves will not give the reasons, it prompts one to use these KPIs to dig deeper.
- The next focus is also understanding why some tasks are waiting to be started. Analyzing the root causes may lead one to get detailed in the documentation (e.g.: Agreeing on a formal definition of done, incorporating the INVEST principle, business objective clarity, etc.).