实际管理中,郭宗明发现,程序员并非一味地排斥规范和管理,他们不接受的是不规范的管理,不接受的是由于很多漏洞造成很多摩擦的管理。
方正产品过去的毛病是不贴近用户,对于用户提出的改进意见,开发人员麻木不仁地回答是“设计就是这样的,没法改。”程序员之所以会这样说,是因为他们不理解自己一个小小的改进就能够给用户带来极大的方便,极大地提高效率。不理解如果不改,用户用得不高兴,慢慢就会对方正的软件失去信心。
为了让开发人员学会尊重用户的要求,尊重测试的意见,方正研究院安排程序员到用户那里去,而且是经常去,和排版员在一起待着,让程序员亲眼去看排版员是怎样用飞腾,了解排版员用了哪些操作,操作顺序是怎么样的。让程序员知道,用户那样用飞腾,有哪些不方便的地方,需要做哪些改进。假如,飞腾有1000个功能,程序员观察用户实际使用情况,发现用户只用到了200个功能,程序员就可以在这200个功能上精益求精。程序员如果这样写软件,用户必然会越用越满意,越用越高兴。
王选是科学家,但是当王选做完科研以后,他还亲手写了大量的微程序,方正第一代到第四代RIP里面90%的微程序都是王选写的,从这个意义上说,王选也是一名程序员。
写程序,王选坚信,测试只能证明错误的存在,不能证明错误的不存在,所以,“避免错误的最好的方式,就是从一开始就避免错误的引入。程序已经引进了大量错误,靠修改是改不出好程序的。”王选的这个认识源于1960年他在电子部738厂协作的时候,看到美国产的一台小型机全部逻辑设计只有一页纸,一页纸看懂了,这台机器就全部了解了。“从此,我养成了遇到任何事情,都先把它的逻辑关系先列出来,反复思考,而不急着动手去做的习惯。”
王选这种想清楚以后再动手的习惯和他当时设计的算法要以芯片的形式实现有很大关系,现在一个软件出现BUG,可以打个补丁修正,而王选那时候任何一个小的错误都会导致整个专用芯片报废,因此,王选每设计一个芯片,手稿都很厚。
王选说,他当时最累的是一方面要在第一线上拼命,“为一个程序调不出来,为一个隐蔽故障不能发现,要死要活。”另一方面又要做大量的组织管理的工作,“那种劳累是难以形容的,比我现在到外头做做报告,人大开会要累得多”。在王选眼里,好的程序员要拼命才行。
一,要有必要的基础知识。“这里所说的必要的基础知识与开发数据库软件所需要的知识和开发字处理软件所需要的知识并不相同。”
二,要有一定的设计能力。“只告之要做什么,不用告之怎么做,就能做出来”的人被肖建国称为有设计能力的人,“怎么做,都要讲得清清楚楚,才能做出来”的人被肖建国看作是没有设计能力的人,肖建国反对只会写代码不会做设计的程序员。“日本少有漂亮的软件,是因为他们剥夺了程序员的创造能力,他们做软件的方式是设计完了,就要完全按照设计编码,日本甚至找一些高中生训练半年,就让他们做程序员,这样的程序员只会完全按照设计编码,不会做任何设计,这种程序员所做的工作其实就是把非常详尽的用自然语言写的设计文档翻译成计算机能够识别的语言而已。”在方正研究院,设计不是神圣不可侵犯的,编码的程序员不但在软件设计的时候,有权提自己的设计思想,在具体编写的时候,也可以提出自己的修改意见。
三,编码习惯要比较好。肖建国和王选一样,主张程序要想清楚以后再动手写。“这种写程序的方法可以把程序一把做成了,很多程序员写程序是想个大概就开始做,觉得车到山前必有路,做一部分,做不下去了,停下来想一想,这样想想做做,做到一大半后,往往会突然醒悟过来,呀!如果开始就那样做就更好了,但这个时候已经做了80%,再从头做,时间上不允许了,再说也不愿意费那个工夫,最后只能凑合凑合吧,这个时候程序已经写坏了。一般来说,当程序写完的时候,程序员会把所有的问题都想明白了,要不然他写不完,但到最后的时候再想明白,也没什么用了。”
四,要勤奋。“每天工作八小时的程序员不是一个好的程序员。写程序要有入迷的劲头,关键时候要废寝忘食。