工具的品格
开发人员除了开发工具(编辑器、中间件),还需要各种必备的任务管理(或者进度管理、项目管理,不纠结其名字)工具,你可能用的是免费的 TODO list、Trello,或者诸如 JIRA 等商业软件,亦或是自己编写的简单 Web 管理工具,甚至记事本、OneNote等。也不管我们叫他 GTD 还是个人助理,我们依赖这些软件的原因之一无非是好脑子不如烂笔头,记下来就不会“忘”。
前面的“忘”字为什么加个双引号呢?因为记下来你看不到,还是会忘,因为这个工具可能并没有告诉现在你应该去做什么,这个任务,可能一直沉睡于箱子的底部。
一个好的任务管理工具最,我觉得基本应该包括以下几点必须的品格:
任务状态
是在进行中,还是准备中;是否处于一个流水线上,处于哪个阶段;是否顺利,有什么 Block 的问题等等。有了任务状态,才能决定采取何种措施。我们对应用程序的性能、服务器的使用情况、中间件的健康程度都有监控,自己的任务也应该有类似的监控机制:你的任务是绿?黄?还是红?(Elastic Search用户都秒懂的)
任务优先级
对大多数软件开发人员来说,并行工作司空见惯,反过来一个月只做一件事的人估计只能是宝洁或者厨子了。一个人很多时候可能担任多个项目、多个产品、多个组件的开发工作,这时候任务列表可能堆积如山,如果没有为这些工作设置优先级并进行可视化,你看到这么多任务如何决定该先干哪个后干哪个?有新的任务进来,是不是该停下手头的工作开始新任务?还是让新任务靠边站。
为任务排序,是有条不紊高效工作的第一步。
依赖关系
大多时候你不是一个人在战斗,你可能会和前端、后端、日志服务、API服务、运维或者产品经理一起在完成一个功能,你即依赖别人,也被别人依赖。DevOps 主张消除浪费,每个等待都是浪费,你写到一半的代码就像保存在仓库中的玉米,天气潮湿可能发霉、生虫。
识别依赖关系、解决绊脚石,能保证任务顺利完成。
工作流支持
DevOps 要做的是一个统一工作流平台,就像流水线那样,零件从一个部分传到下一个部分,如果流水线的履带宽度不一样、速度不一样,能衔接的稳?
任务管理工具也是,和其他工具的无缝集成是一个大大的必备项。比如是否支持开发中其他工具,比如构建、发布或测试等的插件支持。
这很重要,也是 DevOps 或者流水线的关键,我们的每项开发活动的产出物,是否可以通畅的缴费给流水线的下一个动作?
考察这一点的标准也很简单,你是否在不同的工具之间拷贝某个提交号、版本号、或者某些说明?
领导角度
个人需要方便的任务管理工具,领导更需要。成员的任务就是组织的任务,领导是最任务的终责任者,最终责任者更需要对任务状态、进度等了如指掌,这是第一。
第二,你需要掌握组员的状态。而任务可以在很大的程度上体现组员的现在状态:是否工作压力很大,是否遇到了麻烦,是否可以抽出来去做别的救火队员。
从管理角度上来说,多维度的报表也很重要,项目进度、花费的成本、产品的质量,都可以从任务管理工具得到直观的结果。
铁证如山
不管你要扯皮的对象是谁:同事、领导、客户、其他部门,你都需要拿出证据去说服别人、怼(dǔi)到让别人无话可说。
这时候,我们就需要工具具备丰富的记录功能,至少能传个附件吧,修改履历功能也是必不可少的。
上面列出来的只是自己的观点,有些人可能不觉得,甚至很多人都不在乎,不过大叔实在是难以忍受不抱怨工具的开发 :-)