visit
The way I found the different platforms and SaaS tools mentioned in this post was from simply Googling things like
task dependencies software
and best project management software task dependencies
and seeing which tools showed up in Google Adwords and on “top 10 “ lists.Jump straight to the video tutorial below. Open video in YouTube for timestamps to skip straight to a platform you’re interested in.
Coda template in the tutorial is .
Task dependencies
The
Dependency
column contains cells with the same (dropdown list). The list of tasks you can choose is simply all of column A (your list of tasks). Here is what the settings look like for the data validation rules for each cell in column B:Columns C, D, and E are just other attributes related to a
Task Name
. Task End Date
just takes the Task Start Date
and adds the values in the Duration (Days)
column. It may not seem like a difficult formula, but you’d be surprised as to how difficult it is to get a proper date format after you’ve added a number (duration of task) to a date (task start date). You’ll see this crop up in the other platforms that don’t handle date and number format types well.Dependency start and end dates
Dep Start Date
and Dep End Date
are VLOOKUP
formulas that search the same table and return back columns 6 and 7, respectively:Finish-to-Start task start dates
To get each task’s
Task Start Date
to start when its dependent task finishes, we simply set the Task Start Date
column equal to the Dep End Date
column. This could lead to a recursive situation if you accidentally select a Dependency
that is the same as the Task Name
: Cascading dates based on “kickoff” task start date
The “Instructor Shoot” task does not have any dependencies, and thus is our “kickoff” task. The
Task Start Date
for this task does not equal the Dep End Date
column and is hard-coded. Therefore, when you edit that cell’s date, every other date will re-calculate or “cascade” down to reflect each task’s new start and end dates:Gantt or timeline visualization of tasks
While a table view is great if you want to get specific dates for a task, visualizing these tasks on a gantt chart or some other visualization would be helpful. In order to build a simple visualization in Google Sheets, I put a number at the top representing each day of the month. You then write a formula in each cell below these numbers to see if that given task’s start and end dates day of the month falls within that range of numbers. If it does, then you just put an “x” in that cell. Here’s what that looks like:The List view in ClickUp looks similar to the Google Sheet (as in other platforms). You can sort by each column and there’s a very clear
Status
column for you to mark if the task is Open or Closed. This may be helpful when you want to hide all the closed tasks.Task dependencies
In order to define each task’s dependency, you click on the 3 dots in the last “column” of the list and click on “Dependencies.” From there, you click on “Add waiting on task” to define which task this current task is “waiting for.”Calculating task end dates and durations
As far as I can tell, you need to manually select each task’s start date. This means you won’t get that cascading feature we saw with Google Sheets. I tried creating a Formula column to calculate a task’s end date based on the tasks’ start date and its duration (in days), and the formula editor is pretty basic:You can switch to the “Advanced Editor,” and start selecting other columns to create a more custom formula. My hunch for why this formula doesn’t work is because the
Duration
column is a number column format and you’re trying to add this to a Date column format. Gantt visualization
I’ve found that most project management platforms have pretty robust visualizations of your tasks and dependencies. They just work right out of the box. In ClickUp, arrows show which tasks are dependencies of other tasks with these arrows (which you can drag-and-drop):My free trial of Monday expired before I could take screenshots 😃, so watch the video starting around 13:15 to see the walkthrough:
Task dependencies
gets you pretty far with setting up task dependencies.I was able to get pretty close to replicating the functionality of Google Sheets, but ran into similar issues as ClickUp in terms of being able to calculate task end dates and task dependency end dates. My guess is that it also has something to do with the date formats mixing in with various other column formats in the Table view in Monday. The reason is I had to start using a column type with the column type to “project out” the dependency’s start and end dates. Now you’re mixing dates, numbers, Link to Item, and Mirror column types which didn’t work out so well for the formula I was trying to buildAs far as I can tell, you still need to set each task’s start date manually in order to get a calendar and gantt chart view that is useful for your team to look at. A nice error check (similar to the warning message when you close a dependency in ClickUp) is an Automation rule that prevents from you from setting a task start date before that task’s dependency is done. This type of error check doesn’t need to exist in the Google Sheet because all the task start dates are formulaic and are dependent on each task’s predecessor.Task dependencies
Unlike Google Sheets, ClickUp, and Monday, Wrike takes a more traditional project management approach to defining a task’s dependency or predecessor. You’ll notice in the
Predecessors
column there are numbers and text like “2FS’ and “4F.” The number represents the row of the dependency and the “FS” is “Finish-to-Start” .You actually can’t edit the
Predecessors
column in the table view, only in the Gantt Chart view here:Cascading dates based on “kickoff” task
While you can pinpoint the dependency with the row number for each task and whether it’s a “FS” or “SF” dependency type, I don’t believe the start dates and durations cascade “down” similar to the functionality I built in Google Sheets. Based on this , it appears the only way to do this is to hold the SHIFT key to move an entire “dependency chain” forward or backward in time. I think having a WYSIWIG editor on the Gantt chart view to achieve this same functionality would be a nice to have.I was able to create this
Calc Due Date
column which simply takes the task’s Start Date
and adds the Duration
to it. The Calc Due Date
column is a custom field that is a Formula type:Task dependencies
To incorporate dependencies for each task, you have to go to the Project Settings and explicitly enable Dependencies. Through these settings, it’s clear that Smartsheet has iterated over the years to provide users with a defined set of options when it comes to setting dependencies.This has its tradeoffs. On one hand, you have this very powerful piece of software that does task dependencies really well and you know that they have thought about all the edge cases related to dependencies and due dates. On the other hand, you lose some flexibility (that you get with a Google Sheet) in terms of defining your own dependency “rules” and “project settings.” This decision to go with an opinionated piece of software like Smartsheet versus building something yourself goes beyond project management and task dependencies.Ok rant over 😃. Let’s get back to Smartsheet. Once you’ve enabled dependencies, you need to select the column for your
Predecessor
as well as the column for Duration
. I already have a column for Duration
(which came from the Google Sheet) and I created a column called Dependency
. This also walks you through how to work with dependencies in Smartsheet in detail.Similar to Wrike, you put the row number in the
Dependency
column for the task that is the dependency for that current ask. To get more specific with each dependency, you can click on the pencil icon to open up more settings for that dependency. Here is where you can define a more specific dependency type (e.g. SF, FF, SS):Cascading dates based on “kickoff” date
Unlike Google Sheets (or any of the other dedicated project management platforms so far), I didn’t have to create separate columns for a dependency’s start date or end date. Smartsheet automatically re-calculates the
Task Start Date
and Task End Date
based on the date you select for your “kickoff” task (in this case “Instructor Shoot”). This is a nice built-in feature that removes the need for you to do a VLOOKUP
in Google Sheets or struggle with creating a custom formula in ClickUp, Monday, or Wrike:You also get an error message if you try to change the
Task Start Date
for any task that has a dependency. We see similar error checks in ClickUp and Wrike:Gantt chart visualization
The gantt chart view is pretty similar to the other project management platforms. You can’t adjust the task start date (left side of the bar in the gantt chart) because you’ll run into the same error as beforeーmessing with a task’s start date means it will break the “chain” of dependencies/predecessors. The view doesn’t look that far off from the hacked up chart I was able to build in Google Sheets:Task dependencies
The
Dependency
column is a column type in Notion. This column type lets you “lookup” to other tables in your workspace, but you can also lookup to the same table. This is pretty similar to the data validation in Google Sheets. I can now select any task from the first column as the Dependency
in the second column.Task and dependency start and end dates
Notion also has a formula language and I was able to create a
Task End Date
similar to what we have in Google Sheets. It’s simply Task Start Date
plus the Duration
. You can use the dateAdd
function in Notion to make this work:In the Google Sheet, the
Task Start Date
needs to be built off of the Dep End Date
column in order to get the “cascading” date effect when you select the date for the “kickoff” task. I started building out the Dep Start Date
and Dep End Date
columns by using a column type. This allows you to “project” the task start and end dates for a given dependency:With the
Dep Start Date
and Dep End Date
, we’re getting close to mimicking the Google Sheets structure. Then came the issue of trying to build the formula for the Task Start Date
. In the screenshot below, you’ll notice that there’s a “Type mismatch” error which leads me to believe that the Rollup column type in the Dep End Date
column is messing up the formula:This formula looks to see if there is anything in the
Dependency
column. If that column is blank (which is the case for the “Instructor Shoot” task), then it just shows the value in Task Start Date
. This is the date we want to use to “cascade” the dates down the table. If the Task End Date
column was a date format type, I think this formula would work since that column affects the Dep End Date
column. I tried looking at a few articles discussing date functions , , and , but couldn’t figure out a solution. If you find one, let me know!After writing into support, I found out the
Task Start Date
formula I’m trying to write could potentially lead to a recursive loop situation, and that Notion formulas don’t currently support this type of use case. Similar to ClickUp, Monday, and Wrike, it looks like you have to manually enter in each task’s start date to build a proper view of your project. This YouTube video below also shows how to build dependencies which resembles the “waiting” and “blocking” concept in ClickUp:Calendar visualization
I believe there is a gantt charts are still on Notion’s roadmap, so the only native view that would make sense for this project is the Calendar view. You can easily switch to this view by clicking the dropdown near the top-left of the table:Disclosure: I work at Coda.
Tables in Coda are similar to the “list” view in ClickUp, Monday, Smartsheet, and Wrike in that columns have specific format types. If you accidentally put a number in a text column, however, it’s not the end of the world and Coda won’t give you an error message. Formulas in Coda tables also get applied to the entire column (not just that specific row like in Google Sheets). You can see the actual template in or follow the screenshots below.Task dependencies
Similar to Notion’s Relation column type, Coda has a that lets you “lookup” to another table in your doc or to the current table the column is in. In this case, the
Dependency
column is a lookup column to the “All Tasks” table:Now I can select any task in the
Task Name
column as the dependent task in the Dependency
column. Also similar to Notion, hovering over each value in the dropdown actually lets you see all the data related to that specific task:Task/dependency start and end dates
In some of the project management platforms described above, writing formulas led to errors due to inconsistencies with column types. Notably, being able to add a number (from our
Duration (Days)
column) to a task’s start date is problematic since you are mixing date and number formats. Smartsheet handles this well given that it has strict rules around dependencies and task durations. Notion also is able to handle this scenario with their dateAdd
function. In Coda, the
Duration
column in our table is actually a custom duration column type. This means if you enter the number “3” in this column, the column will automatically convert that number to “3 days.” Therefore, adding Task Start Date
with Duration
yields another date as shown in the formula below:To get the dependency’s start date and end date like we have in the Google Sheets, we can simply reference the
Dependency
column and “project out” it’s start and end dates like so:The
Dependency
column contains the entire “row” of a given task in the first column of our table, so each column in this table is bound to whatever task you select in the Dependency
column. This is similar to the Google Sheet where we do a VLOOKUP
onto the same table to find the dependency task’s start and end dates. One could argue that the Coda formula is a bit easier to read since you don’t need to input a bunch of values or references into the formulaCascading dates with a “kickoff” date
Coda accounts for potential recursive situations, so you’re able to create this “cascading” list of dates similar to the functionality we have in the Google Sheet. In this case, I give the user the ability to input their own start date for the “kickoff” task (”Instructor Shoot”) as a date picker right above the table:This date picker is a which you can assign a name to (similar to defined named ranges in Google Sheets). I named this date picker
firstTaskDate
which we’ll use in a formula in our table. When I select new dates in the
firstTaskDate
date picker, you’ll see all the task and dependency dates automatically re-adjust based on the start date of the “Instructor Shoot” task. This is similar to adjusting the first hard-coded start date in Google Sheets, moving the “dependency chain” in Wrike, and shifting the gantt chart in Smartsheet:This all works because of the formula in the
Task Start Date
column. This is a formula I was not able to replicate in other dedicated project management software due to a mismatch in column format types and the potential for a recursive formula. The formula is an IF statement that checks to see if the Dependency
column is blank. If it is, then it uses the firstTaskDate
date picker value right above the table as the date for the “kickoff task.” Otherwise, it just takes the value in the Dep End Date
column. We are modeling a simple Finish-to-Start scenario but we could easily write a more custom formula to account for SF, SS, and FF dependency types.The formula in Google Sheets is easier because we can simply reference the
Dep End Date
column without having to write an IF statement. But this comes at the cost of giving the user a clean user input to pick the date for the “kickoff” task. In Coda, it’s a date picker that goes right above the table with some helper text before it. In Google Sheets, you would have to format the hard-coded cell and perhaps put in a note for the user to know that this is the specific cell that the user needs to edit:Gantt and calendar visualizations
Similar to other platforms, you can visualize a list of tasks and dependencies in different ways that make sense for how your team operates. The gantt chart view is not as robust and feature rich as ClickUp, Monday, Wrike, and Smartsheet. You cannot draw arrows from one task to another nor can you adjust task lengths by simply dragging and dropping the right and left boundaries of a bar on the chart. The reason for this is because each task’s start and end dates are fixed via formulas, so the tradeoff here is being able to have the “cascading” ability of dates (like you have in Coda and Google Sheets) versus the flexibility of editing each task’s dates one-by-one (as you have in ClickUp, Monday, and Wrike):Also published .