将笔记本电脑装到背包里,是我天天重复的动作。偶尔有2次遗漏了电源,到客户现场后必须借一个同样型号的电源才可以工作,很是麻烦。但是我从来没有只装了电源而没有装电脑,因为如果忘记了装电脑,当背起包的时候,会明显觉察到重量的变化,所以犯这种错误的概率基本为零。为了避免漏装电源,我想到了规范电脑装包的动作。如果按照规范的过程定义方法,可以这样定义过程:
(1) 电脑关机或休眠;
(2) 拔下电源线;
(3) 整理好电源线;
(4) 电源线装到背包的外面口袋中;
(5) 电脑装到背包的内部保护袋中;
(6) 如果有其他书籍或笔记本需要装包,则装入包中;
(7) 拉上拉链,完成装包过程。
采用这种方式定义的过程,忽略一个基本的现实,即:我是一个有智商的成年人!其实我知道如何装包,只是有时在急于出门或者心有所思的情况下,忘记了装电源而已,我定义过程的目的也是为了规避这个错误。如果这么简单的一个动作需要写这样的一个过程,对我而言其实是一个负担。假如我要告诉我的其他同事如何电脑装包,我需要告诉他这七个步骤,他未必能记住这个流程,或者他根本就不想去记住这个流程,在他而言,他可能认为这是常识,他也未必能够体会到这个过程定义背后的道理。其实在这个流程定义中,隐含了这么一个原则:先装电源,再装电脑!
如果采用敏捷的过程定义方法,其实不是去定义过程,而是定义原则,即只要写一个原则:“先装电源,再装电脑”即可,其他的活动可以由执行者自己去把握如何处理。如果去教育其他同事时只要告诉他这个原则即可,难道他会忘记装电脑吗?
在CMMI模型中,2级的GP2.1要求定义每个过程的方针(policy),上例中“先装电源,再装电脑”即为方针,在3级中OPD过程域要求建立组织级的标准过程定义(OSSP),方针是先于OSSP建立的,方针的重要性超过OSSP,要先定方针再定OSSP!