防止断更 请务必加首发微信:171 6143665

01丨优先级:工作中那么多事情,我要如何安排优先级?

2020-05-18 臧萌
职场求生攻略
进入课程

讲述:臧萌

时长11:39大小10.68M

你好,我是臧萌,这篇文章是专栏的第一篇,我们以工作中的优先级这个话题开始。我们在日常工作中,总会这样感慨:事情,是干不完的。
既然干不完,那我们就要分清轻重缓急,哪个重要,哪个不重要,给它们划分一个优先级,这样不至于让自己手忙脚乱。
能给手头的事情排上正确的优先级,是一项很重要的工作能力。
当然,我们在生活和学习中,事情也可能不少。但是和工作中的优先级相比,生活和学习里的事情是我们自己的事情,只要安排得让我们自己满意就可以了。在工作中,事情的优先级的标准,是要让公司受益,让老板满意,让同事认可。
首先呢,我们先谈谈优先级为什么重要。

优先级的重要性

我工作中有一段时间,就经常被工作的优先级所困扰,经理也时不时地批评我:“这个事情这么重要,你怎么到现在还没开始弄?”我心里也有点憋屈:“我又没闲着,我做的事情还不都是经理安排的么?”
这里有一个很重要的字眼——重要。
优先级有很多的考量,并不是简单的先来后到的线性时间顺序,我们需要根据事情的要紧程度安排优先级。
还有一个需要考虑的因素就是程序员的工作性质。对于软件工程师来说,一个事情可以用一天的时间做完,也可以用一个星期的时间精心打磨。如何在时间有限的情况下安排自己的时间,让时间用在最值得做的事情上,就是排优先级需要考虑的内容。
给不同的工作安排优先级,不仅会让我们的工作效率更好,也可以让我们和同事之间达成良好的合作关系,为什么这么说呢?且往下看。

如何给工作排优先级

首先,我们可以从两个维度去给工作划分类型,一个维度是工作本身的性质,另一个维度从合作角度出发,然后根据这些工作的重要与否安排优先级。

基于工作性质安排优先级

