"协作"难在何处

直到现在中国人还做不了像Windows 95这样大型的软件。“给再多的钱也做不出来!软件组织机构越大越难管理,大到一定时候就无法控制了,就会出现管不了,失控的局面。” “软件是大家的,我为什么要多操那个心。”

为什么会有这么难?程序员多起来,自然就要有分工,有分工的时候,心态调整问题就会凸现出来:原先作坊式作业的时候,软件是一两个程序员写的,软件写完了,虽然在产权上这个软件或许不是自己的,但程序员心里会觉得这个软件就是自己的,对这个软件的感情就像对自己的儿子一样,关于这个软件一切成败荣辱都被看成是自己的,在这种心态下,程序员会不分白天黑夜地超常投入。而软件“工厂”模式的直接结果是一个软件由几十个、甚至上百个人写,软件写成以后究竟是谁的?有了荣誉是谁的?都不是太明确。同样,软件有点毛病也不专是哪个人的,而是大家的,既然是大家的事情,那就让大家来做,我为什么要多操那个心?但“大家”是一个概念,就像可以拿来一个苹果,不可以拿来一个“水果”一样,“大家”这个概念同样落不到实处,而对软件的责任心却必需落到实处。

软件越做越大,越做越复杂是不可抗拒的世界潮流,一家软件公司要参与未来的竞争就必需有做大软件的能力,而做大软件就必需要有分工协作,决不能因为协作会降低个人的积极性,协作起来会遇到重重困难就否定协作,那样做等于因噎废食。因此,问题的关键是怎样在分工协作的模式下,最大限度地调动大家的积极性。

要调动程序员的积极性问题,首先要在分工上做适当的考虑。“不能咱俩合作,所有的设计我都做完了,叫你去编码,那样你可能会觉得很枯燥,会感到没有发挥你的创造能力。”

事物是历史的,有些软件最初就是一两个人写的,这一两个人会觉得这个软件是他的,会有很多感情,而后来加入开发的程序员则会面临心态融合的问题,后加入的程序员会觉得“我写这个模块,是分配给我的任务,不用想别的,那就做吧。”碰到这个问题,尽量将年青人推到项目经理、测试经理和支持经理岗位上,让他们感觉到是他们在控制着软件的发展,感觉到是他们自己在做主。

沟通的时候,鼓励大家把想法都说出来。不把程序员看成只是完成代码的机器,而是千方百计试图将新加入的程序员变成集体的一分子,让他们感觉到共同完成的软件之中有着自己的一份功劳。

培养程序员对软件的感情,让程序员开展示会的时候去盯展台,当程序员看到自己写的软件有人买,听到用户在议论自己写的程序的时候,会自然而然地和产品发生关系。

无论在哪里钱都是非常重要的,但是做软件仅仅有钱是远远不够的,还需要培养程序员对企业、对产品的感情,后进来的人是在为已有的软件加功能,是在维护软件,他并没有权改造软件,只有权改BUG,这样的工作很繁复,没有什么新意,具有牺牲的意义,为此,坚持给这些程序员高待遇,评项目奖的时候,不分资历想办法多给他们一些荣誉。

分工协作遇到的另外一个大难题是沟通问题,解决这个问题最直接的方法是开会。组内的人要经常交流,组和组之间、课题和课题之间要考虑接口问题、配合问题。开会是容易的,通过会议解决问题却是困难的。讨论交流难免会有争论,这个时候一定要有人站出来仲裁,否则,讨论下去永远不会有结论。

软件是工程,不是理论问题,所以,能够也必需通过仲裁的方式解决分歧,而不是通过进一步的研究分出到底谁对谁错,软件工程花不起研究的时间。软件不是算1+1,1+1你要说等于3,我非和你争不可,工程问题讨论起来,可能会讨论明白谁更高明,但很多时候是这样也行,那样也行,并没本质的差别,这个时候再固执地争论下去就没意思了。

沟通困难也有程序员性格和习惯方面的原因,做技术的程序员很容易把自己已经做成的事情看得很简单,觉得没什么好讲,“很显然的事,你怎么就不明白呢?这还用解释吗?”是程序员面对请教最常态的反应,对这样的程序员,要教育他们愿意把自己的想法主动告诉别人,愿意去倾听别人是怎么想的。

posted on 2005-06-03 10:53  Feelwindy1  阅读(473)  评论(0编辑  收藏  举报