Coda's Gantt implementation is non-standard and confusing!

Every Gantt chart I’ve ever used (and every result I see in Google image search for Gantt chart, and in the Wikipedia entry) has days represented by the space in between lines. But in Coda, days are represented by the lines themselves. This is confusing because it breaks convention and makes information less clear.

For example, let’s say you have two tasks:

  • Task A starts on Monday and is due on Tuesday
  • Task B starts on Tuesday and is due on Thursday

In the traditional Gantt representation, the assumption is that date ranges are inclusive. In other words, I can work on Task A on both Monday and Tuesday, and on Task B on all three days allotted.

That’s clearly represented in the traditional Gantt visualization. There are two days filled in:

          M   T   W   R   F
Task A  |===|===|   |   |   |
Task B  |   |===|===|===|   |

But in Coda, the representation is less clear. Yes, there are the correct number of lines being touched, but because the lines are on the edges of the highlighted range, and because it breaks convention, it’s harder to follow:

        M   T   W   R   F
Task A  |===|   |   |   |   
Task B  |   |===|===|   |

This representation is also outright confusing. Here’s an example of a task that is started and due on the same day:

        M   T   W   R   F
Task C  |   |   |=  |   |   

Note that in this case the bar extends past the Wednesday line to communicate that the task starts and ends on Wednesday.

Now look at these two tasks below. In both cases, the task is due on Wednesday:

        M   T   W   R   F
Task Q  |   |===|   |   |   

        M   T   W   R   F
Task Z  |   |   |=  |   |   

Both tasks are due end of day Wednesday (i.e. at the same) but the bar doesn’t visually represent that correctly in both cases! That’s confusing!

Compare that to the standard Gantt visualization:

          M   T   W   R   F
Task Q  |   |===|===|   |   

          M   T   W   R   F
Task Z  |   |   |===|   |   

It’s crystal clear that both tasks are due at the same time. In Coda’s implementation that boundary between days is somewhere in the empty space between the lines, but it should actually be the lines themselves!

And here’s another example I consider confusing; consecutive tasks that skip the weekend. Look at all that space between them:

        M   T   W   R   F   Sa  Su  M   T
Task D  |   |   |===|===|   |   |   |   |
Task E  |   |   |   |   |   |   |   |===|

Compare that to the more concise and clearer traditional Gantt representation:

          M   T   W   R   F   Sa  Su  M   T
Task D  |   |   |===|===|===|   |   |   |   |
Task E  |   |   |   |   |   |   |   |===|===|

I highly encourage y’all to consider fixing this to adapt to the standardized Gantt conventions. It’ll make Coda a more robust and easier to use offering!

3 Likes

Hi @MrChrisRodriguez,
I’m impressed by the logical - and visual - explanation!

Gantt charts (and charts overall) surely will evolve. This is a very good way to concretely propose something.
Thank you.

2 Likes

Hey @MrChrisRodriguez,

Thanks for the clear visualization.

I should say though that there’s no problem with the Gantt chart — instead there’s a misunderstanding about what the end date is.

In Coda, all dates are 00:00 AM, i.e. midnight, i.e. start of the day.

So if your event starts on Jan 1 and ends on Jan 3, that’s Jan 1 00:00 — Jan 3 00:00, which is two, NOT three days long. The end date is exclusive, not inclusive. And that’s the logic throughout all of the Coda and programming in general.

If Gantt charts were treating end date as inclusive, that would introduce inconsistencies. E.g., you’ll see a 3-day wide item in the chart, but a duration formula End - Start would still calculate to 2 days.

If you don’t need to be able to tweak the dates directly from the Gantt chart, I’d suggest doing this:

  1. Add a Duration column that’d calculate as [End (incl.)] - [Start] + Days(1)
  2. Set up Gantt chart to use Start and Duration, not Start and End. It will then display Gantt items with correct widths. You won’t be able to drag end date separately from start date though.

P.S. I agree that labels could move to rest between the grid lines. Right now they designate the start of the day but should encompass the entirety of the day.

3 Likes

Hey @Paul_Danyliuk thanks for the great response, but I disagree. If nothing else, the fact that date labels are assigned to lines and not the spaces in between them breaks convention and should be fixed.

That aside, I still think the default behavior is confusing and needs improvement.

If I’m interpreting you correctly, you’re operating under the logical model of “Gantt is like a progress or percentage bar. It should show proportionally within a given day, and allow for time arithmetic.”

My interpretation (and I think the conventional implementation) is that Gantt visualizations relate to set logic instead of arithmetic.

In other words “Gantt visually represents the time units included in a given range, typically at the specificity of the day, or more granular at higher specificities/zoom levels.”

The average Coda user is not a software developer, and certainly not a Coda expert. When they use any Gantt software (and timeline tools like Asana) and they put in a start and end date, they expect those to be inclusive. When it’s not, they’re not going to try to figure out how to make the datetime arithmetic work. Instead, they’re going to do what I did – think “this isn’t production ready and was released too early” and go use something else, which isn’t ideal.

1 Like

While we’re complaining about Gantt charts (I agree with the above poster btw), can we also have an hourly view - so we can have a day broken down into hours. Thanks

1 Like