《方正的软件项目管理》由会员分享,可在线阅读,更多相关《方正的软件项目管理(12页珍藏版)》请在金锄头文库上搜索。
1、1999 年.第 1 期.电脑与生活.企业方法方正的“工厂” 本报记者 刘韧 北京大学计算机科学技术研究所的前身是北京大学文字信息处理技术研究室,始建于1977 年 9 月,1983 年正式成立北京大学计算机科学技术研究所,现任所长是中国科学院院士、中国工程院院士、第三世界科学院院士、著名计算机专家王选教授,副所长是刘秋云教授。 1995 年与北大方正集团公司联合成立北大方正技术研究院,现由王选教授担任院长,刘秋云、肖建国、阳振坤教授和邹维副教授任副院长。方正技术研究院负责方正集团的技术发展研究和新产品的研制开发,同时承担着部分基础研究工作,为公司的长远发展积累技术资源和人才资源,成为方正集团
2、的科研开发基地。 目前所(院)内建有博士、硕士研究生培养点和博士后流动工作站,以本所为依托建有文字信息处理技术国家重点实验室和电子出版新技术国家工程研究中心,下设报业管理、文字与图形处理、数字媒体、金融信息技术、指纹技术、照排技术等 6 个研究所,以及彩色系统、地理信息、办公自动化、出版社管理等多个研究室。全所(院)现有工作人员460 余人,其中副高级职称以上人员 25 人,博士 22 人,硕士 180 余人。总建筑面积近10000 平米,各种仪器设备 900 余台套。 方正最早的报纸排版软件 NPM,作者只有两个人,主持开发的是方正研究院现任常务副院长肖建国。NPM 在 1988 年一经推出
3、即被全国半数以上的报纸采用,出尽风头,时至今日北京日报 、 人民日报的部分版面还在使用 NPM 排版。 1988 年能在 DOS 平台上写出“所见即所得”的图文混排系统,足以证明肖建国的编程水平是大师级的,而且,NPM 为方正所创造的利润也不亚于后来出名的任何著名程序员的成名之作,但肖建国并没有出名,也没找哪家报纸谈过自己的程序人生,而是继续埋头苦干,于 1993 年主持开发完成了方正彩色出版系统,在方正黑白排版市场萎缩之际,为方正培养出新的利润增长点,使方正牢牢地占领了彩色报纸出版市场。 这次功成之后,肖建国仍然没有急着自己出名,因为尽管作为优秀程序员,肖建国的个人能力非常强,但他清醒地认识
4、到:一个长久发展的有规模的软件公司仅靠发挥一两个天才程序员的能动性在未来的竞争中必将落败。 作坊为什么不行 1988 年写出令人自豪和骄傲的 NPM,1993 年主持开发成功方正彩色出版系统,肖建国得出的结论不是自己“顶天立地” ,方正离开自己不行,而是一两个人能够写出好的软件,但这个软件的规模不会很大,当软件规模足够大的时候,一两个人是绝对做不过来的。 据王选回忆,方正在 1988 年创业时候,推出的三大产品 RIP、NPM 和 BD 书版排版语言,每个产品代码约在 10 万到 15 万行,而现在上市的产品程序量则差不多都在 50 万到 100 万行,方正现在在外面卖的软件总程序量要超过 3
5、00 万行。 天才的程序员可以在程序的某些模块体现出自己高超的艺术性和精巧性,但如此大规模的程序全靠一两个人去体现自己的技巧是无论如何也行不通的,实际上也没有那么多技巧需要施展。程序就是程序,代码而已,有时候被比喻为艺术,但那只是比喻而已。无论多么精彩绝伦的算法,对于未来庞大的工程性的软件来说都只能处于锦上添花的地位,而不再会是主角。 为了说明 30 万行代码和 300 万行代码的不一样,肖建国打了一个盖大楼的比方:“从理论上讲,一个人也能盖起一座大楼,只要这个人每天起早贪黑地干,一年不行两年,两年不行三年,总有砌下最后一块砖的时候,可现实中的大楼没有这样盖的,因为每座大楼都有最后交工的期限,
6、软件更是这样,规定时间内不能上市,用户就会选择竞争对手的产品。 ” “师傅带徒弟”式的作坊作业让方正研究院数字媒体研究所所长助理郭宗明更多忧虑的是公司风险难以控制。 “作坊式作业将希望全寄托在一两个天才程序员身上,一两个天才程序员发挥得好,做得可能比想象得还要好,但万一做不出来怎么办?万一这个人跳槽了怎么?”大公司要讲可操作性,什么时候把软件写出来了,什么时候上市,都要使用倒记时的方式。而“作坊式作业不可能做到有计划,按时推出产品,只能把宝全压在天才程序员的个人身上,太不安全了。 ”尽管郭宗明被王选称为天才程序员,但他一点都不想把公司的命运寄托在像他这样的天才程序员身上。 方正研究院文字图形研
7、究所副所长李征认为,不仅不应该把命运寄托在一两个名程序员身上,甚至压根儿都不应该鼓励“明星制” 。 “今天的程序已经谈不上明星了,软件不等于程序,不等于代码,软件是一种商品。它需要有包装、使用指南、安装程序、培训、用户支持、升级、售后服务等等配件,单纯的程序是不能赚钱的,只有成为商品的软件才能够赚钱。中国软件产业发展之初由于软件过度匮乏,没有任何包装的程序也能够卖钱,而且,还能卖个天价;但那个时代已经一去不复返了。现在再好的程序,如果没有包装,没有市场推广一定难以获得大规模的利润,因此现在已经进入了由名软件公司取代名程序员的时代。 ”作为方正核心产品文字排版软件所的副所长,李征不写程序,他将自
8、己定位在软件开发管理者的角色上。 衡量一家软件公司是“作坊式”的作业方式,还是“工厂式”的作业模式,并非只看它的规模,并非这个公司程序员少,就说它是软件“作坊” ,那个公司有几百名程序员,就说它是软件“工厂” 。是“作坊”还是“工厂”不能以人数而论,方正研究院的演进过程很能说明这个问题。 方正研究院的程序员每天都在增多,其直接目的并不是为了形成“软件工厂” ,而是因为软件规模越来越大,功能越来越多,需要更多的程序员来写。很多程序员在一起工作不能自然而然地形成“工厂式”的作业模式,方正研究院几百名程序员聚集在一起,起初的情形用肖建国的话形容就是“由小作坊变成了大作坊,大作坊底下带了很多个小作坊”
9、而已。 程序员多,产品是做大了,但由于程序员之间交流不够,技术思想、技术手段、实现方法互相配合得不好,致使写出的软件产生了许多许多的 BUG。甲程序员的模块要和乙程序员的模块配合,因为没有规范和制度确保实现这种配合和沟通,结果造成:甲调用的时候仅凭假设想象乙是怎么做的,这种假想的结果是有时候做重复了,有时候做错了,最后,软件配合起来就不行。肖建国回想当年的情景颇有些感慨:“人员一多,就很难组织。1992、1993 年,方正软件因此出现了大量的 BUG,造成软件从 1.0、1.01、1.12 到 1.03,版本满天飞,同样是 1.1 版,有今天的 1.1 版,有明天的 1.1 版,原因是软件错误
10、太多,今天这个用户来抱怨,打个补丁改了,明天那个用户又提出了另外一个问题,再打一个补丁交给人家。程序员费了牛劲去改,软件版本满天飞,但错误还是一大堆。 ”所谓“软件工厂”即是一套克服这种协作混乱的管理方法。 协作难在何处 深知软件协作困难的肖建国认为,直到现在中国人还做不了像 Windows 95 这样大型的软件。 “给再多的钱也做不出来!软件组织机构越大越难管理,大到一定时候就无法控制了,就会出现管不了,失控的局面。 ” “软件是大家的,我为什么要多操那个心。 ” 为什么会有这么难?程序员多起来,自然就要有分工,有分工的时候,心态调整问题就会凸现出来:原先作坊式作业的时候,软件是一两个程序员
11、写的,软件写完了,虽然在产权上这个软件或许不是自己的,但程序员心里会觉得这个软件就是自己的,对这个软件的感情就像对自己的儿子一样,关于这个软件一切成败荣辱都被看成是自己的,在这种心态下,程序员会不分白天黑夜地超常投入。而软件“工厂”模式的直接结果是一个软件由几十个、甚至上百个人写,软件写成以后究竟是谁的?有了荣誉是谁的?都不是太明确。同样,软件有点毛病也不专是哪个人的,而是大家的,既然是大家的事情,那就让大家来做,我为什么要多操那个心?但“大家”是一个概念,就像可以拿来一个苹果,不可以拿来一个“水果”一样, “大家”这个概念同样落不到实处,而对软件的责任心却必需落到实处。在这个问题上,肖建国承
12、认“现在我们这里的人勤奋程度要比当初差一些。 ” 软件越做越大,越做越复杂是不可抗拒的世界潮流,一家软件公司要参与未来的竞争就必需有做大软件的能力,而做大软件就必需要有分工协作,决不能因为协作会降低个人的积极性,协作起来会遇到重重困难就否定协作,那样做等于因噎废食。因此,问题的关键是怎样在分工协作的模式下,最大限度地调动大家的积极性。 在肖建国看来,要调动程序员的积极性问题,首先要在分工上做适当的考虑。 “不能咱俩合作,所有的设计我都做完了,叫你去编码,那样你可能会觉得很枯燥,会感到没有发挥你的创造能力。 ”在方正研究院提倡软件设计部分大家都参与,都有表达创造力的机会。 事物是历史的,方正的软
13、件也不例外,有些软件最初就是一两个人写的,这一两个人会觉得这个软件是他的,会有很多感情,而后来加入开发的程序员则会面临心态融合的问题,后加入的程序员会觉得“我写这个模块,是分配给我的任务,不用想别的,那就做吧。”碰到这个问题,李征的方法是给后来的人创造机会,尽量将年青人推到项目经理、测试经理和支持经理岗位上,让他们感觉到是他们在控制着软件的发展,感觉到是他们自己在做主。 沟通的时候,则鼓励大家把想法都说出来。尽管李征不鼓励名程序员,但他从来不把程序员看成只是完成代码的机器,而是千方百计试图将新加入的程序员变成集体的一分子,让他们感觉到共同完成的软件之中有着自己的一份功劳。 为了培养程序员对软件
14、的感情,李征让程序员开展示会的时候去盯展台,当程序员看到自己写的软件有人买,听到用户在议论自己写的程序的时候,会自然而然地和产品发生关系。 无论在哪里钱都是非常重要的,但是做软件仅仅有钱是远远不够的,还需要培养程序员对企业、对产品的感情,这一点李征深有感触:“后进来的人是在为已有的软件加功能,是在维护软件,他并没有权改造软件,只有权改 BUG,这样的工作很繁复,没有什么新意,具有牺牲的意义。 ”为此,李征坚持给这些程序员高待遇,评项目奖的时候,不分资历想办法多给他们一些荣誉。 机制上,郭宗明认为要保证软件做好了大家全有份,而不光是“头儿”的事。 “我们的项目奖不会是平均的,但每个人都有份,同样
15、,软件做不好,大家都砸 。 ” “很显然的事,你怎么就不明白呢?” 分工协作遇到的另外一个大难题是沟通问题,解决这个问题最直接的方法是开会。方正研究院的会议现在越来越多,几个会议室总是塞得满满的。组内的人要经常交流,组和组之间、课题和课题之间、研究所和研究所之间要考虑接口问题、配合问题。开会是容易的,通过会议解决问题却是困难的。讨论交流难免会有争论,这个时候一定要有人站出来仲裁,否则,讨论下去永远不会有结论。 软件是工程,不是理论问题,所以,能够也必需通过仲裁的方式解决分歧,而不是通过进一步的研究分出到底谁对谁错,软件工程花不起研究的时间。对此,肖建国把话说得明白无误:“软件不是算 11,11
16、 你要说等于 3,我非和你争不可,工程问题讨论起来,可能会讨论明白谁更高明,但很多时候是这样也行,那样也行,并没本质的差别,这个时候再固执地争论下去就没意思了。 ” 沟通困难也有程序员性格和习惯方面的原因,做技术的程序员很容易把自己已经做成的事情看得很简单,觉得没什么好讲, “很显然的事,你怎么就不明白呢?这还用解释吗?”是程序员面对请教最常态的反应,对这样的程序员,肖建国认为要教育他们愿意把自己的想法主动告诉别人,愿意去倾听别人是怎么想的。对于因为保守,不愿意将关键算法和技术告诉别人,关键时候要挟公司长工资的程序员,肖建国会将他开除。 为了从体制上保持充分的沟通,方正研究院将一个组的人数控制在 10 个人左右,以控制交流的难度,避免花在交流上的时间太多。 在肖建国看来,合理的协作方式应该是先做和别人的接口部分,后做一个人关在屋里也能做好的部分,原因是“自己的事可以通过自己的努力,通过自己加班赶进度,总之是自己的时间好控制,而控制别人总不方便。更为重要的是,自己关在屋里先做,做完以后,发现和别人配合不起来,不仅要返工,还会因为