基于工作本身的性质,我把工作划分为公司发展计划、安全相关的事情和生产上的事情。
每个公司都有自己的发展计划,并给这些计划划定不同的权重,以指导协调公司内有限的资源。
拿我所在的公司来说,每年公司高层都会制定当年的发展目标,然后以此为依据,制定不同的发展项目,再根据项目,一层层地将项目分解为各个部门的子项目等等。每个部门,以顶级项目的优先级为参考,安排自己的资源,以达到公司的发展目标。
我们程序员作为公司人员组织的基层员工(我习惯称为叶子结点),自然不需要操这么大的心。但是我们需要了解公司的发展方向和重点项目。一般来说,公司的发展目标和与之相关的各个项目的优先级都会对内公开,公司也鼓励所有员工都熟悉这些内容。当和这个项目相关的工作安排到自己手里的时候,一定要给予这种工作足够的优先级。
同时,这种重要的事情,最好多花点时间在上面,力争做到最好。因为这种重要的事情是拖不起的,如果因为没做好拖累整个项目的进度,可能会影响自己甚至整个组的表现(performance)。
我们再来看看安全相关的事情。
“安全无小事”这个口号在所有工程类的工作中都适用。软件开发里的安全问题虽然不会直接影响生命安全,但是它会带来很大的经济损失和商誉损失,现实中各种数据泄漏的例子不胜枚举。
我随便举个 Java 的例子。在 JDK 的早期版本中,有一个执行任意代码漏洞。Java 可以启动新的进程,执行任何命令,方式是使用 Runtime 的 exec 方法,传递一个命令的 String 数组。这个漏洞在于,它先检查了 String 数组里的命令是否允许被执行,然后再遍历数组,依次执行每条命令。而在多线程环境下,完全可能在检查完毕后,数组里的内容又被别的线程恶意更改了,改为不应该通过检查的命令。这样的话,一条本不应该通过检查的命令,就这样被执行了。
作为承担着软件开发和运维工作的现代程序员,我们首先要遵守安全部门的安全规范和检查,这就好像进入工地要戴安全帽,是没得商量的。
安全部门有时候还会发布紧急安全升级等要求。比如升级有安全隐患的 jar 包 / 组件等,这时候,我们一定要把这个当作优先级最高的任务,不要有任何的犹豫或轻视。
站在我们程序员的角度想一下,一旦出了安全问题,如果是因为自己执行不到位,这个责任肯定是要自己承担的,即使后期再怎么弥补,也无济于事。
试想一下,如果你没有配合安全部门的任务,导致一个有漏洞的 jar 包被利用,造成了数据泄漏。即使接到任务的时候你没有闲着,甚至为了完成业务开发挑灯夜战,但你觉得业务的人会为你说话,替你挡箭背锅吗?
如果你不确定,那么就换位思考一下吧。如果你是业务方,给开发提好了需求,进度也排好了,结果忽然开发组跟你说,因为做你的项目,导致我们没时间做安全升级,造成了公司损失,你要背锅。你是不是觉得这锅来得匪夷所思?
安全部门的要求就是最高的要求,是一切需求的“挡箭牌”。当一个安全部门给的任务到了你手上,告诉经理你要放下手中的工作,立刻开始执行安全任务吧。这既是为了公司,也是为了自己。
除了安全问题需要注意外,我们还要注意生产上的问题。
如果生产出了问题,那么作为 DevOps 的程序员,要第一时间放下手头的事情,冲上去搞。理清问题之后,马上开始行动。生产上的问题都是火烧眉毛。火烧眉毛的时候,你会等着别人给你送水,还是自己想尽一切办法找水呢?当然是自己找水了。如果需要别人配合,马上联系相关的人或者其经理。

基于合作安排优先级

讲完工作本身的性质,我们再来看看那些需要跟别人合作的事情,毕竟有人的地方就有沟通,如果优先级没有排好,那就很容易导致沟通不到位,出了纰漏,就很麻烦了。
在日常工作中,我们有很多任务都是经理下达的。经理往往掌握着更多的信息,也更能判断一件事情的优先级。现在一般都是敏捷开发,经理会给每个 story 排优先级。在给任务排优先级的事情上,程序员可以提建议,也可以和经理讨论,但是一定要以经理的决定为准。
还有一些经理临时安排的事情,这种事情有时候更急一些,可能也不用耗费很长时间。所以这种事情也要先做。
如果一个事情需要别的部门配合,那么优先做。比如申请资源,和自己的上游讨论需求等等。这样一方面可以让别人尽早开始工作,另一方面也可以尽早交换信息,避免日后翻车。
举个简单的例子,如果有一个需求依赖上游服务。那么在自己这边需求明确的情况下,你要尽早和上游的组通气,看自己的需求能不能做,排期是怎样的。如果自己觉得没问题,先开展自己的工作,结果上游那边无法做或者无法排期,那工作就彻底翻车了。
如果事情没有太明显的轻重缓急,那么换位思考,与人为善,优先做那些阻塞了别人工作的事情。有些事情是来自组内的,有些来自组间合作。良好的合作关系就是这样一点点打磨出来的。

做事情本身的优先级

给工作排好优先级之后,我们还要注意工作内部各项事情的优先级。工作需要拆成不同的步骤来实施,这些步骤也有优先级,其实基本道理和我们上面讲的都一样。
我举一个开发新功能的例子。开发新功能可能要申请机器,要找上游谈依赖,要开发代码,要找下游谈需求,要和上下游联调接口等等。
你看,这里有“申请机器”“找上游谈依赖”“找下游谈需求”,那么这个时候,申请机器和找上游就是应该尽早开始的。同时,接口和联调也应该尽早开始,接口具体实现的代码不需要写得那么完善,甚至 mock 一些过程也是可以的。这样一方面可以和上下游尽早落实集成的细节,另一方面也可以尽早将阶段性的成果展示给需求方,随时 review,避免最后来个大“惊喜”。
我们做事情的时候,如果能把其中的每一步都想清楚,理清依赖关系,安排得井井有条,这就已经事半功倍了。

