您的位置: 专栏天地> 记者专区> 刘韧>


刘韧《企业方法-中关村财富之源 》连载8

2001-09-09 16:46刘韧 /(计算机世界 )


  软件开发管理管什么

  几乎所有的管理都先从摸得着、看得见的地方入手,方正研究院对软件开发的管理也不例外,他们首先抓的是文档。

  在李征眼里,如果不写文档,就不是一个好程序员,所以,不管这个程序员多么天才,如果不写文档,我都不要。李征要求"飞腾3.1"的需求分析,就要有三个重要的文档:

  第一份是用Excel做的一张大表,表上规定了:飞腾3.1要做多少个功能;每个功能的来源(是报社的需求,还是出版社的需求,或者是上一个版本遗留的问题);对每个需求的描述和优先级别,以及这些功能计划由哪些人来负责。

  第二份文档被称为功能式样书。它负责一一对应地对上面那张大表上的每一个功能做进一步的说明,详细阐明功能设计方法和实现方法。如果飞腾3.1有1个功能,就会有1份这样的式样书,式样书很详细,有的会长达几十页。

  第三份文档是用Project写的进度表,规定飞腾3.1什么时候做设计,什么时候写代码,什么时候提交单元测试。软件飞腾了!开发中每个里程碑都在这里做了规定。

  为什么要写这么详尽的文档?肖建国的经验是"写软件不能仅凭嘴说,说完了容易忘,而且,讲话有二义性,软件不能有二义性,所以,该写的东西都要明确写下来。"肖建国另外一个经验是:"想清楚、说清楚和写清楚三者之间有很大的差异性,能写清楚才算把事情彻底搞透了,很多时候是以为自己想清楚了,其实并没有想清楚,所以,需要通过写出来检验一下。"

  写这么多文档会不会耽误了写代码的时间?郭宗明认为写文档的时间必须舍得花。"从国外软件开发的经验看,做文档,写注释的时间,就是要比真正编码的时间长。"

  郭宗明感觉广东话唱歌很好听,但他建议大家说普通话,因为方言没办法交流。"软件是大众化的产品,许多快捷键都是公认的,开发约定大家也应该共同遵守,界面是什么风格,变量怎样命名,浮点数怎样命名都要按既定的规范,程序员不能自己另起一套,自己另创一套可能对自己来说很好用,但别人就没有办法理解,没办法交流。"

  为统一规范,方正研究院颁发了一套代码编写规范,而真正严格执行的都是那些饱经教训的程序员,因为只有他们才清楚为什么按规范写程序日后才不会出麻烦,不规范的程序员被李征称为"杀手"。"他们知道规范,也觉得规范很有道理,但真正写程序的时候,就会忘记,因为他们没吃够苦头。这个时候只能通过不断地检查他们的程序,强制他们执行规范。"郭宗明发现不写注释或者不按规范写注释的程序员,会坚决要求他补上,因为郭宗明很担心:"一旦这个程序员改做别的项目或者跳槽了,留下一堆天书一样的源程序,谁也看不懂,谁也无法接手,整个项目都会受到影响。"

  软件编译应当说是相对容易的环节,但就是这个环节上,李征所在的文字研究所出现过好几次错误。最后,李征下决心制定了一个非常详细的编译规范,规定每一次编译都要按照这个规范执行。

  这之后,李征觉得软件公司所做的每一件具体的事情都应该有规范,比方,刻光盘这样的小事,李征也专门找人写了一个规范流程。李征认为,事事有规范不仅可以避免错误发生,实际上还可以节约东撞一下西撞一下所浪费的时间。

  规范是协同工作的基础,真正实现协同工作还需要制度来保证。方正研究院规定项目组的成员一个月必须坐在一起互相汇报一次。

  相互汇报有三个显而易见的好处:一,可以增进了解,有效避免调用错误;二,关键性算法说出来,大家可以提一些建议,可能会使算法更加优化;三,可以增进协作的气氛。郭宗明觉得,很多人愿意留在方正不是为了方正的钱,而是为了方正的气氛。"保持心情舒畅很重要,大家彼此处得很好,发现问题会彼此提醒,一个人如果态度很差,大家就会尽可能地躲着他,能绕就绕过去,心里想的是,反正不是我的问题,跟我无关,能不说就不说了。"

  要想沟通协作得好,肖建国认为要从最"根上"考虑,"理想的状态是,我们三个人一个课题组,进来第四个人的时候,我们三个都要参与面试,谁看不上眼,他都不能进来。"

  方正研究院不会将一个模块交给一个程序员,三个月以后再去检查,而是在每一个关键点上检查他的工作,不停地对他的工作做需求评审、设计评审、代码检查、单元测试等等检查工作。

  需求评审,发现问题,纠正了,后面就不会错下去,而等到三个月以后,程序员交上来一个乱七八糟的文档,一个不能用的程序,那时候再后悔就来不及了。

  有非常自觉、非常优秀的程序员,但不能因此就相信所有的程序员都是自觉和优秀的,人总是有惰性的,尽管每个礼拜都要检查评审程序员的工作,好像对程序员不信任似的,肖建国还是坚持在每个关键点上检查工作,"否则,BUG就没有办法控制,时间进度也没办法控制。"BT1冲突会发生在哪些环节

  H用制度和条文将变化较小的事情规定下来是组织管理的基础,根据条件的变化,随时随地解决冲突则是管理的艺术。管理得好与不好,全在处理各种各样矛盾冲突时所把握的火候。在方正研究院第一个需要解决的冲突是--选谁做项目经理。

  做技术的人很难打心底服气谁,为了让大家都服气,方正研究院过去提拔干部的标准是让技术最强的人做项目经理,这种做法大家比较容易心平气和,但这样做的通病是技术最强的人往往没有管理和项目调控的能力,而软件大规模工程化研发最需要的恰恰不是一个技术骨干自己能多做多少,而是通过有效的管理,调动大家的积极性,把团队的力量发挥出来。

  选管理型人才做项目经理,如何平衡技术骨干和做管理的项目经理之间的关系?方正研究院找到的办法是让技术骨干在待遇上得到平衡,让技术骨干和做管理的项目经理拿一样多工资,甚至更多,而且,在技术问题上充分尊重技术骨干的意见,负责项目管理的项目经理更多是管理软件开发进度和软件质量。在算法上,作为管理者的项目经理肯定不如很多年轻人脑子灵,开发人员想的是新技术,项目经理安身立命的依据则是丰富的开发经验,对软件的总体把握以及对于规范的清楚掌握,两者并不矛盾。

  (为什么大家都要攻击方正不符合标准*3/6或许是因为国产软件在同国外软件较量中屡遭失败的缘故,舆论开始对中国人做软件、中国公司做软件的能力产生了彻底的怀疑,以至于面对像方正这样挑战国外软件所取得的最辉煌胜利也不敢轻易欢呼叫好了,相反,对于"方正是在靠不符合标准的产品垄断市场"的言论似乎更容易接受了。

  实际情况是,早在Adobe推出语言之前,方正已经做了五代RIP,方正的前五代RIP当然没法符合标准,因为那个时候还没有标准。1993年,从第六代RIP开始,方正就接受语言,从此走向了开放标准。

  肖建国说,因为方正在出版领域处于相对垄断的地位,所以,所有想进入这个领域的竞争对手都要先踢方正一脚,大家异口同声地指责方正不标准,再加上方正1993年之前的产品,的确不支持,这些老的产品有的用户还在用,没有升级,这样两件事凑在一起容易使局外人信以为真。

  信以为真除了肖建国解释的这两个原因,还有一个有些人打心底就认为,国产的软件不可能和国外软件竞争的心理基础,所以,方正的成功就只能在能力之外找原因了。

  Adobe推出语言对方正来说当然不是一件好事,有了,竞争对手就很容易在某个点上突破方正在中文出版领域的垄断防线。在这种情况下,方正凭借着原来的市场优势,搞封闭系统也是一条路子,这条路在一开始可能会走得很舒坦,方正产品不支持,可能逼着一些用户要用就全用方正的产品,但这条路会使方正的圈子越做越小。因为排版领域的所有软件,方正不可能全都做,比如方正根本没有什么产品能和CorelDraw这样的绘图软件竞争。既然方正的能力是有限的,方正总有力所不及的地方,那么,如果方正永远不接受,因为CorelDraw是基于的,CorelDraw的功能也就永远进入不了方正的系统,方正的出版物也就永远做不出CorelDraw所能够达到的效果。

  封闭妨碍进步,结果是慢慢地萎缩,日本写研排版就是一个典型的例子。写研是封闭系统,曾经占了6%到7%的市场,《人民日报》海外版曾经用的就是写研系统,《星岛日报》全部是写研的系统,而后来在海外市场上,基于标准的方正系统取代了很多写研的系统。)(北大方正于199年开始运筹支持语言的RIP研制,1991年初,决定直接瞄准Adob e刚刚公布的2标准,不再跟老的1。1993年1月上市的方正第六代RIP支持2,而当时国外一些照排大公司还没有来得及完成从1到2的转换,国内一些照排企业由于没有及时跟上潮流市场逐步萎缩,这就是方正在那个转折关头的历史。

  既然大家都是基于语言的产品,已经刺刀见血真刀真枪地干了好几年,残酷可想而知,肖建国形容这种竞争的残酷时说:"假如我们的飞腾不是比国外同类产品好,我们就得死,假如我们的RIP不是比别人的RIP有优势的话,我们也得死。"在RIP上,国外产品没有任何的汉字门坎。方正要凭实力和他们拼,为了争取更加广阔的市场,方正把RIP技术和激光打印机融为了一体。中文排版和语言文化规范有一定的关系。现在凡是需要参加评比的书都必须要拿方正排,因为用国外软件排出的结果有许多不符合语言文字规范的地方。肖建国认为,方正系统之所以能在有了标准以后还能在市场上站着是因为" 在标准出现之前,已经有了一些功底,掌握了一些该掌握的技术,保证了在新标准下做出的东西,仍然是地道的、有生命力的。"

  面对未来的竞争,王选说,只要找到好的将才,中国软件完全可以和国外软件一争高低。关于资金和人才的关系,王选认为,只要有了好的人才,资金容易找到。)

  作坊时代已成为领导的技术骨干,肖建国会给他配一个负责管理的搭档。"技术骨干待遇提上来后,他会觉得当不当领导也没关系。'我技术上很强,比管我的领导拿的还多。'这样心态就好了,说话也就心平气和了。"但肖建国同时希望技术骨干记住,"技术骨干所具有的本事是技术上的,行为上还要受管理者的约束。"

  真正天才的程序员真要给他官做,他或许还要担心管理会耽误了他钻研技术的时间,所以,在保证待遇的前提下,天才程序员更需要的是给他一个难题来做,让他跨越那个难题。最优秀的人有一种征服的愿望,这个时候项目经理要信任他,不要去干涉他,放手让他去做,只要和他讲:"这个事情非常重要,我们希望你来解决,而且,我们信任你有这个能力"就行了。

  技术和管理并不总是矛盾的,在方正研究院就存在着既是编程天才,又是优秀管理者的人,王选说肖建国、郭宗明都是这样的人,这样的人被王选称为最难得的将才。

  无庸讳言,管理和技术更多地还是体现在冲突的一面,有的程序员钻研某一项技术会钻得很深,如果这项技术在整个软件里面用的并不是太多,这个时候的钻研就有可能影响整个项目的进度,这个时候项目经理就有责任把程序员从牛角尖里拽出来。另外,技术人员更注重细节,从用户方面考虑的要少,怎么让没用过"维思"系统,没有见过NPM的程序员较多地考虑飞腾向下兼容的问题,对李征来说是一个不小的挑战。

  作为软件开发管理者的李征认为,软件公司最忌讳的是,一会儿让这个程序员做这个项目,一会儿让他做那个项目,而应当让他在一个方向上长期发展。"如果一个程序员在图像方面已经有了一些基础,今后凡是图像方面的工作都应该交给他做,目的是培养他在图像方面的兴趣,他做多了,经验自然就多了,反映出来就是能力的提升,成为这方面的专家,别人遇到这方面的问题都来请教他,他就得到了一种荣誉感和满足感。在文字研究所我们还培养了专家、BIG5专家,这样他们就会觉得自己有责任,有义务要把所擅长的领域做好。"

  不但开发人员应该保持一个明确的定位,在李征看来,一个部门也应该有自己明确的定位。"文字所曾经做过一个M IS系统,事后我想过,从我们这个部门的定位来讲,文字所不该做这个项目,那是个大型数据库项目,数据库项目并非文字所的专长,为了这个项目,我们生生培养出了一批数据库的人才,做MIS系统的人才。这个项目是日本的项目,做得非常成功,但为此把我们最优秀的人都派进去了,如果把这些人都用到飞腾上,成效未必要比做这个系统赚得少,而且,这个项目如果让别的部门做可能做得更好,文字所的主要任务是做飞腾。"

  部门经理和项目经理的冲突,从部门经理方面来讲,表现为部门经理把持不住自己,总禁不住越级去管理本应该由项目经理负责的项目,直接对程序员指手划脚,吩咐他们做这做那,这种工作的模式容易产生一系列的问题,项目经理会因此产生"那么,还要项目经理干吗?"的强烈抵触情绪。

  合理的做法是部门经理发现问题先和项目经理讲,让项目经理去解决,H如果认为项目经理解决不了或者不合格的话,应该把他换掉,而不是越俎代庖地越级替他做管理。

【责编: 赵秀芹】




■相关文章