方正的软件项目管理.doc_第1页
方正的软件项目管理.doc_第2页
方正的软件项目管理.doc_第3页
方正的软件项目管理.doc_第4页
方正的软件项目管理.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1999年.第 1期.电脑与生活.企业方法方正的“工厂” 本报记者 刘韧 北京大学计算机科学技术研究所的前身是北京大学文字信息处理技术研究室,始建于1977年9月,1983年正式成立北京大学计算机科学技术研究所,现任所长是中国科学院院士、中国工程院院士、第三世界科学院院士、著名计算机专家王选教授,副所长是刘秋云教授。 1995年与北大方正集团公司联合成立北大方正技术研究院,现由王选教授担任院长,刘秋云、肖建国、阳振坤教授和邹维副教授任副院长。方正技术研究院负责方正集团的技术发展研究和新产品的研制开发,同时承担着部分基础研究工作,为公司的长远发展积累技术资源和人才资源,成为方正集团的科研开发基地。 目前所(院)内建有博士、硕士研究生培养点和博士后流动工作站,以本所为依托建有文字信息处理技术国家重点实验室和电子出版新技术国家工程研究中心,下设报业管理、文字与图形处理、数字媒体、金融信息技术、指纹技术、照排技术等6个研究所,以及彩色系统、地理信息、办公自动化、出版社管理等多个研究室。全所(院)现有工作人员460余人,其中副高级职称以上人员25 人,博士22人,硕士180余人。总建筑面积近10000平米,各种仪器设备900余台套。 方正最早的报纸排版软件NPM,作者只有两个人,主持开发的是方正研究院现任常务副院长肖建国。NPM在1988年一经推出即被全国半数以上的报纸采用,出尽风头,时至今日北京日报、人民日报的部分版面还在使用NPM排版。 1988年能在DOS平台上写出“所见即所得”的图文混排系统,足以证明肖建国的编程水平是大师级的,而且,NPM为方正所创造的利润也不亚于后来出名的任何著名程序员的成名之作,但肖建国并没有出名,也没找哪家报纸谈过自己的程序人生,而是继续埋头苦干,于1993年主持开发完成了方正彩色出版系统,在方正黑白排版市场萎缩之际,为方正培养出新的利润增长点,使方正牢牢地占领了彩色报纸出版市场。 这次功成之后,肖建国仍然没有急着自己出名,因为尽管作为优秀程序员,肖建国的个人能力非常强,但他清醒地认识到:一个长久发展的有规模的软件公司仅靠发挥一两个天才程序员的能动性在未来的竞争中必将落败。 作坊为什么不行 1988年写出令人自豪和骄傲的NPM,1993年主持开发成功方正彩色出版系统,肖建国得出的结论不是自己“顶天立地”,方正离开自己不行,而是一两个人能够写出好的软件,但这个软件的规模不会很大,当软件规模足够大的时候,一两个人是绝对做不过来的。 据王选回忆,方正在1988年创业时候,推出的三大产品RIP、NPM和BD书版排版语言,每个产品代码约在10万到15万行,而现在上市的产品程序量则差不多都在50万到100万行,方正现在在外面卖的软件总程序量要超过300万行。 天才的程序员可以在程序的某些模块体现出自己高超的艺术性和精巧性,但如此大规模的程序全靠一两个人去体现自己的技巧是无论如何也行不通的,实际上也没有那么多技巧需要施展。程序就是程序,代码而已,有时候被比喻为艺术,但那只是比喻而已。无论多么精彩绝伦的算法,对于未来庞大的工程性的软件来说都只能处于锦上添花的地位,而不再会是主角。 为了说明30万行代码和300万行代码的不一样,肖建国打了一个盖大楼的比方:“从理论上讲,一个人也能盖起一座大楼,只要这个人每天起早贪黑地干,一年不行两年,两年不行三年,总有砌下最后一块砖的时候,可现实中的大楼没有这样盖的,因为每座大楼都有最后交工的期限,软件更是这样,规定时间内不能上市,用户就会选择竞争对手的产品。” “师傅带徒弟”式的作坊作业让方正研究院数字媒体研究所所长助理郭宗明更多忧虑的是公司风险难以控制。“作坊式作业将希望全寄托在一两个天才程序员身上,一两个天才程序员发挥得好,做得可能比想象得还要好,但万一做不出来怎么办?万一这个人跳槽了怎么?”大公司要讲可操作性,什么时候把软件写出来了,什么时候上市,都要使用倒记时的方式。而“作坊式作业不可能做到有计划,按时推出产品,只能把宝全压在天才程序员的个人身上,太不安全了。”尽管郭宗明被王选称为天才程序员,但他一点都不想把公司的命运寄托在像他这样的天才程序员身上。 方正研究院文字图形研究所副所长李征认为,不仅不应该把命运寄托在一两个名程序员身上,甚至压根儿都不应该鼓励“明星制”。“今天的程序已经谈不上明星了,软件不等于程序,不等于代码,软件是一种商品。它需要有包装、使用指南、安装程序、培训、用户支持、升级、售后服务等等配件,单纯的程序是不能赚钱的,只有成为商品的软件才能够赚钱。中国软件产业发展之初由于软件过度匮乏,没有任何包装的程序也能够卖钱,而且,还能卖个天价;但那个时代已经一去不复返了。现在再好的程序,如果没有包装,没有市场推广一定难以获得大规模的利润,因此现在已经进入了由名软件公司取代名程序员的时代。”作为方正核心产品文字排版软件所的副所长,李征不写程序,他将自己定位在软件开发管理者的角色上。 衡量一家软件公司是“作坊式”的作业方式,还是“工厂式”的作业模式,并非只看它的规模,并非这个公司程序员少,就说它是软件“作坊”,那个公司有几百名程序员,就说它是软件“工厂”。是“作坊”还是“工厂”不能以人数而论,方正研究院的演进过程很能说明这个问题。 方正研究院的程序员每天都在增多,其直接目的并不是为了形成“软件工厂”,而是因为软件规模越来越大,功能越来越多,需要更多的程序员来写。很多程序员在一起工作不能自然而然地形成“工厂式”的作业模式,方正研究院几百名程序员聚集在一起,起初的情形用肖建国的话形容就是“由小作坊变成了大作坊,大作坊底下带了很多个小作坊”而已。 程序员多,产品是做大了,但由于程序员之间交流不够,技术思想、技术手段、实现方法互相配合得不好,致使写出的软件产生了许多许多的BUG。甲程序员的模块要和乙程序员的模块配合,因为没有规范和制度确保实现这种配合和沟通,结果造成:甲调用的时候仅凭假设想象乙是怎么做的,这种假想的结果是有时候做重复了,有时候做错了,最后,软件配合起来就不行。肖建国回想当年的情景颇有些感慨:“人员一多,就很难组织。1992、1993年,方正软件因此出现了大量的BUG,造成软件从1.0、1.01、1.12到1.03,版本满天飞,同样是1.1版,有今天的1.1版,有明天的1.1版,原因是软件错误太多,今天这个用户来抱怨,打个补丁改了,明天那个用户又提出了另外一个问题,再打一个补丁交给人家。程序员费了牛劲去改,软件版本满天飞,但错误还是一大堆。”所谓“软件工厂”即是一套克服这种协作混乱的管理方法。 协作难在何处 深知软件协作困难的肖建国认为,直到现在中国人还做不了像Windows 95这样大型的软件。“给再多的钱也做不出来!软件组织机构越大越难管理,大到一定时候就无法控制了,就会出现管不了,失控的局面。” “软件是大家的,我为什么要多操那个心。” 为什么会有这么难?程序员多起来,自然就要有分工,有分工的时候,心态调整问题就会凸现出来:原先作坊式作业的时候,软件是一两个程序员写的,软件写完了,虽然在产权上这个软件或许不是自己的,但程序员心里会觉得这个软件就是自己的,对这个软件的感情就像对自己的儿子一样,关于这个软件一切成败荣辱都被看成是自己的,在这种心态下,程序员会不分白天黑夜地超常投入。而软件“工厂”模式的直接结果是一个软件由几十个、甚至上百个人写,软件写成以后究竟是谁的?有了荣誉是谁的?都不是太明确。同样,软件有点毛病也不专是哪个人的,而是大家的,既然是大家的事情,那就让大家来做,我为什么要多操那个心?但“大家”是一个概念,就像可以拿来一个苹果,不可以拿来一个“水果”一样,“大家”这个概念同样落不到实处,而对软件的责任心却必需落到实处。在这个问题上,肖建国承认“现在我们这里的人勤奋程度要比当初差一些。” 软件越做越大,越做越复杂是不可抗拒的世界潮流,一家软件公司要参与未来的竞争就必需有做大软件的能力,而做大软件就必需要有分工协作,决不能因为协作会降低个人的积极性,协作起来会遇到重重困难就否定协作,那样做等于因噎废食。因此,问题的关键是怎样在分工协作的模式下,最大限度地调动大家的积极性。 在肖建国看来,要调动程序员的积极性问题,首先要在分工上做适当的考虑。“不能咱俩合作,所有的设计我都做完了,叫你去编码,那样你可能会觉得很枯燥,会感到没有发挥你的创造能力。”在方正研究院提倡软件设计部分大家都参与,都有表达创造力的机会。 事物是历史的,方正的软件也不例外,有些软件最初就是一两个人写的,这一两个人会觉得这个软件是他的,会有很多感情,而后来加入开发的程序员则会面临心态融合的问题,后加入的程序员会觉得“我写这个模块,是分配给我的任务,不用想别的,那就做吧。”碰到这个问题,李征的方法是给后来的人创造机会,尽量将年青人推到项目经理、测试经理和支持经理岗位上,让他们感觉到是他们在控制着软件的发展,感觉到是他们自己在做主。 沟通的时候,则鼓励大家把想法都说出来。尽管李征不鼓励名程序员,但他从来不把程序员看成只是完成代码的机器,而是千方百计试图将新加入的程序员变成集体的一分子,让他们感觉到共同完成的软件之中有着自己的一份功劳。 为了培养程序员对软件的感情,李征让程序员开展示会的时候去盯展台,当程序员看到自己写的软件有人买,听到用户在议论自己写的程序的时候,会自然而然地和产品发生关系。 无论在哪里钱都是非常重要的,但是做软件仅仅有钱是远远不够的,还需要培养程序员对企业、对产品的感情,这一点李征深有感触:“后进来的人是在为已有的软件加功能,是在维护软件,他并没有权改造软件,只有权改BUG,这样的工作很繁复,没有什么新意,具有牺牲的意义。”为此,李征坚持给这些程序员高待遇,评项目奖的时候,不分资历想办法多给他们一些荣誉。 机制上,郭宗明认为要保证软件做好了大家全有份,而不光是“头儿”的事。“我们的项目奖不会是平均的,但每个人都有份,同样,软件做不好,大家都砸。” “很显然的事,你怎么就不明白呢?” 分工协作遇到的另外一个大难题是沟通问题,解决这个问题最直接的方法是开会。方正研究院的会议现在越来越多,几个会议室总是塞得满满的。组内的人要经常交流,组和组之间、课题和课题之间、研究所和研究所之间要考虑接口问题、配合问题。开会是容易的,通过会议解决问题却是困难的。讨论交流难免会有争论,这个时候一定要有人站出来仲裁,否则,讨论下去永远不会有结论。 软件是工程,不是理论问题,所以,能够也必需通过仲裁的方式解决分歧,而不是通过进一步的研究分出到底谁对谁错,软件工程花不起研究的时间。对此,肖建国把话说得明白无误:“软件不是算11,11你要说等于3,我非和你争不可,工程问题讨论起来,可能会讨论明白谁更高明,但很多时候是这样也行,那样也行,并没本质的差别,这个时候再固执地争论下去就没意思了。” 沟通困难也有程序员性格和习惯方面的原因,做技术的程序员很容易把自己已经做成的事情看得很简单,觉得没什么好讲,“很显然的事,你怎么就不明白呢?这还用解释吗?”是程序员面对请教最常态的反应,对这样的程序员,肖建国认为要教育他们愿意把自己的想法主动告诉别人,愿意去倾听别人是怎么想的。对于因为保守,不愿意将关键算法和技术告诉别人,关键时候要挟公司长工资的程序员,肖建国会将他开除。 为了从体制上保持充分的沟通,方正研究院将一个组的人数控制在10个人左右,以控制交流的难度,避免花在交流上的时间太多。 在肖建国看来,合理的协作方式应该是先做和别人的接口部分,后做一个人关在屋里也能做好的部分,原因是“自己的事可以通过自己的努力,通过自己加班赶进度,总之是自己的时间好控制,而控制别人总不方便。更为重要的是,自己关在屋里先做,做完以后,发现和别人配合不起来,不仅要返工,还会因为到底是谁的问题和自己的协作者发生分歧和矛盾。” 软件开发管理管什么 几乎所有的管理都先从摸得着、看得见的地方入手,方正研究院对软件开发的管理也不例外,他们首先抓的是文档。 “不写文档就不要在这里干。” 在李征眼里,如果不写文档,就不是一个好程序员,所以,“不管这个程序员多么天才,如果不写文档,我都不要。李征要求“飞腾3.1”的需求分析,就要有三个重要的文档: 第一份是用Excel做的一张大表,表上规定了:飞腾3.1要做多少个功能;每个功能的来源(是报社的需求,还是出版社的需求,或者是上一个版本遗留的问题);对每个需求的描述和优先级别,以及这些功能计划由哪些人来负责。 第二份文档被称为功能式样书。它负责一一对应地对上面那张大表上的每一个功能做进一步的说明,详细阐明功能设计方法和实现方法。如果飞腾3.1有1000个功能,就会有1000份这样的式样书,式样书很详细,有的会长达几十页。 第三份文档是用Project写的进度表,规定飞腾3.1什么时候做设计,什么时候写代码,什么时候提交单元测试。软件飞腾了!开发中每个里程碑都在这里做了规定。 为什么要写这么详尽的文档?肖建国的经验是“写软件不能仅凭嘴说,说完了容易忘,而且,讲话有二义性,软件不能有二义性,所以,该写的东西都要明确写下来。”肖建国另外一个经验是:“想清楚、说清楚和写清楚三者之间有很大的差异性,能写清楚才算把事情彻底搞透了,很多时候是以为自己想清楚了,其实并没有想清楚,所以,需要通过写出来检验一下。” 写这么多文档会不会耽误了写代码的时间?郭宗明认为写文档的时间必需舍得花。“从国外软件开发的经验看,做文档,写注释的时间,就是要比真正编码的时间长。” 只有饱受教训的程序员才会自觉遵守规范 郭宗明感觉广东话唱歌很好听,但他建议大家说普通话,因为方言没办法交流。“软件是大众化的产品,许多快捷键都是公认的,开发约定大家也应该共同遵守,界面是什么风格,变量怎样命名,浮点数怎样命名都要按既定的规范,程序员不能自己另起一套,自己另创一套可能对自己来说很好用,但别人就没有办法理解,没办法交流。” 为统一规范,方正研究院颁发了一套代码编写规范,而真正严格执行的都是那些饱经教训的程序员,因为只有他们才清楚为什么按规范写程序日后才不会出麻烦,不规范的程序员被李征称为“杀手”。“他们知道规范,也觉得规范很有道理,但真正写程序的时候,就会忘记,因为他们没吃够苦头。这个时候只能通过不断地检查他们的程序,强制他们执行规范。”郭宗明发现不写注释或者不按规范写注释的程序员,会坚决要求他补上,因为郭宗明很担心:“一旦这个程序员改做别的项目或者跳槽了,留下一堆天书一样的源程序,谁也看不懂,谁也无法接手,整个项目都会受到影响。” 软件编译应当说是相对容易的环节,但就是这个环节上,李征所在的文字研究所出现过好几次错误。最后,李征下决心制定了一个非常详细的编译规范,规定每一次编译都要按照这个规范执行。 这之后,李征觉得软件公司所做的每一件具体的事情都应该有规范,比方,刻光盘这样的小事,李征也专门找人写了一个规范流程。李征认为,事事有规范不仅可以避免错误发生,实际上还可以节约东撞一下西撞一下所浪费的时间。 关键性算法要说出来 规范是协同工作的基础,真正实现协同工作还需要制度来保证。方正研究院规定项目组的成员一个月必需坐在一起互相汇报一次。 相互汇报有三个显而易见的好处:一、可以增进了解,有效避免调用错误;二、关键性算法说出来,大家可以提一些建议,可能会使算法更加优化;三、可以增进协作的气氛。郭宗明觉得,很多人愿意留在方正不是为了方正的钱,而是为了方正的气氛。“保持心情舒畅很重要,大家彼此处得很好,发现问题会彼此提醒,一个人如果态度很差,大家就会尽可能地躲着他,能绕就绕过去,心里想的是,反正不是我的问题,跟我无关,能不说就不说了。” 要想沟通协作得好,肖建国认为要从最“根上”考虑,“理想的状态是,我们三个人一个课题组,进来第四个人的时候,我们三个都要参与面试,谁看不上眼,他都不能进来。” 越早发现错误损失越小 方正研究院不会将一个模块交给一个程序员,三个月以后再去检查,而是在每一个关键点上检查他的工作,不停地对他的工作做需求评审、设计评审、代码检查、单元测试等等检查工作。 需求评审,发现问题,纠正了,后面就不会错下去,而等到三个月以后,程序员交上来一个乱七八糟的文档,一个不能用的程序,那时候再后悔就来不及了。 有非常自觉、非常优秀的程序员,但不能因此就相信所有的程序员都是自觉和优秀的,人总是有惰性的,尽管每个礼拜都要检查评审程序员的工作,好像对程序员不信任似的,肖建国还是坚持在每个关键点上检查工作,“否则, BUG就没有办法控制,时间进度也没办法控制。” 冲突会发生在哪些环节 用制度和条文将变化较小的事情规定下来是组织管理的基础,根据条件的变化,随时随地解决冲突则是管理的艺术。管理得好与不好,全在处理各种各样矛盾冲突时所把握的火候。在方正研究院第一个需要解决的冲突是 选谁做项目经理 做技术的人很难打心底服气谁,为了让大家都服气,方正研究院过去提拔干部的标准是让技术最强的人做项目经理,这种做法大家比较容易心平气和,但这样做的通病是技术最强的人往往没有管理和项目调控的能力,而软件大规模工程化研发最需要的恰恰不是一个技术骨干自己能多做多少,而是通过有效的管理,调动大家的积极性,把团队的力量发挥出来。 选管理型人才做项目经理,如何平衡技术骨干和做管理的项目经理之间的关系?方正研究院找到的办法是让技术骨干在待遇上到平衡,让技术骨干和做管理的项目经理拿一样多工资,甚至更多,而且,在技术问题上充分尊重技术骨干的意见,负责项目管理的项目经理更多是管理软件开发进度和软件质量。在算法上,作为管理者的项目经理肯定不如很多年青人脑子灵,开发人员想的是新技术,项目经理安身立命的依据则是丰富的开发经验,对软件的总体把握以及对于规范的清楚掌握,两者并不矛盾。 作坊时代已经成为领导的技术骨干,肖建国会给他配一个负责管理的搭档。“技术骨干待遇提上来以后,他会觉得当不当领导也没关系。我技术上很强,比管我的领导拿的还多。这样心态就好了,说话也就心平气和了。”但肖建国同时希望技术骨干记住,“技术骨干所具有的本事是技术上的,行为上还要受管理者的约束。” 真正天才的程序员真要给他官做,他或许还要担心管理会耽误了他钻研技术的时间,所以,在保证待遇的前提下,天才程序员更需要的是给他一个难题来做,让他跨越那个难题。最优秀的人有一种征服的愿望,这个时候项目经理要信任他,不要去干涉他,放手让他去做,只要和他讲:“这个事情非常重要,我们希望你来解决,而且,我们信任你有这个能力”就行了。 技术和管理并不总是矛盾的,在方正研究院就存在着既是编程天才,又是优秀管理者的人,王选说肖建国、郭宗明都是这样的人,这样的人被王选称为最难得的将才。 把程序员从技术的牛角尖里拽出来 无庸讳言,管理和技术更多地还是体现在冲突的一面,有的程序员钻研某一项技术会专得很深,如果这项技术在整个软件里面用的并不是太多,这个时候的钻研就有可能影响整个项目的进度,这个时候项目经理就有责任把程序员从牛角尖里拽出来。另外,技术人员更注重细节,从用户方面考虑的要少,怎么让没用过“维思”系统,没有见过NPM的程序员较多地考虑飞腾向下兼容的问题,对李征来说是一个不小的挑战。 作为软件开发管理者的李征认为,软件公司最忌讳的是,一会儿让这个程序员做这个项目,一会让他做那个项目,而应当让他在一个方向上长期发展。“如果一个程序员在图像方面已经有了一些基础,今后凡是图像方面的工作都应该交给他做,目的是培养他在图像方面的兴趣,他做多了,经验自然就多了,反映出来就是能力的提升,成为这方面的专家,别人遇到这方面的问题都来请教他,他就得到了一种荣誉感和满足感。在文字研究所我们还培养了PS专家、BIG5专家,这样他们就会觉得自己有责任,有义务要把所擅长的领域做好。” 不但开发人员应该保持一个明确的定位,在李征看来,一个部门也应该有自己明确的定位。“文字所曾经做过一个MIS系统,事后我想过,从我们这个部门的定位来讲,文字所不该做这个项目,那是个大型数据库项目,数据库项目并非文字所的专长,为了这个项目,我们生生培养出了一批数据库的人才,做MIS系统的人才。这个项目是日本的项目,做得非常成功,但为此把我们最优秀的人都派进去了,如果把这些人都用到飞腾上,成效未必要比做这个系统赚得少,而且,这个项目如果让别的部门做可能做得更好,文字所的主要任务是做飞腾。” 部门经理谨防越过项目经理直接对程序员指手划脚 部门经理和项目经理的冲突,从部门经理方面来讲,表现为部门经理把持不住自己,总禁不住越级去管理本应该由项目经理负责的项目,直接对程序员指手划脚,吩咐他们做这做那,这种工作的模式容易产生一系列的问题,项目经理会因此产生“那么,还要项目经理干嘛?”的强烈抵触情绪。 合理的做法是部门经理发现问题先和项目经理讲,让项目经理去解决,如果认为项目经理解决不了或者不合格的话,应该把他换掉,而不是越俎代庖地越级替他做管理。 从项目经理方面讲,冲突表现在资源和人力调配上。一个部门的人员、设备和资源都是有限的,而项目经理对好设备、好人员的要求却永远没完,满足不了要求的项目经理自然就会抱怨部门经理。销售部门不了解开发部门为什么会那么迟钝,开发人员觉得市场人员不学无术 对于一家软件公司来说,最多的冲突发生在开发人员和市场人员之间。市场人员身处第一线,受用户抱怨最多,市场人员把问题反馈回来,最希望的是问题能及时得到解决。市场人员通常不太懂技术,所以,他们经常提一些不是那么合适的问题,这样的问题在开发人员看来是如此的愚蠢,开发人员心里经常很不耐烦地愤愤然然:“这种问题也来问我?”一来二去,开发部门和销售部门就产生了隔阂,销售部门不了解开发部门为什么这么迟钝,开发人员觉得市场人员不学无术。 开发人员容易是完美主义者,他们最关心技术,追求使用新技术,市场人员每天都要和用户打交道,最担心的是软件在运行中死机,稳定易用是市场人员最关心的两点。尽管市场人员不关心技术人员到底使用了什么新技术,但他总是希望软件的功能越强大越好,越早推出越好,而技术部门则会担心,功能多了可能要增加风险,强行加班加点可能会出现问题。 郭宗明承认,有时候软件升级和软件中所加入的新功能纯粹是为了市场竞争的需要,“竞争对手产品中有的功能,我们没有,用户就会问为什么没有?尽管用户实际上用不着那个功能。但用户会把这个问题当作一个谈价格的筹码向销售人员提出,这样市场人员就会逼着开发人员开发这些功能。” 程序员需要教育 提及软件“工厂”,提及规范管理,很容易让人将规范与天才对立起来,从而产生规范会不会扼杀了天才,会不会扼制创造的担心? 回答这个问题,先要弄清楚规范是什么?对于软件工程来说,规范是用来保证大规模多人协作开发的一些基本的前提,它的目的不是为了束缚程序员的天才,它的内容也没有伤害到最体现程序天才创造的算法上,在规范面前,程序员丧失的只是一些随意性。 有程序员觉得规范是一种约束,那是因为大家以前在没有任何规范的环境下随意惯了,突然来了一个规范一时难以适应而已。其实随意和天才,和创造完全是两码事。 如何克服随意性,将软件协作所必需的规范变成程序员的习惯,教育是必由之路。教育对程序员来说一开始可能是痛苦的,但是当程序员慢慢将规范变成习惯以后,也就不会觉得规范是一种约束了。 李征认为,要让程序员从心底接受规范,首先要对程序员灌输产品意识,要让每一个程序员都认识到:现在的产品靠个人的能力根本不能够完成,而是要靠管理、团结和正确的方法才能完成。“只有当每个程序员都从心底认为个人英雄的时代已经成为过去,靠一俩个天才打天下的时代已经一去不复返了,他们才会自觉自愿地进行合作,而合作的前提就是必需要有规范,这样原来在程序员心中是条条框框的东西就转变为他自觉自愿的行为。” 实际管理中,郭宗明发现,程序员并非一味地排斥规范和管理,他们不接受的是不规范的管理,不接受的是由于很多漏洞造成很多摩擦的管理。 方正产品过去的毛病是不贴近用户,对于用户提出的改进意见,开发人员麻木不仁的回答是“设计就是这样的,没法改。”程序员之所以会这样说,是因为他们不理解自己一个小小的改进就能够给用户带来极大的方便,极大地提高效率。不理解如果不改,用户用得不高兴,慢慢就会对方正的软件失去信心。 为了让开发人员学会尊重用户的要求,尊重测试的意见。方正研究院安排程序员到用户那里去,而且是经常去,和排版员在一起呆着,让程序员亲身去看排版员是怎样用飞腾,了解排版员用了哪些操作,操作顺序是怎么样的。让程序员知道,用户那样用飞腾,有哪些不方便的地方,需要做哪些改进。假如,飞腾有1000个功能,程序员观察用户实际使用情况,发现用户只用到了200个功能,程序员就可以在这200个功能上精益求精。程序员如果这样写软件,用户必然会越用越满意,越用越高兴。 怎样才算一个好程序员 王选是科学家,但是当王选做完科研以后,他还亲手写了大量的微程序,方正第一代到第四代RIP里面 90的微程序都是王选写的,从这个意义上说,王选也是一名程序员。 写程序,王选坚信,测试只能证明错误的存在,不能证明错误的不存在,所以,“避免错误的最好的方式,就是从一开始就避免错误的引入。程序已经引进了大量错误,靠修改是改不出好程序的。”王选的这个认识源于1960年他在电子部738厂协作的时候,看到美国产的一台小型机全部逻辑设计只有一页纸,一页纸看懂了,这台机器就全部了解了。“从此,我养成了遇到任何事情,都先把它的逻辑关系先列出来,反复思考,而不急着动手去做的习惯。” 王选这种想清楚以后再动手的习惯和他当时设计的算法要以芯片的形式实现有很大关系,现在一个软件出现BUG,可以打个补丁修正,而王选那时候任何一个小的错误都会导致整个专用芯片报废,因此,王选每设计一个芯片,手稿都很厚。 王选说,他当时最累的是一方面要在第一线上拼命,“为一个程序调不出来,为一个隐蔽故障不能发现,要死要活。”另一方面又要做大量的组织管理的工作,“那种劳累是难以形容的,比我现在到外头做做报告,人大开会要累得多。”在王选眼里,好的程序员要拼命才行。 肖建国给好程序员定了四个标准: 一、要有必要的基础知识。“这里所说的必要的基础知识与开发数据库软件所需要的知识和开发字处理软件所需要的知识并不相同。” 二、要有一定的设计能力。“只告之要做什么,不用告之怎么做,就能做出来”的人被肖建国称为有设计能力的人,“怎么做,都要讲得清清楚楚,才能做出来”的人被肖建国看作是没有设计能力的人,肖建国反对只会写代码不会做设计的程序员。“日本少有漂亮的软件,是因为他们剥夺了程序员的创造能力,他们做软件的方式是设计完了,就要完全按照设计编码,日本甚至找一些高中生训练半年,就让他们做程序员,这样的程序员只会完全按照设计编码,不会做任何设计,这种程序员所做的工作其实就是把非常详尽的用自然语言写的设计文档翻译成计算机能够识别的语言而已。”在方正研究院,设计不是神圣不可侵犯的,编码的程序员不但在软件设计的时候,有权提自己的设计思想,在具体编写的时候,也可以提出自己的修改意见。 三、编码习惯要比较好。肖建国和王选一样,主张程序要想清楚以后再动手写。“这种写程序的方法可以把程序一把做成了,很多程序员写程序是想个大概就开始做,觉得车到山前必有路,做一部分,做不下去了,停下来想一想,这样想想做做,做到一大半后,往往会突然醒悟过来,呀!如果开始就那样做就更好了,但这个时候已经做了80,再从头做,时间上不允许了,再说也不愿意费那个工夫,最后只能凑合凑合吧,这个时候程序已经写坏了。一般来说,当程序写完的时候,程序员会把所有的问题都想明白了,要不然他写不完,但到最后的时候再想明白,也没什么用了。” 四、要勤奋。“每天工作八小时的程序员不是一个好的程序员。写程序要有入迷的劲头,关键时候要废寝忘食。 郭宗明心目中的好程序员要具备五种精神:一是团结协作的精神;二是学习的精神。“程序员半年不学习就会落伍。”;三是创新的精神;四是牺牲精神。“所有的程序员都愿意做新产品,但老产品已经卖了出去,就必需要有人为它做维护。”五是关键时刻要有几天不睡觉的“冲锋陷阵”精

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论