本文翻译自 http://doc.norang.ca/org-mode.html ,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。
本节主要介绍如何用org-mode来对任务生成计时报告,如何设置任务评估时间。
对于有周报,月报,年报要求小伙伴可以通过该功能生成需要的任务报告。
可以节省很多时间。
1. 计时报告以及跟踪
1.1 根据计时时间向客户收费
上月月初我通知客户工作完成,并要求支付。这就是根据我的计时数据修正费用的地方。
可以通过如下方式来达到计时收费的手段:
-
验证计时数据完整有效
-
用计时报告功能提炼出时间消耗报告
-
创建基于计时信息的收费单
当前收费单的创建我是通过外部一个软件包,这个软件包依赖org-mode计时信息。
-
归档完成的任务,完成任务。
可以参看归档一节(后续文章)信息。
1.1.1 验证计时数据完整有效
因为我经常修改任务(有时候一分钟修改不止一个),但是修改任务很快就完成了,因此这种 情况下计时信息都是空的,所以我用下面设置删除那些空时间计时项。
,#+header: :tangle yes
,#+begin_src emacs-lisp
;; Sometimes I change tasks I'm clocking quickly - this removes clocked tasks with 0:00 duration
(setq org-clock-out-remove-zero-time-clocks t)
,#+end_src
这个设置可以保证我的计时项干净-只保留那些对计时报告有帮助的计时项。
为检查未关闭的计时,我通过agenda视图的时钟检查( 在agenda中执行 v c
)。通过agenda视图显示计时差异以及重叠。
为了看到上个月计时数据, 我使用 F12 a v m b v c
显示一整个月的视图,然后移动到上 个月,只显示计时信息。需要注意的是,为保证结果的准确性,需要移除所有agenda的限制以及 设置的过滤条件,这样就可以显示完全的任务以及计时信息,然后来检查差异以及重叠任务就会变得准确。
在agenda中显示的任务计时情况方便检查任务是否有忘记关闭(没有关闭的任务,那么计时可能一直在 进行)。如果有任务项没有关闭,可以根据其他计时信息手工修改该任务计时信息。
1.1.2 使用计时报告统计时间消耗
向客户可计费时间信息保留在单独的org文件。
为获得 XYZ.org
所有任务花的时间的报告,你只需要打开 XYZ.org
文件,运行agenda 通过快捷键 F12 <a v m b R>
就能生成时间报告,从而能够查看上个月的任务计时信息. 这样就能通过agenda只显示该文件的信息,显示整个月的信息,然后可以移动到上月,生成计 上个月计时报告。
我的agenda计时报告显示5级细节并显示任务链接。我喜欢报告中生成详细的计时信息而不是精简的 ,因此我通过如下设置重写了=:narrow= 值。
,#+header: :tangle yes
,#+begin_src emacs-lisp
;; Agenda clock report parameters
(setq org-agenda-clockreport-parameter-plist
(quote (:link t :maxlevel 5 :fileskip0 t :compact t :narrow 80)))
,#+end_src
#+end_src
我曾经会对每个项目自动生成计时报告,然后在每个计费周期截止日手工修正计时信息。我以计时信息为基础,跟客户讨论项目收费。但是我发现当有好几个文件需要自动 生成并手工更新时,非常令人乏味。
当生成计时报告功能引入后,我开始使用agenda计时报告功能。我发现这种方式更加 方便。agenda计时报告生成的是通用格式的数据而并不是假设的某种场景下的那种格式, 这样更加通用,因此我觉得使用这种方法已经足够用了。
1.2 任务评估以及列视图
对于管理者来说评估一个任务得花多长时间是非常困难的。org-mode让评估变得简单了, (基于历史任务实际计时情况),然后只要对任务实际计时直到任务完成。
通过反复的评估任务大致使用时间以及实际使用时间,可以让你的评估能力变强。
1.2.1 通过列模式评估新创建的任务
我使用 properties
以及 column view
做项目评估。
我设置如下的列模式标题格式
,#+header: :tangle yes
,#+begin_src emacs-lisp
; global Effort estimate values
; global STYLE property values for completion
(setq org-global-properties (quote (("Effort_ALL" . "0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00")
("STYLE_ALL" . "habit"))))
通过这个设置可以在列模式中显示评估时间以及实际时间,方便项目耗时评估。
Effort
属性来记录任务完成评估时间。下面是我通常用的评估时间:
-
10 分钟
-
30 分钟
-
1 小时
-
2 小时
-
3 小时
-
4 小时
-
5 小时
-
6 小时
-
7 小时
-
8 小时
这些时间被存储在 column mode
全局属性 Effort ALL
中。
,#+header: :tangle yes
,#+begin_src emacs-lisp
; global Effort estimate values
; global STYLE property values for completion
(setq org-global-properties (quote (("Effort_ALL" . "0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00")
("STYLE_ALL" . "habit"))))
通过快捷键 C-c C-x C-c
启动列模式来设置任务评估时间以及子任务评估时间,通过快捷键 c
折叠列模式. 它将在标题上创建一个以任务 名称命名的表格,评估时间以及实际时间会显示在表格中。
光标移动到 Effort
列,你可以容易评估值,通过快捷键 q
退出 colume mode
.
1.2.2 保存评估
对于固定价格的任务,当你提供评估给客户后,然后开始着手完成项目,保存最开始评估数据是很有必要的。
通过在你评估项目子树上创建动态计时报告以保留原来评估数据。然后通过快捷键 C-c C-x i RET
生成新的计时表中包含评估时间以及实际计时时间。
,#+begin_src org :exports src
Original Estimate
,,#+BEGIN: columnview :hlines 1 :id local
| Task | Estimated Effort | CLOCKSUM |
|-----------------------------+------------------+----------|
| ** TODO Project to estimate | 5:40 | |
| *** TODO Step 1 | 0:10 | |
| *** TODO Step 2 | 0:10 | |
| *** TODO Step 3 | 5:10 | |
| **** TODO Step 3.1 | 2:00 | |
| **** TODO Step 3.2 | 3:00 | |
| **** TODO Step 3.3 | 0:10 | |
| *** TODO Step 4 | 0:10 | |
,,#+END:
,#+end_src
我通常会删除 #+BEGIN:
以及 #+END:
标记,以防止当将数据提供给客户后,在开始行执行=C-c C-c= 导致表格意外更新。
保留原始的评估数据,方便后续根据评估数据重新提炼项目任务合理分割子任务。
1.2.3 检查你的评估
Column view
非常方便用来检查评估。在该视图中会显示你对该项目的评估时间以及项目实际计时时间。
可以通过快捷键 C-c C-x i RET
创建一个动态计时表格, 这样就可以保留你的检查结果,同时也方便 给其他应用使用。
另外快捷键 C-c C-x C-d
也可以快速显示当前org文件的计时统计。
1.3 提供进度报告
当有人需要知道现在进度报告,我通常在agenda视图快速生成一个日志报告,其中包含完成的 任务以及状态变化还有计时信息等。
下面设置可以在agenda中显示关闭的任务以及状态变化。将其绑定到agenda计时报告('R')我 能够快速生成所有需要的细节。
,#+header: :tangle yes
,#+begin_src emacs-lisp
;; Agenda log mode items to display (closed and state changes by default)
(setq org-agenda-log-mode-items (quote (closed state)))
,#+end_src
#+end_src