总结

我们的工作繁杂而琐碎,今天我也仅仅是给出了一些通用的建议。在不同的工作内容,工作岗位上,可能有不同的维度。但是需要牢记的是,当你觉得自己工作手忙脚乱的时候,不妨停下来,先理理自己手头工作的优先级。怎么整理优先级呢?这里我给出一个简单的方法。首先把所有的事情列出来,然后对每件事情问自己两个问题:不做这个会怎么样?做了这个能怎么样?剩下的事情,就是顺着这个思路走下去了。
其实,给工作排优先级,不仅仅是一个提升工作效率的方法,也是提升自我和磨合团队的重要方式。
程序员的工作不只是低着头写代码,也不只是别人让干什么就干什么。给事情排优先级,是一种能够帮助把事情做对,做成,做好的重要能力。它不仅需要你对事情本身有准确的认识和判断,还需要你有清醒的思维,能够将事情分解,按照最优的顺序执行。给工作安排优先级的过程,也是锻炼自己能力的过程。
进一步说,这种能力更是一名经理的必备能力。经理的很大一部分任务就是理清事情,排列优先级,让自己的手下去做事情。程序员能控制的就是如何安排和使用自己的时间,而经理要对手下所有人的时间负责。所以经理眼前的事情更多,关系更复杂,需要做的判断也更重要,对这个能力的要求也更高出好几个层次。所以如果你有转做管理的计划,不妨在这件事情上多花点心思吧!

思考题

我在开头中提到了我刚参加工作时的窘迫,你有过我当初那种“我明明没闲着,却被经理说做事情不得力”的委屈和困惑吗?你现在走出这种困惑了吗?
欢迎你在评论区和我讨论,也欢迎把这篇文章分享给你的朋友或者同事,一起交流一下。
unpreview
© 加微信:642945106 发送“赠送”领取赠送精品课程 发数字“2”获取众筹列表。
上一篇
开篇词 | 学会如何工作,和学习技术同等重要
下一篇
02丨沟通:邮件那么重要,你还在轻视邮件吗?
 写留言

