Set Milestone In Taskjuggler Via Orgmode

Taskjuggler 是个好东西

我在工作中,经常会需要排布计划。我很不喜欢用 Excel, Microsoft Project 等这些工具 去做这件事情,一来我不喜欢那么将随意调整的能力给到可以访问计划的每一个人,二来这 些工具的可操作性实在太差了,一会儿用用鼠标,一会儿调一调格式,这都是很让我割裂的 工作方式。

我很久以前试过用 PlantUML 做甘特图,问题在于 PlantUML 的一致性太差了,并且它也不 是个专门用于项目管理的工具。当然和 PlantUML 对标的 Mermaid 也不是我的理想型。但 直到某一天,我遇到了 Taskjuggler。我的问题终于得到了解决方案。

Taskjuggler 诞生于 2001 年,是一款历时已久的项目管理工具。经过了这么些年对于项目 管理的摸爬滚打,我渐渐觉得软件工程在项目管理上,有时候需要借鉴的太多了。软件工程 固然有其复杂性,但这复杂性往往带来的是混沌,而非经典项目管理上的确定性。一个项目 追求的一个大目标,就是其确定性,若没有确定性,便没有计划。

日益复杂的系统工程,带来了确定性的挑战。这也就需要系统的项目管理工具来辅助项目管 理人员来思考。我个人认为 Taskjuggler 最大的优势在于其高度的开放性,它开放了很多 的字段,这些字段可以照顾到我在一个项目上碰到的各种各样奇怪的问题。而其他的工具, 看似上手容易,实则限制了想象力。我很想在这个地方多说一些自己的感悟,可恨的地方在 于,我对 Taskjuggler 的体验还没有那样深刻。等之后有机会,我可以多写一些这部分的 对比介绍。

Taskjuggler with Milestone

当在进行高层次的项目计划时,我通常不会考虑细节的分解,对于某一个任务,我更喜欢使 用类似 “deadline(最终期限)” 或者 “delivery time(交付时间)” 的方式来开展组织计划。 相应地,在taskjuggler 中,我会用如下的范例来描述一个任务的交付时间:

task tara "TARA" {
      milestone
      end 2025-2-15
    }

由以上的范例可以发现,taskjuggler 使用的是一种不太常见的语言,说实话这有些增加了 学习成本。幸运的是 taskjuggler 可以使用 Orgmode 来转化。所以 Let’s Orgmode!

每一个确定性的目标都是要满足某一个 Milestone。taskjggler 里使用 🔶 来表示一个 Milestone 的完成。

Trial and Error

在使用 Orgmode 导出 Taskjuggler milestone 的时候,我遇到了一个问题,详细可以参考 这里。这个 Issue 并没有给出最终的解决办法,经过我的试错,一个 walkaround 是:

不要在最后一个 task 里增加 end property! 不要在最后一个 task 里增加 end property! 不要在最后一个 task 里增加 end property!

好了,happy hacking!


Last modified on 2025-01-09