作者:中华软协品质委员会陈皆成咨询委员 不论是美国军用规范(如DOD-STD-2167A、MIL-STD-498)、商用规范(如IEEE/EIA 12207)、ISO 9000-3,或是SW-CMM/CMMI(能力成熟度模式),都是期望能建立一个健全的、制度化的「软体发展过程」(Software Development Process)(以下简称为「软体发展制度」)。 而「软体发展制度」的建立,主要是针对软体发展单位,建立其工作所需的正式书面作业常规(例如:「作业程序书」、「工作指导书」…等等)。 这些都只注重在「工程管理」的层面,至于如何与单位内部的「人事制度」相结合,则未提及。 根据笔者以前实际参与「工业局软体产业服务团」的专案访查及专案辅导的经验,接触到一些有意建立「软体发展制度」的公司,发现「软体发展制度」的建立,如果能够与公司内部的「人事制度」相结合,其成功率较高。 本文将探讨说明,倘若「软体发展制度」不与「人事制度」结合的状况下,将会衍生的哪些问题,并探讨两者之间应该如何结合。 一、品质与制度 从过去「软体危机」(Software Crisis)所显现的各种问题,可以发现: (1)软体产品常常品质不佳,在交货安装之后仍有许多错误,必须不断的进行后续维护与改版。 (2)软体通常欠缺完整的说明文件(包括规划文件、需求文件、设计文件、测试文件、运作及支援文件...等),徒增软体后续维护的困难度。 (3)软体的「可维护度」非常低,在进行后续维护与改版时,将会耗费许多成本。 这些问题层出不穷,而「软体工程」(Software Engineering)被提出,也就是在试图解决这些问题。 一个高品质的软体,并不单只是「性能佳」(High Performance)而已,尚须具备其他的品质特性,例如:良好的「可维护性」、「可扩充性」、「可靠性」…等等。 而要达到这些特性,则必须有赖于「团队合作、健全的制度」方能达成。 特别是在一个大型的专案、生命周期较长的系统中,通常不是依靠一、两位「程式高手」(Super Programmer)就可胜任的。 因为,在一个大型的专案中,必须依靠多人的共同合作方能完成产品;而在生命周期较长的系统中,由于工作人员的可能流动(离职/调职),此时必须依靠一个健全的「软体发展制度」,方能持续维持各项品质要求。 所以,「软体发展制度」的健全与否,将会深切的影响顾客对于软体发展者的品质信心程度。 西元1991年,美国空军总部通知软体承包商「所有参加竞标空军软体系统的软体发展公司,皆必须证明其具有CMM第三阶层的成熟度」便是这个道理。 二、软体发展制度推动的阻力 既然健全的「软体发展制度」如此重要,很多公司便开始试图去推动建立,并申请ISO 9001或CMMI认证,以便提升公司形象、提高产品的竞争力、让产品得以进入国际市场…。 但是在建立「软体发展制度」过程中,常会遭遇基层工作人员的排斥与反弹,以至于有某些公司在试图推动之后,结果失败,或不了了之。 基层工作人员为什么会对「软体发展制度」反弹与排斥? 大致上,可以归纳出下列几种原因: ‧顾饭碗,占地为王,各据一方。 ‧坚持自己的习惯。 ‧担心工作量增加。 (多一事,不如少一事)分述如下: (一)顾饭碗,占地为王,各据一方 有些人为了巩固自己的饭碗,便会有「占地为王,各据一方」的状况发生,加强自己的「独特性」(不可取代性),让某个专业技术领域「非我莫属」 。 而且,相关的资料(重要的技术知识)皆不与他人分享,将研发成果视为是自己的私人财产或护身符。 此时,便会创造出所谓「国宝级」的人物,因为他在公司内部的某个特定专业技术领域里极具「独特性」(不可取代性),你不可能把他裁员掉,如果他一旦离职(或调职),整个专案计画就可能面临停摆。 当「国宝级」人物一旦离职(或调职)后,即使再引进新人,重新训练,一直到能上线接手工作,可能要耗费数个月,甚至更久。 即使新人勉强接手上线工作,也可能是错误连连、问题重重。 「软体工程」(Software Engineering)观念的提出,便是希望将软体发展予以「工程化」──即透过「标准化」、「文件化」、「建立作业常规」…等等──以便降低软体工程师的个人独特性,以便软体产品容易进行后续维护。 有许多软体工程的常见作为,例如:订定统一的程式风格;订定统一的文件格式规定;采行标准化(一致性)的分析、设计方法;…等等,都是这样的目的。 由「软体工程」的观念中,我们可以发现,其目的便是要降低个人的独特性,让每一个人都成为「小螺丝钉」(随时可被撤换),而不是变成「国宝级人物」(无法被取代)。 在一个追求「个人成功」的组织里,所强调是「成功操之在我」,这是「个人英雄主义」;然而在一个追求「团队成功」的组织里,所强调的则是「成功不必在我」,这是「螺丝钉主义」。 前行政院长郝柏村先生,在离开行政院长职务时,曾说过一句名言:「世界上并没有哪一个职位是『非我不可』的!」。 ──这便是「螺丝钉主义」的极致体现。 大家应可理解CMM Level 1的组织,是仅依靠一、两位「程式高手」(Super Programmer),以一当十,展现个人英雄主义来达成任务。 然而,当这一、两位「程式高手」离职后,软体专案将面临无人可接手的窘境。 当组织达到CMM Level 3以后,才真正达到工程化、标准化、一致性。 此时,软体的开发才不受人员流动的影响,任何人都可以随时离职,工作照样可以持续进行。 所以「软体工程」观念的推动,也是属于「螺丝钉主义」。 这当然是对出资的老板大有好处的,他不用担心因为关键员工的离职,以致使得工作无法继续进行,而造成血本无归。 然而,对劳方(员工)而言,其存在的价值何在? 是不是每一个人都将面临随时被裁员的命运? 对于年轻人而言,每一个人都在追求「自我存在的价值」,期望得到肯定与认同…。 这两者之间,应该如何取得平衡? 这可能是推动「软体工程」观念的人,必须去思考的。 为了解决「占地为王,各据一方」的现象,以下列出一些常见的「解决之道」: 1.专业领域应受肯定与尊重 在各个工作岗位上,每个人都有其重要性及贡献,因此每一个人都应该受到应有的肯定与尊重。 让每一个人都获得其应有的「价值感」。 以下介绍几个真实案例(以软体测试人员为例): (1)案例一: 笔者在参与辅导某电脑公司申请ISO 9001认证的过程中,曾经实际观察到一个事件(现象)。 如下: 该公司原本有一专业的测试部门。 公司的所有产品(软体或硬体),皆必须经过此一部门的测试通过,才可以出货上市。 在公司内部,这是一个极为重要的部门,非常受到公司最高主管的重视。 此一部门的主管,曾经自豪的表示,该部门员工的年流动率,低于5%。 不过,后来在其它各部门的要求下,将此一专业的测试部门解散,所有的测试人员皆被打散、分配到各部门继续执行测试工作(职务、工作内容不变)。 后来,这些「测试人员」的年流动率,便不再低于5%,很多人陆续离职求去。 原因如下: 原本,当这些「测试人员」都在同一部门时,由于部门的重要性,让每一个人皆有「价值感」。 而且受到公平的对待,不论考绩、奖励、升迁…,皆有一致的标准。 然而,当这些「测试人员」被打散到各部门之后。 有些部门的主管,并不重视「测试人员」,这些主管认为,负责设计、研发的人员(例如程式师)才是「主角」,而这些「测试人员」只不过是「配角」而已。 因此,这些「测试人员」在各部门中,便受到不公平的对待,不论考绩、奖励、升迁…,皆是殿后。 在一个不受重视的环境中,被视为「配角」、「二等员工」,如此一来,谁还会卖命工作? 谁还能待得长久? (2)案例二: 笔者过去参与执行「工业局软体产业服务团」专案访查时,曾经有一家受访公司的总经理,当笔者问及该公司的软体产品是否有专职的测试人员时,该公司的总经理指着「柜台总机小姐」说,她就是该公司的「软体测试人员」…。 笔者发现该公司的测试过程,并未依据软体规格,也未拟订测试个案,纯粹只是进行「猴子测试」(Monkey Test)而已。 (※注:所谓「猴子测试」意指毫无章法的胡乱测试。) 该公司之所以未聘请「专业的软体测试人员」,是因为总经理并不认为软体测试是一项「专业技术」,所以软体产品的测试工作就交给一位未受过任何专业训练的「外行人」来进行。 (3)案例三: 笔者今年在软体品质工程师培训课程的某个「企业包班」授课时,曾经在介绍前述两项案例之后,说明软体测试人员的困境: ●当公司的软体产品品质很好时,公司的老板会认为:这是程式师的程式写得好。 ●当公司的软体产品品质不佳时,公司的老板会认为:测试人员未尽责(软体有错误,却未测出。未能善尽品质把关之责)。 ●软体测试人员的处境是:「有功无赏,有过则担。」─而且:「打考绩时,被排在后面;公司裁员时,则被排在前面。」 在授课完毕之后(下课后),有几位该公司的软体测试人员,很感慨的向笔者表示:「老师,您真是说出了我们的心声!」。 由此可见,在台湾的环境,「软体测试人员」似乎并没有受到应有的重视与尊重。 所以很多人不愿意担任「软体测试人员」,因为这只是「配角」──公司裁员时,会被优先考量。 很多人宁愿担任「程式师」,因为这才是「主角」──可以巩固地盘,还可以「拿翘」。 在软体专案的各种角色里,所谓「主角」与「配角」的区分,大致如下: ●主角:专案经理、系统分析师、系统设计师、软体程式师。 ●配角:软体品保工程师、软体测试工程师、软体型管工程师、文件资料管理人员。 在台湾的企业文化里,这些「配角」通常是不受重视的,而且处境通常都是「有功无赏,有过则担」。 2.改善人事体制,保障工作权 在一个随时会面临裁员的单位里,单位的前途未卜,员工充满着不确定感,人心惶惶,人人自危。 在这种情况下,为了生存竞争,当然要想尽办法巩固自己的地位,将自己塑造成「国宝级人物」,建立无可取代的地位。 员工会有此种心态:「如果我的工作,有人可以取代,那我的饭碗岂不是随时都会不保?」在这种情形下,要建立工程化、标准化、一致性的「软体发展制度」 ,大家当然不会愿意配合。 所以,必须先改善人事体制,保障工作权,让员工感觉有安定感,如此,在推动「软体发展制度」时,员工自会乐意配合。 有些公司为了推动知识管理(知识分享),会将知识分享列入人事考核,这也是很好的做法。 3.壮士断腕(可能会有不良后果) 有些公司在推动无效的时候,最后会采取断然措施,开始排除阻力。 将那些不愿意配合公司政策的员工,一律开除。 这或许也是一种解决方式,然而却可能是「玉石俱焚」的做法。 一旦劳资双方形成对立,处处产生猜忌,未来推动任何事情,都将是困难重重。 4.引进新人,重新开始 有些公司实施新制度,是针对新人来实施。 特别是引进刚从学校毕业的人,这些人如「白纸」一般,较无成见,可塑性大,容易调教,所以很容易遵循公司所颁布的各项规定。 如果是一些已经有三、四年以上的工作经验者(或资深人员),或是一些学历较高者(例如:硕士以上的人员),或是一些优秀学府毕业者(例如:台清交),这些人通常成见较深,比较会坚持己见、自以为是、独断独行,所以很难令其遵循公司所颁布的各项规定,而且比较会有「占地为王,各据一方」的情况。 而且他们所提出的最常见的反对理由是:「软体工程的各项制度,太过呆板、碍手碍脚,会抹杀创造力…。」 (二)坚持自己的习惯 基层工作人员对「软体发展制度」产生反弹与排斥的第二个原因是「坚持自己的习惯」。 有些工作人员早已养成自己的一套工作习惯,如今却要订定一大堆规范,令大家来遵循。 因此,有的人会对新的工作规范,产生反弹与排斥。 此种现象,尤其会出现在「学历高」或「主见强」的人身上。 针对此一问题,其可能的「解决之道」如下: 1.由大家共同协商订定。 为了破除每个人的本位主义,让大家来共同协商订定新的工作规范(作业规定),大家各自退让一步。 藉由协商可以促进大家建立共识。 有些公司,在推动ISO 9001或CMMI认证时,便指派那些「学历高」或「主见强」的人来负责编撰相关的「作业程序书」及「工作指导书」。 这是一个很高明的作法──因为,对于自己所亲身编撰的「作业程序书」及「工作指导书」,总应该乐意遵循,而不再排斥吧! 2.主管的决心。 由那些「有实权的主管」出面推动,也可以破除每个人的本位主义,订定出大家都可以接受的新工作规范(作业规定)。 所谓「有实权的主管」是指握有考绩、奖励、惩处、升迁、加薪、年终奖金…等等,有实际决定权的主管。 如果「有实权的主管」皆放任不管,或者只有口头上的支持,而无实际上的赋予权力,只单靠一群「没有实权」的「推动小组」在摇旗呐喊,这样有可能会推动成功吗? (三)担心工作量增加 基层工作人员对「软体发展制度」产生反弹与排斥的第三个原因是「担心工作量增加」。 在建立正规的「软体发展制度」之后,可能会有许多额外的(原本没有的)工作要做。 以ISO 9001及CMMI制度来说,为了满足ISO 9001及CMMI的基本要求,在作业的过程中,可能就要多填某些表单、多写某些文件,以便留下「佐证记录」。 换句话说,正规制度一旦建立之后,无形中,工作量就增加了。
2.生命共同体的理念
3.更合理的时程及成本管制
「品质」是需要付出成本的。 如果不愿意付出此成本,则将来所付出「代价」更大。 从软体工程的教科书上,我们也可以理解:推动「软体流程改善」(Software Process Improvement),建立满足ISO 9001或CMMI的软体发展制度,主要是在藉由提高产品的「预防成本」,以便有效降低产品的「失败成本」(※注:所谓「失败成本」意指因错误而必须修正/再制(Rework)的成本。)以长远的眼光来看,推动软体流程改善,可以有效的降低软体产品的「总投资成本」,这是因为产品的瑕疵数量减少了。 综合本章以上所述,关于基层工作人员对「软体发展制度」反弹与排斥的原因及其可能的解决之道,可以归纳为「表一」所示。 表一:对「软体发展制度」反弹与排斥的原因及其可能的解决之道
三、带兵要带心 军中有两句话:「带兵要带心」、「练兵要练心」。 对于公司高阶主管而言,更应该了解此一道理。 任何制度的推动建立,必须去了解员工的心态及需求。 并且针对员工的心态及需求,去谋求适当的「解决之道」。 运用适当的沟通、观念的灌输、建立共识、采取适当的奖励措施…等等,透过适当的「管理手段」来解决。
‧人员升迁管道。 四、如何与人事制度相结合? 「软体发展制度」如何与「人事制度」相结合? 以下,我们提出三种可能的方法: ‧针对工作项目,设立相关职位。 (一)针对工作项目,设立相关职位 以美军规范DOD-STD-2167A为例,在其一般需求里,我们可以看到软体发展过程中,有某些重要(较具独立性)的工作项目要做,如「表二」所示。 表二:DOD-STD-2167A一般需求
有些公司在建立「软体发展制度」时,便会根据较为重要(较具独立性)的工作项目,设立对应的职位。 例如,参见「表三」所示。 表三:各职类工作人员
每一个职位(头衔)并非一成不变的,因为每个人都可能会轮调或升迁。 ‧每个人皆有明确的专业及专职,不会角色模糊或混淆。 假设,某一家公司,每个人的职位(头衔)是「主任工程师」、「工程师」、「副工程师」、「技术员」…。 在这种情形下,这些人被分配在「软体发展制度」里所扮演的角色,可能一会儿是「专案经理」,一会儿又是「程式师」,一会儿是「型态管理工程师」,一会儿又是「测试工程师」…,每个人的角色都是不明确、模糊不清,甚至可能相互混淆。
( (二)采行适当的升迁及轮调制度 有些公司在设立相关职位之后,会采行适当的升迁及轮调制度。 例如:(参见「图一」) 图一:升迁与轮调制度(范例) 对于新进人员,先让他们担任「软体维护」的工作,让他们由前人的程式及文件中,去研读、学习前人的设计理念及方法。 这同时也是一种很好的「在职训练」。
这是因为,如果没有担任过各项基础工作,如何有经验去带专案? 去执行并管理专案的进行? 同样的道理,如果没有担任过各项基础工作,如何去执行软体品保业务? 如何去执行评估、监控、见证、审查、稽核…等工作。 当然,员工也可以选择永远担任一位「资深的软体开发工程师」,但是如此一来,他的升迁也将永远受限。
(三)采行适当的考核及奖励制度 有些公司为了激励员工士气,会采行适当的考核及奖励制度。 目前国内最常见的就是运用考绩、奖金、加薪、分红、持股、…等等方式。
●原则1:每位员工所获得的酬劳及奖励,端视其对组织的贡献程度而定。 ●原则2:将组织的「营运目标」与员工的「生涯规划」相结合。 ●原则3:各人的需求不同,满足程度亦不同,所以奖励方式最好因人而异。 ●原则4:相同的奖励,针对相同的人,在不同的时间或地点,会有不同的效果。 所以奖励方式最好能因时制宜、因地制宜。 除了「金钱」的奖励外,事实上还有很多奖励方式。 常见的奖励方式有:金钱、认可、休假、行动参与权、偏爱的工作、升迁、自由、自我成长、乐趣、奖品…等等。 市面上的企管书籍,介绍得很详细,因此本文不多做赘述。 五、结语 有一个重要的观念,大家应该深思: 「软体发展制度」的建立,是「管理」的问题,而非「工程技术」问题──有怎样的体制,就会有怎样的人及心态。 本文只是根据笔者的亲身所见所闻,信手拈来,或许并非很严谨,但是希望能做为一种「抛砖引玉」,期盼有更多人在此一领域中去深入探讨。
|
|