重复是降低工作效率的→工作分解必须是正交的,并且时序合理,符合因果关系→项目的资源是有限的,必须合适的人做合适的事情→为达成这一目的,项目管理者必须既理解所做的事,也理解相关的人员特性→为避免遗忘,使经验转化为价值,普适于多个项目的、特定的因果关系和时序需要被提取出来并强制实行,最终形成流程。
事实上,很多人心中的项目管理所涉及的内容都和这条逻辑链相关,比如:
●任务的分解和分配。
●变更的统计,跟踪和分析。
●缺陷的统计,跟踪和分析。
●时间偏差的统计和分析。
●投入人月的统计和偏差分析。
●代码质量的跟踪。
●配置管理规则的实施,跟踪和分析。
●……
在去除人的因素之后,所有这些任务的主要目的都是为了保证任务的分解和分配是正交的,同时在时序上符合因果关系。正交是指相同的工作没有以任何不同的形式做两次。比如,统计人月分布时,不需要以周为单位统计一次,再以月为单位统计一次。符合因果关系是指互成因果的两项工作没有错漏倒置等。
常见的与因果相关的矛盾有如下一些。
●期望一个人工作效率高,但却让人同时处理多份工作。每个人每天只有8小时,如果他切换8个工作场景,那等于至少被打断8次,所以这类分配方法是降低效率的。
●期望推进进度,但工作负荷在时间轴上却相对不平均,忙的时候极忙,而闲的时候极闲。这类矛盾会导致先是很赶,写了许多质量不高的代码,结果欲速则不达,接下来又在清理不良代码上花费更多的时间。比如,10个人月可以完成的项目,却花了15个人月。
●期望保证每个人工作的时候有明显的焦点,但却无法放弃可做可不做的事情。项目中的工作有变繁复的潜在趋势,不管是输出的文档、会议次数和议题,还是流程的步骤。需要增加的东西,必然是有一定合理性的。但工作变繁杂的同时,必然也就意味着集中在某一项工作上的时间需要被摊薄。最终在不知不觉中反倒对项目自身造成伤害。这个时候,一个关键的事情是挑出那些不可不做的事情,把它们排到关键路径上,确保它们的资源,给予它们最大的关注度,同时尽可能放弃那些可做可不做的事情。
●忽视历史数据。比如,历史数据显示编码的速度大概在100SLOC/人天。估计为10000SLOC的程序,却只保留了20人天的工作量。
●知道潜在有风险,却不在早期安排分析和应对。比如,开发C++的程序却不安排内存泄露和写超界的检查。
违背上述基本要求的组织行为即是错误的组织行为,会浪费人力和时间。(www.xing528.com)
总结来看,避免错误的组织行为事实上有3个根本措施,那就是参照历史,分配合适的人去做合适的事情,构建信息回路。
●参照历史是指,要对支撑规划的数据进行定义,并持续收集,持续使用。对大多软件项目而言,必须收集的数据大致有:规模、生产率、编码速度、各阶段的工作量比率、各阶段的开发时间的比率、缺陷率等。这些数据不能成为孤立的数据,其对应的项目的特征,数据自身的计算方法都需要被明确定义。然后把这些数据应用到接下来的规划中。
●分配合适的人去做合适的事情是指,人员特征与工作相吻合。如果对人的个性进行细分,就会发现有的人擅长沟通但不擅长技术;有的人擅长技术但性格比较软弱,容易人云亦云;有的人不聪明但足够执着;有的人能力不强但足够细致;有的人脑子灵活但很粗心等。运作项目时需要避免两种危险的假设:第一是不能假设团队成员都很完美;第二不能假设团队成员可以改变。这两个假设,前者幼稚,后者癫狂,一旦在这样的前提下运作项目,那么项目几乎是一定失败的。这个时候为避免内耗,首要要知人善用,用人所长,避其所短。而达成人员分配合理这一目的,并无捷径,它要求分配任务的人,不仅需要了解人员的特质,也需要了解工作的特质。从这个视角看,管理者是一定要懂技术的。
●构建信息回路是指,做某事的人(一个或多个),要能收到关于某事的反馈信息。在这一原则下,任何事情可以被分解为5个基本步骤:计划(P),实施(D),检查(C),分析(A),改进(I)。
这看似简单,但这是“流水不腐,户枢不蠹”的真意,而回路断裂,则是很多问题的根源(没执行力等)。
比如,修一条公路时。有的单位规划和招标,有的单位施工,开车的体验。结果路坏了,没人真正分析,只是接下来继续修,结果必然是路总也修不好。
通过回路存在与否可以大致判断组织的成熟程度。
比如,有的组织中,项目一个接着一个从来不做总结,那么这个项目组所在的组织一定是不成熟的。
再比如,一个人,总是不停地看书,写程序,却从不停下来思考,那么这种学习方法是不成熟的。
当某些组织行为具有共性时,通常它们需要被固化下来,来避免任务的不正交和因果上的混乱,最后这会形成流程。在第三部分中会对流程进行专门的解构,这里不再展开。
冲虚道长与令狐冲
在金庸先生的《笑傲江湖》中,令狐冲为了去少林寺搭救盈盈,必须与武当的冲虚道长一战。
冲虚道长的太极剑法高妙无比,每一剑挥出,就是一个弧形光圈,战到最后,所幻光圈越来越多,冲虚道长自身则隐在光圈之内。这让冠绝天下的独孤九剑几无用武之地。虽然后来令狐冲行险取胜,但对太极剑法的精妙亦是拜服。
上文提到的计划(P),实施(D),检查(C),分析(A),改进(I),很像太极剑法里的弧形光圈。独孤九剑是用来培养绝世高手的,可遇而不可求;而太极剑法则是兴堂堂之师,击煌煌之阵,是奇正相合中的正。
PDCAI事实上可以用在项目中的各个地方。用在项目管理中,那可以表现为计划、实施、检查、总结和ActionItem;用在程序开发中,则可以表现为设计,编码,编译,调试,修正。在《大规模C++程序设计》一书中,作者提到了典型的环连接得不好的情形:大规模项目编译速度可能变得很慢,这导致项目推进困难。而编译速度慢实质上断开了实施(D)和检查(C)间的连接。
但这似乎太简单了,以至于很多人都以为自己早已了解了,并毫不重视。老子曾讲:上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。这倒是契合很多情境。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。