V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
coolwulf
V2EX  ›  分享创造

谈谈我是如何高效率的工作,高效率的 Get Things Done 和让团队高效率运转

  •  5
     
  •   coolwulf · 2022-10-18 11:25:11 +08:00 · 3661 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    总有人问我,我是如何能在这么短的时间里面把一个项目做出来并成功 Deploy 到 Production, 或者是 Clinical application 的. 很多时候常被人怀疑我给出的 Timeline 不切实际。但往往在我最终却能够成功按照我自己的 Timeline Deliever 一个又一个的 Milestone.

    • 所谓受人以鱼不如授人以渔,所以我准备开一个长帖好好地探讨和讲解一下我自己在工作当中,并由实践检验的 GTD Philosophe 和具体的实现方法

    首先从我之前使用过的工具说起.

    知识管理,记录,用过各种 wiki, logseq, evernote, confluence, obsidian 团队协作,任务分配,记录使用过 Jira, Teams 等等

    但我的个人经验是,只要用户和使用的工具之间有任何的 Friction, 整个效率就会大幅度的下降,达不到足够好的效果

    经过了多年的实践,我才发现,所谓大繁至简,最最有效率的文件格式实际上就是 ASCII txt 文件. 因为最方便为各个不同的编辑器支持。而每个人都有自己所习惯和喜欢的 Editor, 有的人可能喜欢用 VIM, 有的人可能喜欢 Emacs, 有的人喜欢用 Notepad++, 有的人喜欢 Sublime, Atom, VScode. 所谓众口难调,如果想让一个团队高速的协作运转就要让每个成员都可以使用他们趁手的工具。

    • 而最 Powerful 的 ASCII 的文件格式可以说就是 emacs 下的 Org-mode

    https://orgmode.org

    具体的细节大家可以查看 org-mode 的官方网站

    我从十几年前就开始在 emacs 中使用 org-mode 来管理我个人的学习和生活. 非常行之有效

    Get things done 的核心是两点:

    1. Capture

    2. Action

    Capture 的关键在于随时随地的快速把想法,计划,或是需要作的事情记录下来

    在实际当中就是需要配置全局的快捷键,快捷方式来达到这个效果 如何快速全面的收集信息和非配任务,并具体的设置 Actionable Item 让整个项目组能够高效率的运行是 GTD 的关键

    • 而 Action 的关键就是如何快速的开始一项任务,防止有 Procrastination

    我之前的团队曾经长时间的使用 JIRA, 虽然 Jira 是个很好的 agile 工具,但问题是使用的 Friction 还是确实存在的,每个用户在添加或者修改一个 ticket 的时候,需要先打开浏览器,找到对应的项目,数个鼠标点击才能开始输入。这就是我说的问题,对于用户来说,有使用的 friction, 这就导致了对于用户的 overhead 的 adoption hurdle.

    而对于打开 Org 文件的编辑器来说,只要这个编辑器不关掉,我的所有任务列表,具体的记录,计划就都在手边,我可以快速的查看明细,快速的完成我的 todo 列表,进行到下一个任务当中

    • 一个系统正常运转,首先是工具,从具体的组织结构上来说,我这套系统的核心是

    ASCII 文件(org-mode) - Git Repo (可以是 Github) - 在后台自动运行的 script (Mac/Linux 上用 bash, Windows 下面 bat)

    我个人曾经主要用 Emacs ,但最近这几年基本转用 Sublime Text 了,这里谈谈我个人的一些配置经验, Sublime text 有一个针对 org-mode 的插件. OrgExtended:

    https://github.com/ihdavids/orgextended

    虽说对于 Orgmode 的支持还不全面,但对于我个人和公司的项目来说,是够用的了

    Facebook 的 Zuck 常说他的法则是高于 25 分钟的任务他会分解。我的个人准则则是 20 分钟 任何 item, 如果超过了 20 分钟的需求我会把他们分解成 sub tasks. 这样可以保证我对于这个工作我可以很快开始,而不会有 procrastination.

    • 举个简单的例子,这是我一个员工正在工作项目的 item 和 sub task, 我的教条就是所有的任务需要记录下来,并且要分解到 <15min 的 block

    上面顶层是我要求他完成的一个简单功能,然后所有对应的任务立刻进行了分解,如果一个任务超高了 15 分钟,那就继续分解,这样可以保证他会立刻可以开始针对 Actionalble 的 item 进行工作

    我为什么要强调这个,因为如果你的 task 需要超过两个小时以上才能做完,而你不去做分解,大概率你就不会立刻去工作在这件事情上了。因为完成一件事情很多时候最难的是开始,当你能够开始进行它之后,你就会产生一种 Flow, 这种 flow 的精神状态会保障你把工作完成

    为什么每件事情都要做记录,一方面这确实能够提高员工和我自己工作的连贯性,boost efficiency, 这样在任何时间节点上,大家都能知道该做什么,有什么事需要立刻做的事情. 另一方面因为我们是在医疗领域,所有的这些工作最后需要通过 FDA approval 的,所有的这些工作在申请 FDA Clearance 的时候都需要能够做到溯源回去,需要 documented. 这种工作方式可以自然而然的保证这些。

    以前我公司里面是使用 Jira 和 Confluence 这两个 Atlatian 的工具来做项目管理和文档管理的。现在我们完全都转到 Org 上来了。一是 Org 反正是基于文本文件的,一个新的文档建立一个新的 Org 文件就可以了。还有就是我习惯与将文档和 TODO list 放在一块,这样的好处就是对应的 actionable item 和对应的需要信息都在一起,没有了一个额外去寻找信息的 friction, 我前面顶楼里面的截屏例子就是这样

    • 然后开始上一些细节了。Devils are in the details.

    对于团队合作,重要的一点就是使用 git repo 自动同步每个人的工作进度到一起,并且可以大家都可以基本实时的看到.

    首先,我写了个 script 在后台自动运行,每半分钟自动 pull / merge / push 一个 org 目录到我们公司对应的 repo 上面

    Sublime text 是可以支持自动 reload 文档的, 当一个文档在后台更新了,Sublime 可以自动 reload 而不需要用户做任何操作, 如果没有设置好,可以打开设置,保证这个 setting 是 true:

        // Whether to reload a file if it has changed on disk.
        "reload_file_on_change": true,
    

    看我顶楼的截图里面,每个 employee 都可以看到其他人的 commit , 和对应完成的工作或者新建的任务。这种机制可以很好的保障大家的 self-motivation 和 self-discipline. 我常说我招一个新的员工不会主要看他是否比别人聪明,而是看他是否有 Self-motiviation 和 self-discipline.

    Org mode 还有一个好处是 Github 的 online 页面是直接支持这个格式,在浏览器中打开对应的文件,也可以看到格式化的界面,这样方便在开例会的时候方便讲解,或者分享。

    ublime Text 的 keybinding 功能很方便可以很容易的把一些需要的方便快捷功能整合到我的 workflow 里面,

    比如我常用这种格式在 org 文件的 task 当中加入 notes:

    #+BEGIN_EXAMPLE
    	My Notes
    #+END_EXAMPLE
    

    这样 org-mode 会自动格式化这些 notes, 我在 Sublime 的 keybinding 设置里面加入这行:

    { "keys": ["ctrl+c", "ctrl+i"], "command": "insert_snippet", "args": { "contents": "#+BEGIN_EXAMPLE \n${0:${TM_SELECTED_TEXT}}\n#+END_EXAMPLE"}},
    

    这样我按 Ctrl+c Ctrl+I 之后就会自动出现上面的格式了,适合我输入 Notes.

    在 GTD 的理念里面一个重要的东西就是对于所有的任务应该给出具体的 status 和 priorities ,即按照状态和重要性分类。看我顶楼的截图,我是这样做的,每一个任务,task ,项目都会有不同的状态,比如 TODO / IN-PROGRESS / Waiting / DONE, 这些任何时候我喵一眼这个状态就知道具体到各个项目当前的状态如何。

    而对于重要性 priorities, 我是让每个项目添加一个 [#A] [#B] [#C] 这种格式的 Tag, Org-mode 会用对应的颜色显示不同的 tag, 这样我就可以很快确定这个项目的 Priorities.

    而具体到每个项目其他的属性,比如这个项目具体交给谁来完成,我使用 :name: 这样的 tag 方式可以很快分配任务,而员工也可以很快在他同步的文件中看到这个 tag

    只有安排具体的任务,你的效率才能 flow 起来,你具体尝试去做就会知道了。安排任务的时间花费是完全值得的

    我强调的我需要员工有 self motivation 和 self discipline, 到具体实践上,我只会给员工一个具体的大任务和大方向,具体的子任务是由他们具体去做和完成的,但一定要按照我的准则,就是 1 ,小于 20 分钟的任务一定要分解 2 ,每个任务定义都要求是 Actionable Item

    有人会问,如果这样的话,那这个文件会不会变得越来越大,越来越慢。答案是不会的

    1. Org mode 支持 archive, 我可以迅速把一个改变为 Done status 的项目已到 Archive 里面,这样当前文件就可以保证很 efficient
    2. 我当前公司的原则是,对于一个项目建议一个对应的 org 文件,而且一般来说每个月我会建立一个新的对应的 org 文件,会在月末做一个 review , 只有需要的项目才会复制到这个新 org 文件里面,其他的会 archive

    这个 list 肯定是不断 grow 的,一开始不需要分得很细,关键是要能够快速开始,然后如果碰到需要添加的项目能够快速添加,就是我说的重要两点

    Capture 和 Action

    Orgmode 的另一个优势就是可以使用快捷键快速的打开和关闭对应项目的 folding / unfolding, 比如在 TODO 行上,我点击 tab 就可以快速打开和关闭这个项目的 folding, 我可以使用 Shift + Tab 快速在所有项目的 folding 之间 cycle, 我还可以对于不同的情况做 keybinding , 比如我定义一个这个 keybinding:

    { "keys": ["ctrl+c", "ctrl+z"],       "command": "org_fold_all_but_me",           "context": [{ "key": "eol_selector", "operand": "text.orgmode"}]  },  
    

    它可以让我用 ctrl+c ctrl+z 关闭除当前项目其他项目的 folding

    另外一个我常用的 keybinding 就是快速切换任务的状态,比如 checkbox task 我可以快速切换到完成状态,或者 ToDO 项目我可以快速切换到其他 status:

    { "keys": ["ctrl+c", "ctrl+c"],        "command": "org_toggle",                    "context": [{ "key": "eol_selector", "operand":"text.orgmode"}]},
    

    这样我点击 ctrl+c 两次就可以快速转换

    • 在我顶楼的截图上面,org mode 另一个很方便的功能就是使用 [%] 来 track 进度,任何一个母项目都可以用这个符号放在行尾,org 就会自动计算当前这个项目的进度了

    本文首发在 D 版,今天在这里就先写这么多吧。

    17 条回复    2024-08-08 12:00:55 +08:00
    skyjerry
        1
    skyjerry  
       2022-10-18 16:48:14 +08:00
    很不错,VSCode 支持吗?
    coolwulf
        2
    coolwulf  
    OP
       2022-10-18 19:27:10 +08:00
    @skyjerry VSCode 有个插件可以实现 org mode 叫"vscode-org-mode"
    https://github.com/vscode-org-mode/vscode-org-mode
    FoolgryWang
        3
    FoolgryWang  
       2022-10-18 22:06:53 +08:00
    谢谢分享
    wwang7
        4
    wwang7  
       2022-10-18 23:50:28 +08:00
    感谢分享!有两个问题想请教:@coolwulf

    1. 在移动端上有最佳实践吗?
    2. vim 有相关的插件推荐吗?
    coolwulf
        5
    coolwulf  
    OP
       2022-10-19 00:04:22 +08:00
    @wwang7 vim 的 org-mode 插件: https://github.com/jceb/vim-orgmode
    Android 上的 org-mode app: https://github.com/orgzly/orgzly-android
    ygsunshine
        6
    ygsunshine  
       2022-10-19 10:19:50 +08:00
    谢谢大牛分享!

    想了解一点细节:关于分解到<15min 的 sub task, 什么时候、多久一次做这个分解?是准备接下来的两个小时的任务时,还是分解今天一天的,甚至一次分解这一周的?这个分解任务本身就是一个思考的过程,就可能花掉一些时间,也可能思考一阵发现有些不明朗的地方要做一些 research 才能继续,这个时候你怎么做?

    就算第一次分解好的任务,具体执行的时候又会发现之前没想到的新难点,或者新思路,你会立即 update 你的这个 Org mode 文件吗?

    谢谢!
    coolwulf
        7
    coolwulf  
    OP
       2022-10-20 01:48:35 +08:00
    @ygsunshine 我一般会把大项目提前分解,细节的 sub task 会一边做一边分解
    trioon
        8
    trioon  
       2022-10-20 10:06:01 +08:00
    谢谢分享~
    请问一下 D 版是什么地方?
    coolwulf
        9
    coolwulf  
    OP
       2022-10-20 11:36:41 +08:00
    trioon
        10
    trioon  
       2022-10-20 14:17:41 +08:00
    @coolwulf 自己找了一圈也确实找到了这个论坛,因为没有账号,我在游客能看到的几个板块都没看到相关的帖子,是因为其他板块只有会员才能看吗?
    coolwulf
        11
    coolwulf  
    OP
       2022-10-20 19:24:35 +08:00
    @moosetang 是的
    coolwulf
        12
    coolwulf  
    OP
       2022-10-21 00:01:08 +08:00
    一点更新:

    ----------------------------------------------
    我常常跟我的员工说的类比是。

    就好比你如果常跑步,比如跑 5K ,你如果看着很远的地方跑,会感觉越跑越累,因为你看到目标非常远。但如果你跑步的时候只专注在脚下,一步一个脚印地把这个路线跑下来,你会发现 5K 会很快就跑完了,因为你能够专注在脚下的每一步,而不用去担忧遥远的长远目标。

    项目计划的进行可以作一样的类比,专注在每一个细节的 sub task 会让你和员工能够专注眼前的工作,循序渐进地推进项目
    ----------------------------------------------
    实现起来总有一堆细节

    比如 Sublime Text 有一个问题就是 Folding 不会在重启的时候或者文件 reload 的时候保持。

    我经常在其他地方修改了我的 org 文件,或者其他员工修改了之后,git pull 后我这里 Sublime 自动 reload 文件,但我之前的 Folding 就没了,很 annoying.

    然后我尝试了几乎所有 Sublime 能够支持保持 Folding 的插件,都无法实现我需要的功能, 比如它的 AutoFold / AutoFoldCode / BetterScroll 等等插件.

    究其原因是因为 Fold state 是每一个 folding 对应两行,如果文件在后台更新之后,有可能有新的行出来,编辑器是不知道具体的信息的,如果只记录行数不重新完全 parsing 这个文件,自然 Fold state 就无法保持了. 而 Sublime 本身不支持这个功能

    所以没办法,因为我个人已经从 emacs 转到了 sublime, 很多快捷键的 muscle memory 已经形成了。我于是花了 1 个多小时的时间,阅读了 Sublime 的 API 文档,重头开始写了一个新的 Sublime Text 的插件来支持我在 Org mode 下面需要支持到的 folding 功能...

    然后终于舒适了
    wensonsmith
        13
    wensonsmith  
       2022-10-21 17:54:09 +08:00
    厉害,先赞后看
    wensonsmith
        14
    wensonsmith  
       2022-10-21 18:03:07 +08:00
    最难的是每个 sub task 都要控制在 20 分钟以内吧。 很多设计或者需要思考的工作既不能拆的更细,又需要花费很长时间。
    coolwulf
        15
    coolwulf  
    OP
       2022-10-21 20:41:47 +08:00   ❤️ 1
    @wensonsmith 没有必要所有的任务都一开始细分到很具体,我的 common practice 是如果开始进行一个项目,先确定最先需要开始的项目 sub-task ,然后开始工作,一边工作一边慢慢添加后续的 sub task 。 你可以完成一个 sub task 然后添加后续的项目。循序渐进地慢慢完善这个项目的 task structures
    wanjiawei0755
        16
    wanjiawei0755  
       215 天前
    感谢楼主的分享,想问问楼主的 sublime text 的 folding 插件是否有公开的下载地址?想实践一下楼主的工作方法看看是否适合自己
    yiyiniu
        17
    yiyiniu  
       140 天前
    @coolwulf 楼主,您好。我在带项目中也很苦恼(关于开发任务延期、关于开发效率问题),有几个疑问 1 )一个大项目,可能涉及到多个端,如 PC 端、手机端 ,各端下面有自己的功能模块,刚开始时您是先分解模块吗? sub task 是由开发人员,自己认领,自己分解吗? 是他们在一开始做的时候就分解出来吗? 2 )一个大项目,是有完成时间的。如果边做边分解,会不会造成延期的情况? 3 ) 开发完成后,交由测试人员验证。往往测试会提一堆问题,这时开发既要完成开发任务,又要修复 Bug ,这个时间您是怎么管理的呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:28 · PVG 21:28 · LAX 05:28 · JFK 08:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.