Scheduling projects and implementing Agile Methodology feels like an oxymoron to a new project manager. They may wonder: How exactly do you schedule an Agile project when it is subject to change? This is because they are of the impression that most Agile projects are not as concerned with meeting a specific end date, as much as they focus on satisfying the stakeholder’s prioritized requests from the product backlog [1, p. 275]. They are not wrong, however, that does not mean the project will not have a schedule at all.
In fact, the project schedule shapes itself around each iteration or activity based on how they relate to one another. It is within these relationships, or dependencies, where we determine the best course of action for an Agile project [2].
To keep the project on course, the project manager is responsible for maintaining the dependencies throughout the project. And that is not the easiest endeavor. This week, we will explore the importance of equipping managers with skills to untangle a web such as this [1, p. 243].
Create a Dependency Matrix
In project schedule management, it is important to use tools and visuals at our disposal to organize and communicate information effectively. One method used to display dependencies is to create a dependency matrix. Preferably in the charting or project management software of your choice. This is a table that organizes the relationships between tasks, deliverables, and features among different aspects of the project [2].
The primary function of this table is to visually indicate relationships and their intricacies among one another. It is also a great indicator of which tasks may delay others down the line, allowing for opportunities to plan accordingly [2].
To create a dependency matrix, you must:
Define the rows and columns of the table based on which elements you are looking to compare [2].
List tasks, deliverables, or features that belong to each row or column. For example, list each sprint that each milestone represents [2].
Designate the cells in which there is a relationship between that row and column. For example, a symbol, number, or color can be used to display this [2].
Add other relevant information that is pertinent to this matrix, such as status, importance, or who the task belongs to [2].
Categorize Dependencies
After mapping out dependencies, it is essential to recognize how each one behaves in relation to the project. This provides strong insight to the project manager and allows each dependency to be positioned in the sequence of work according to priority and difficulty. Categorizing also allows for an assessment of any risk involved. It is ideal to code these categories visually on the dependency matrix as well for quick reference [2].
First, we will focus on whether the dependency is Mandatory or Discretionary:
Mandatory (M): This is a relationship that is inherited from the type of project. These are also referred to as hard logic.
Example: You cannot test the implementation of a feature until it has been created [1, p. 249].
Discretionary (D): This type of relationship is procedural based on how the project team or the company chooses to operate. These are also referred to as soft logic. It is important to limit these types of relationships, as they may suppress future scheduling decisions.
Example: If the team decides it is best practice to first create pseudo code for a program to receive approval to move forward, as opposed to delving directly into coding [1, p. 249].
Next, we determine if a dependency qualifies as External or Internal:
External (EX): These relationships refer to how project elements and the outside world interact.
Example: When a company switches to a new phone system to better integrate with their sales software, this requires obtaining new desk phones for all employees. If there is any delay in the delivery of these desk phones, the implementation of the new system will be impacted [1, p. 249].
Internal (IN): This type of relationship involves activities that can be handled by the team working on the project.
Example: If a company is ultimately switching to a new type of fleet management software, the project team can first sandbox test the functionality of the software before rolling it out to a warehouse for field testing [1, p. 249].
And lastly, we determine the functionality of the dependency as follows:
Finish-to-Start (FS): Task B cannot begin until Task A is completed. This is the most common type of dependency [1, p. 251][3].
Start-to-Finish (SF): Task A cannot be completed until Task B has begun. This is the least common type of dependency [1, p. 251][3].
Start-to-Start (SS): Task B cannot begin until Task A has started. Task A does not have to be done before Task B can begin. [1, p. 251][3].
Finish-to-Finish (FF): Task B cannot be completed until Task A has been completed. These types of tasks can also have a Start-to-Start dependency [1, p. 251][3].
Target Milestones
Within the dependency matrix, it is good practice to include key events that signify goals are being met. This helps create a baseline to measure a project’s progress. These events are referred to as milestones. As a project manager, you must identify milestones and then proceed to identify which dependencies are associated with it. Those dependencies can be in the form of tasks, deliverables, or features [1, p. 245][2].
By determining the dependencies that are connected to each milestone, you will:
Distinguish the Critical Path: The critical path of tasks must be completed on time to minimize or eradicate delays. This is especially important if the project has a set deadline. The critical path is subject to change or there could be multiple critical paths, depending on the project [1, pp. 259-261][2].
Identify Priority Dependencies: Knowing which dependencies to take care of first helps the team plan each sprint for the project. Important tasks among these dependencies are not always included on the critical path [1, p. 261]. Prioritizing allows teams to complete deliverables with the most value up front [2].
Communicate a Timeline: Having a sequence of milestones allows for clear communication between your team and stakeholders on the timing of reaching each milestone [2].
Follow the Impact: Each type of dependency affects the project status differently. Being able to follow the path to each milestone, but to also adapt accordingly is important in the overall management of an Agile project [2].
Synchronize Dependencies
Simply knowing all dependencies and how they relate to each milestone does not constitute this process as finalized. Especially with the knowledge of how Agile projects have room to change. As noted with following the impact of these dependencies, it takes repeated effort to ensure that each dependency works in concert with one another [2].
The following actions you can take to synchronize dependencies are to:
Create Liability [2]
Who is responsible?
Who consumes this dependency?
Who will start, revise, complete, or reassign this dependency?
Communicate Often [2]
What challenges are you facing?
Is the dependency still of value to the stakeholder?
Do you need help?
Are you working faster than originally planned?
Use Diagrams and Tools [2]
Did you implement dependencies into project management software?
Could you create a Gantt chart?
Did you establish a dependency matrix?
Can you color code each dependency to associate with a category or status?
Review Often [2]
Did anything change from the last iteration?
Do we need to remove any dependencies?
Was anything added to the product backlog?
Are there any conflicts?
Final Thoughts
There is always something in a project that depends on something else before measurable progress is made. After all, a project has to start somewhere. Now, as a project manager using Agile Methodology, it may seem counterintuitive to dive into those specific dependencies on the surface. But after exploring the strategies discussed today, it is easy to recognize there are only benefits of providing a framework of predictability. With cat-like reflexes, you and your team can now manipulate dependencies within the project so that you reach the best possible outcome for the project stakeholders.
It is also important to note that although it is a tedious part of the process, establishing dependencies is not the final step in culminating the project schedule. The work completed in this step provides a vital springboard in determining other important factors among project schedule management, such as creating a Gantt Chart, estimating task duration and creating network diagrams. While Agile projects are not as definite as the typical traditional project, it only benefits you as a project manager to have a base understanding of the relationships you are working with.
References
[1] K. Schwalbe, et al, Information Technology Project Management, 9th ed., Boston, MA, USA: Cengage, 2019. [Online]. Available: https://ebooks.cenreader.com/#!/reader/b2aef31a-bf2f-4c23-a0fa-63a64a662287/page/758a39896cdf87baf7a6aadddffd418f (Accessed February 14, 2024).
[2] L. Pivac. “How to Write and Manage Dependencies in Agile Projects.” Medium. December 26, 2023. https://medium.com/agile-adapt/how-to-write-and-manage-dependencies-in-agile-projects-36c26a9cfa82 (Accessed February 16, 2024).
[3] B. Appelbaum. “Agile Teams: Dependency Management and Visualization.” Plainview. August 12, 2020. https://www.planview.com/resources/guide/what-is-agile-program-management/agile-teams-dependency-management-visualization/ (Accessed February 18, 2024).
Comments