最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHubgit
咱们在平常工做中,总会这样感慨:事情,是干不完的。既然干不完,那咱们就要分清轻重缓急,哪一个重要,哪一个不重要,给它们划分一个优先级,这样不至于让本身手忙脚乱。程序员
能给手头的事情排上正确的优先级,是一项很重要的工做能力。github
固然,咱们在生活和学习中,事情也可能很多。可是和工做中的优先级相比,生活和学习里的事情是咱们本身的事情,只要安排得让咱们本身满意就能够了。在工做中,事情的优先级的标准,是要让公司受益,让老板满意,让同事承认。面试
首先呢,咱们先谈谈优先级为何重要。数组
我工做中有一段时间,就常常被工做的优先级所困扰,经理也时不时地批评我:“这个事情这么重要,你怎么到如今还没开始弄?”我内心也有点憋屈:“我又没闲着,我作的事情还不都是经理安排的么?”安全
这里有一个很重要的字眼——重要。多线程
优先级有不少的考量,并非简单的先来后到的线性时间顺序,咱们须要根据事情的要紧程度安排优先级。运维
还有一个须要考虑的因素就是程序员的工做性质。对于软件工程师来讲,一个事情能够用一天的时间作完,也能够用一个星期的时间精心打磨。如何在时间有限的状况下安排本身的时间,让时间用在最值得作的事情上,就是排优先级须要考虑的内容。ide
给不一样的工做安排优先级,不只会让咱们的工做效率更好,也可让咱们和同事之间达成良好的合做关系,为何这么说呢?且往下看。学习
首先,咱们能够从两个维度去给工做划分类型,一个维度是工做自己的性质,另外一个维度从合做角度出发,而后根据这些工做的重要与否安排优先级。
基于工做自己的性质,我把工做划分为公司发展计划、安全相关的事情和生产上的事情。
每一个公司都有本身的发展计划,并给这些计划划定不一样的权重,以指导协调公司内有限的资源。
拿我所在的公司来讲,每一年公司高层都会制定当年的发展目标,而后以此为依据,制定不一样的发展项目,再根据项目,一层层地将项目分解为各个部门的子项目等等。每一个部门,以顶级项目的优先级为参考,安排本身的资源,以达到公司的发展目标。
咱们程序员做为公司人员组织的基层员工(我习惯称为叶子结点),天然不须要操这么大的心。可是咱们须要了解公司的发展方向和重点项目。通常来讲,公司的发展目标和与之相关的各个项目的优先级都会对内公开,公司也鼓励全部员工都熟悉这些内容。当和这个项目相关的工做安排到本身手里的时候,必定要给予这种工做足够的优先级。
同时,这种重要的事情,最好多花点时间在上面,力争作到最好。由于这种重要的事情是拖不起的,若是由于没作好拖累整个项目的进度,可能会影响本身甚至整个组的表现(performance)。
咱们再来看看安全相关的事情。
“安全无小事”这个口号在全部工程类的工做中都适用。软件开发里的安全问题虽然不会直接影响生命安全,可是它会带来很大的经济损失和商誉损失,现实中各类数据泄漏的例子不胜枚举。
我随便举个 Java 的例子。在 JDK 的早期版本中,有一个执行任意代码漏洞。Java 能够启动新的进程,执行任何命令,方式是使用 Runtime 的 exec 方法,传递一个命令的 String数组。这个漏洞在于,它先检查了 String 数组里的命令是否容许被执行,而后再遍历数组,依次执行每条命令。而在多线程环境下,彻底可能在检查完毕后,数组里的内容又被别的线程恶意更改了,改成不该该经过检查的命令。这样的话,一条本不该该经过检查的命令,就这样被执行了。
做为承担着软件开发和运维工做的现代程序员,咱们首先要遵照安所有门的安全规范和检查,这就好像进入工地要戴安全帽,是没得商量的。
安所有门有时候还会发布紧急安全升级等要求。好比升级有安全隐患的 jar 包 / 组件等,这时候,咱们必定要把这个看成优先级最高的任务,不要有任何的犹豫或轻视。
站在咱们程序员的角度想一下,一旦出了安全问题,若是是由于本身执行不到位,这个责任确定是要本身承担的,即便后期再怎么弥补,也无济于事。
试想一下,若是你没有配合安所有门的任务,致使一个有漏洞的 jar 包被利用,形成了数据泄漏。即便接到任务的时候你没有闲着,甚至为了完成业务开发挑灯夜战,但你以为业务的人会为你说话,替你挡箭背锅吗?
若是你不肯定,那么就换位思考一下吧。若是你是业务方,给开发提好了需求,进度也排好了,结果突然开发组跟你说,由于作你的项目,致使咱们没时间作安全升级,形成了公司损失,你要背锅。你是否是以为这锅来得匪夷所思?
安所有门的要求就是最高的要求,是一切需求的“挡箭牌”。当一个安所有门给的任务到了你手上,告诉经理你要放下手中的工做,马上开始执行安全任务吧。这既是为了公司,也是为了本身。
除了安全问题须要注意外,咱们还要注意生产上的问题。
若是生产出了问题,那么做为 DevOps 的程序员,要第一时间放下手头的事情,冲上去搞。理清问题以后,立刻开始行动。生产上的问题都是迫不及待。迫不及待的时候,你会等着别人给你送水,仍是本身想尽一切办法找水呢?固然是本身找水了。若是须要别人配合,
立刻联系相关的人或者其经理。
讲完工做自己的性质,咱们再来看看那些须要跟别人合做的事情,毕竟有人的地方就有沟通,若是优先级没有排好,那就很容易致使沟通不到位,出了纰漏,就很麻烦了。
在平常工做中,咱们有不少任务都是经理下达的。经理每每掌握着更多的信息,也更能判断一件事情的优先级。如今通常都是敏捷开发,经理会给每一个 story 排优先级。在给任务排优先级的事情上,程序员能够提建议,也能够和经理讨论,可是必定要以经理的决定为准。
还有一些经理临时安排的事情,这种事情有时候更急一些,可能也不用耗费很长时间。因此这种事情也要先作。
若是一个事情须要别的部门配合,那么优先作。好比申请资源,和本身的上游讨论需求等等。这样一方面可让别人尽早开始工做,另外一方面也能够尽早交换信息,避免往后翻车。
举个简单的例子,若是有一个需求依赖上游服务。那么在本身这边需求明确的状况下,你要尽早和上游的组通气,看本身的需求能不能作,排期是怎样的。若是本身以为没问题,先开展本身的工做,结果上游那边没法作或者没法排期,那工做就完全翻车了。
若是事情没有太明显的轻重缓急,那么换位思考,与人为善,优先作那些阻塞了别人工做的事情。有些事情是来自组内的,有些来自组间合做。良好的合做关系就是这样一点点打磨出来的。
给工做排好优先级以后,咱们还要注意工做内部各项事情的优先级。工做须要拆成不一样的步骤来实施,这些步骤也有优先级,其实基本道理和咱们上面讲的都同样。
我举一个开发新功能的例子。开发新功能可能要申请机器,要找上游谈依赖,要开发代码,要找下游谈需求,要和上下游联调接口等等。
你看,这里有“申请机器”“找上游谈依赖”“找下游谈需求”,那么这个时候,申请机器和找上游就是应该尽早开始的。同时,接口和联调也应该尽早开始,接口具体实现的代码不须要写得那么完善,甚至 mock 一些过程也是能够的。这样一方面能够和上下游尽早落实集成的细节,另外一方面也能够尽早将阶段性的成果展现给需求方,随时 review,避免最后来个大“惊喜”。
咱们作事情的时候,若是能把其中的每一步都想清楚,理清依赖关系,安排得层次分明,这就已经事半功倍了。
咱们的工做繁杂而琐碎,今天我也仅仅是给出了一些通用的建议。在不一样的工做内容,工做岗位上,可能有不一样的维度。可是须要牢记的是,当你以为本身工做手忙脚乱的时候,不妨停下来,先理理本身手头工做的优先级。怎么整理优先级呢?这里我给出一个简单的方法。首先把全部的事情列出来,而后对每件事情问本身两个问题:不作这个会怎么样?作了这个能怎么样?剩下的事情,就是顺着这个思路走下去了。
其实,给工做排优先级,不只仅是一个提高工做效率的方法,也是提高自我和磨合团队的重要方式。
程序员的工做不仅是低着头写代码,也不仅是别人让干什么就干什么。给事情排优先级,是一种可以帮助把事情作对,作成,作好的重要能力。它不只须要你对事情自己有准确的认识和判断,还须要你有清醒的思惟,可以将事情分解,按照最优的顺序执行。给工做安排优先级的过程,也是锻炼本身能力的过程。
进一步说,这种能力更是一名经理的必备能力。经理的很大一部分任务就是理清事情,排列优先级,让本身的手下去作事情。程序员能控制的就是如何安排和使用本身的时间,而经理要对手下全部人的时间负责。因此经理眼前的事情更多,关系更复杂,须要作的判断也更重要,对这个能力的要求也更高出好几个层次。因此若是你有转作管理的计划,不妨在这件事情上多花点心思吧!