转-- 好程序员的十大习惯之三 透过现象看本质,抓住最重要的事情
?
这段时间因为年底,忙了一点,但看到大家对十大习惯系列非常期待,所以我无论再晚,也得有时间来写。
这次说的习惯,是一个思维习惯。我说过,我这个习惯系列,不是随便拿出一些生活中的习惯来告诉大家。每一个习惯都有非常深刻的意义。
如果你看过《现在,发现你的优势》你就知道,很多人都有某些相对强烈的思维模式。这种思维模式,就可以称之为才干。它会向漏斗一样,过滤掉你的思维模式关注的问题,而忽略掉他不关注的。
比如我们程序员经常遇到的情况就是,业务人员讲解需求的时候,你可能只关注了接口的部分,对于他们讲解他们的业务如何如何,根本没有在意。这就是一种思维模式。
这种思维模式非常强烈的影响着我们的一举一动。任何一种思维模式,如果我们发挥到极致,都是非常棒的。不过那样的话,你可能需要更换你所从事的工作。
言归正传,在程序员工作过程中,什么习惯还是非常重要的呢?我们回顾一下,第一个讲的是积极主动,第二个讲的是胸有成竹。一个讲的态度,一个讲的全局,那么下面的习惯就是如何把握进程。如何才能在编程的过程中,始终保持主动呢?
我们面对很多任务,每天要写很多代码,还有可能旧的代码要修改?BUG,新的代码要去听需求。还有可能还会雪上加霜的突然来一个临时任务,压得你喘不过气来。面对这么多事情,你如何才能应对自如呢?如何才能对进度做到心中有数呢?
这又是一个时间管理的问题。不过这个时间管理比起之前定目标复杂多了。人们在工作过程中,越来越发现,单纯地制定一个目标清单,并不能应对复杂的局面。于是时间管理理论就演变了四代。
第一代基本就是清单法,就是上一个习惯讲到的那种方式。每天列一个计划,第二天按照清单执行。第二代基本可以叫风险驱动法。即能够未雨绸缪,将一些可能发生的事情,列到计划中,第三代基本可以叫四象限法(即将事情按照重要性、和紧急性进行排序)。但是往往被第一、三象限的事情(即紧急且重要的,不重要不紧急)折磨得不行。第四代我取了一个名字叫规划驱动法。即在第三代基础上,使用长期规划,来确定四象限中的事情的优先级。
时间管理
优点
缺点
清单驱动
方法简单,目标明确
负责情况难以应对
风险驱动
增强风险管理
还是没有优先级
四象限法
优先级明确
琐事占用时间过长
规划驱动
原则优先
相对复杂一点
?
我们在实际工作中,如何才能利用时间管理,做好我们的工作呢。我推荐的是使用第四种时间管理方式,规划驱动的时间管理模式。
首先建立全局的观念。我们最后要的是什么?在此基础上,我们可以对自己做一个非常简单的暗示,什么任务是作重要的!
对于接下来的任务,对于一些简单的事情,要学会说“不”。对于复杂的事情,关键在于抓住事情的核心。这样的好处在于,一旦发生时间冲突,你就可以知道各个项目的取舍点在什么地方。
关于如何才能抓住事情的核心呢?这个倒难不倒我们程序员。程序员往往天生就有抽象的能力。因为面向对象特征之一就是抽象。但要抽象好,却也不那么容易。有些人就会抽象不到位,结果只是抽象在表面,或者没抓对根本。
我这里谈一个例子,大家理解一下。对于一个企业来讲,什么是最重要的?有人说,财务最重要。从财务可以看出整个企业的运作情况,有什么成本中心,利润中心。有人说,人力最重要,从人力可以看出企业的潜力、发展。但被大家普遍认可的,确实项目最重要。一个企业每年都是围绕很多专项工作在做的。财务和人都是被这个骨架串起来的。所以很多公司每年规划的不是花多少钱,也不是招聘多少人,而是要做多少事,为什么要做。
我总结了就是这样的,在我们进行业务抽象的时候,静态的实体对象,往往只是被串起来的个体,我们真正应该关心的是那些动态发生,且经常发生的流程。这就是最主要的业务场景。一旦抓住主要业务场景,这个系统的核心你就抓住了。
接下来,你最重要的事情,就是实现这个主要业务场景。如果选择迭代的话,完全可以先实现这个场景的基础部分,其余边缘部分,都是在这基础上慢慢丰富起来。所谓的Run?It?First?也是基于这个道理来说的。一旦骨架好了,你就可以和业务人员商量下一阶段的构想了。
当时间冲突的时候,舍弃的一定是那些不在主要业务场景上的功能。而对这个主要业务流程的把控,会让你越发能够明确自己的工作目标和进度。
?