1716 143665 拼课微信(16)

  • 2020-05-19
    现在在优先级的事情上基本上能处理的比较好, 按照
    1. 先紧急后常规(安全+线上问题优先, 业务开发随后, 自发项目优化并行(看项目和优化项目的紧急度)、代码优化整理类最后);
    2. 不阻塞别人(先合作项目、再独立项目)
    3. 先约定后开发(api文档先行)
    4. 先工作量少, 流程长的(比如、资源申请这种)
    的原则,
    其实我觉得可以用一句话概述: 先把不可控变成可控.
    与人合作项目, 尽可能不让别人成为自己的阻碍, 给足别人buffer, 为了配合别人前期工作, 我们的工作甚至可以后开始, 充分完成沟通、协调、约定、再进入我们自己的开发~~~~

    感觉自己做的不好的地方是沟通, 希望学到 怎么优雅的把自己的工作给领导和小伙伴们看到? 大小事都报备肯定不合适, 可往往有一些琐碎的事、又比较浪费时间, 还不得不处理, 但是在别人看来可能是什么都没做的状态. 关于这点比较迷茫
    展开

    作者回复: 优先级部分你总结的很棒👍

    优雅的让自己做的事情让别人看到,我可以给你出个主意。

    你说到大小事都报备不合适,那么不报备显得自己什么都没做,也憋屈。你可以这样,小事也是跟大事相关的,这些琐碎的、浪费时间的事情,为什么不得不处理呢?就是因为跟这些事情相关的更高层级的事情更重要。把自己做的事情跟这些重要的事情关联起来,就显出自己做的事情的分量了。

    我随便举个例子。

    比如说是给业务增加新的API和数据表。你只是单纯的说

    “增加了一个表,添加了几个API操作表里的数据”

    这样谁看着都枯燥。也突出不了自己的做的贡献。从技术角度看,也就是CURD,没啥好说的。

    如果你在做API和数据库表的时候,多跟业务方聊两句,问问这个API是给哪个项目的,是干什么用的等等,那你报备的时候就可以这么些:

    “为公司重点项目购物车二期新增三个API,一个购物车数据表,提供了购物车二期项目中对Android和iOS应用中购物车操作的支持。”

    所以,觉得做的事情没意思的时候,就问问业务方,因为我们做的东西的意义都是业务提供的。正如你说的那样,注意沟通,沟通让你获取更多的信息,see the big picture。

    2
    10
  • 2020-05-19
    关于优先级,工作中有个疑问是:
    需求方总是拼命推动我干啥干啥,搞得一副很急的样子,但真的做好了,他们自己那块的内容就拖一直拖着也没看有什么紧急的样子,这个时候就有种被骗了的感觉哈哈哈,不爽特别不爽,很容易打消自己的积极性。
    展开

    作者回复: 如果你的客户就只有这一个需求方,我建议你给出任务的工作量估算,然后让对方给出优先级。这样就能“逼”出对方心里真正的优先级,你自己干活也更有目标性。当然,对方可能自己也没有仔细思索优先级,就只是惯性的去把事情压给你而已。这时候你这么倒逼,也可以让对方更好的思索一下事情的优先级。


    taskA,3周
    taskB,5周
    taskC,2周

    现在还有一个月,这边有俩人,也就是8个周的工作量。你自己选吧,哪个可以延期。


    当然,对方可能说不行你就加班撒……,你就说,这个已经算上加班了😁。

    10
  • 2020-05-19
    不错,好好利用下,有时候因为项目的优先级,和领导不少扯皮

    作者回复: 关于优先级的事情,和经理积极讨论是个好事情,这样可以从经理那里获得更多的信息,了解自己做的事情的前因后果,来龙去脉。自己做事情也觉得更带劲。

    决定事情的优先级是经理极为重要的权利。我的建议是,不要跟经理就事情的优先级有太多争论。

    什么意思呢?并非说不能交流,交流是很好的一个过程,也是帮助我们理解经理这种决定的过程。交流 = 沟通事实,同步信息,表达自己的意见和想法。

    交流之后,就听经理的判断,不需要再跟经理争论。因为决定事情的优先级是经理的一项重要的权利。这个权利就好像军队的指挥权一样。

    7
  • 2020-05-19
    怎么整理优先级呢?

    首先把所有的事情列出来,然后对每件事情问自己两个问题:
    1)不做这个会怎么样?
    2)做了这个能怎么样?

    剩下的事情,就是顺着这个思路走下去了,感谢老师的分享。
    展开

    作者回复: 很高兴文章对你有所帮助~

    6
  • 工作本身有一个叫排期,我们要在ddl之前完成。
    但是如果在这之间出现了影响到公司利益的东西就必须首先完成。
    可能很多时候产品会有很多的需求来给你做,跟你商量排期,但是这时候你就需要跟产品商量工作的优先级问题,先做排期很急的事情
    展开

    作者回复: 是的,加班不能解决一天就24个小时的问题,也不能解决人的精力有限的问题。事情多的时候,还是要搞清楚优先级的问题。优先级要考量的角度很多,文中我说了三个比较常见的考量纬度。

    4
  • 2020-05-20
    喜欢老师举例子来说明
    展开

    作者回复: 谢谢,这个专栏都会是这个style :-)

    2
  • 2020-05-19
    尽量做到把阶段性成果给需求方,这一点我很受启发。
    不仅能给人很靠谱感觉,还能更早的进入排除错误的环节。
    事半功倍。

    作者回复: ✅,就是这么个意思。虽然程序员有时候需要自己一个人静静,但是做出来的成果,一定要阶段性的让用户看看,这也是敏捷开发的要素。对于关键的项目,在关键阶段,一天一碰头也不过分。

    2
  • 2020-05-18
    老师今天分享的和,高效能人士的7个习惯相似。今天收获最大的,多沟通,按照经理以定方案执行。

    作者回复: 如果目标是做事,很多原则都是通用的。这个专栏的目的是对准咱们程序员的工作,聊聊里面需要注意的事情。

    按照经理的方案执行是一方面,另一方面,如果有时间,而且事情比较重要,可以跟经理聊聊为什么这些事情比较重要,这样能够收获更多的信息,在具体执行的时候,不至于刻板的按照顺序来,而是能紧紧盯住目标,但是灵活选择路线。

    2
  • 2020-05-18
    优先级确实很重要,把事情一件件列出来,先做什么后做什么,这样效率也高,不会忙得晕头转向。在没有学会这一方法之前,经常是一天压根就没停过,有时候还要加班,到了准备回家的时候,才发现根本就没做啥事,或者重要的事一件都没开始。
    展开

    作者回复: 对头,有时候重要的事情可能比较难,或者感觉没有意思,如果不想清楚优先级的事情,反而会漏掉重要的事情。

    2
  • 2020-05-18
    思考题
    1.看完霍然开朗,我觉得我一定能很快走出困惑。

    作者回复: 加油~,有什么具体的问题我们也可以在留言区交流

    2
  • 2020-05-25
    这一节的内容看完,想补充几句: 老师给的这个优先级,应该说没有错,但职场大家工作不可能完全不考虑个人利益。那我从个人利益角度出发来说几句,老师提到的线上bug和安全漏洞往往属于费力不讨好的脏活苦活,这种问题一般用不着写多少实际的代码,却很可能要和上游下游各个环节甚至跨组跨部门沟通,你耽误了大半天时间修复问题,到了晚上下班的点发现自己原本排期的开发任务却没写几行代码,这时你去跟自己的leader说呢,leader的立场往往还会是“修bug修漏洞,那是公司的要求,排好的工作量你告诉我要延期,这个可是和我个人的业绩指标挂钩的啊”,很可能反问你一个漏洞要修一天?咱们业务压力也大,加加班赶一下不行吗?而且这种安全漏洞或者线上异常,你处理无误大家觉得是应该的,你处理失误造成个新的线上bug可更是得不偿失了,大家会说你不靠谱。很多时候,leader最希望看到的是你能修复漏洞+研发排期两不误,最终造成一个苦果是自己加班了...久而久之,大厂里形成一种氛围: 漏洞来了先看责任边界,是要不是我的分内之事,宁可踢一天皮球也不能接下来这个活儿。 不知老师怎么看?
    展开

    作者回复: “漏洞来了先看责任边界,是要不是我的分内之事,宁可踢一天皮球也不能接下来这个活儿。 ”

    我觉得这个没问题……不是自己的事情,本来就不应该自己做,否则做也做不好。皮球能踢出去,也得有理有据。

    自己的事情自己做,就好像去超市买东西要付钱一样,天经地义,没得商量。该付多少钱付多少钱。

    不是自己的事情,要自己做,那就像是慈善。就好像你看到路边有人淋雨,想买把雨伞送给ta。你去超市一看,一把雨伞10几块钱,买了就送了,就好像在不影响自己工作的情况下帮忙搞定一个事情。

    如果你去超市一看,我去,一把雨伞好几百,算了算了不送了。悄咪咪的从超市出来就走了,没人能说你什么。

    回头再想想,不是自己的事情,是不是就不应该自己做。如果自己需要一把伞,去超市买,再多再少的钱,心里也没啥好抱怨的。但是如果有人逼你买把伞送给别人,十几块钱可能还好,如果好几百块,你会心平气和的掏出来吗(保质保量的完成工作)?你可能会去路边买个十几块的(工作质量不保证),或者去pdd上买个几块的(不仅仅工作质量不能保证,还拖沓)。

    还有一种情况,就是一种“吃亏是福”的心态。偶尔做一次这种事情,没意思,也没法说自己的贡献。但是如果一个人能“豁的出去”,主动承担组里所有相关的事情,这对这个人来说,也是树立了一种人设,打造了自己的一个招牌:安全升级我来搞定。当然,就像你说的,加班可能是难免的,但是这种方式,就是主动承担起更多的责任,会赢得应多人的喜欢。做的熟了,慢慢用的时间也会减少。有收获,肯定要有付出。当然,如果组里的人都把这种行为当“冤大头”,作出的这种贡献上到经理下到组员都不以为然,那就算了。

    毕竟,最终还是看利益,只是长远利益和短期利益,直接利益还是间接利益而已。

    2
    1
  • 2020-05-19
    在工作中,事情的优先级的判断标准是让公司收益,老板满意,同事认可

    作者回复: 嗯呐,嗯呐。

    1
  • 2020-05-24
    对于和经理讨论优先级的事情上,没有必要和老板过多争论,但是可以去询问背景和原因,就像文中说那样。事情充分沟通,过程坚决执行。
    展开

    作者回复: ✅✅,搞清事实,说出想法,坚决执行

  • 2020-05-23
    学校毕业刚开始工作的前三个月,我在优先级上面做得不好,经常像没头苍蝇一样乱忙,也被老板指出过。

    现在解决优先级排序主要靠多和老板沟通:
    1. 每次Sprint Planning Meeting快结束时,都会向老板报告我认为的新Sprint的工作优先级,让老板核对。如果我和老板意见不统一,一般会各自阐述观点与原因,直到达成一致。
    2. 如果在Sprint中遇到任何变化,一定会及时和老板汇报,一起作出相应调整。
    展开

    作者回复: 我建议慢慢熟悉老板的style,这样就可以更自主的工作了,而且在事情有变化的时候,也更能轻松自如的随机应变。

  • 2020-05-21
    对学生好像没得太大的帮助,毕竟还没有入职,老师可以讲讲在平常的工作和学习中,应该如何定义优先级以及如何分配时间,遇到优先级一样的该怎么办呢
    展开

    作者回复: 学生太爽辣,只要不挂科,兴趣就是自己的优先级啦,对啥有兴趣就干啥

    2
  • 2020-05-20
    老师开新课啦,特意谢谢老师。自己工作了4年,在老师一次直播上,听到老师说:你真的对这段代码执行的原理一点都不感兴趣么?我如雷贯耳,想起自己刚刚毕业时希望一口气吃掉公司核心库的源码,现在却在这个目标上越走越远,自己目前开始了 ZooKeeper 的源码阅读,目标是借一个项目,理解 存储中间件 的特性,坚持了一个多月了,过程获益匪浅,回想起这段时间的坚持和努力,都缘起老师的直播的一句话,特意感谢!

    回到问题,我自己非常幸运,并没有这种委屈和困惑。原因有两点:
    1、团队和项目都不大,而且迭代速度很快,什么重要什么不重要都比较清晰;
    2、我自己会去尝试理解项目里每一个同学手上的工作,清楚他们在干什么,需要什么,因此不但清楚自己手上最重要做的是什么,一般还知道他们优先会做什么,假如可以,还会用技术手段,告知他们有更快地完成工作的自动化技术方法;

    总结来说,工作一定不能埋头自己干,理解、协作、配合、反应比较适合互联网公司工作节奏,就像打篮球,要命中目标,必须全身协调才行
    展开

    作者回复: 给你手动点赞👍

    这就是磨合的好的团队的战斗力。你这个团队很棒棒哦