作为软件开发管理者的李征认为,软件公司最忌讳的是,一会儿让这个程序员做这个项目,一会儿让他做那个项目,而应当让他在一个方向上长期发展。“如果一个程序员在图像方面已经有了一些基础,今后凡是图像方面的工作都应该交给他做,目的是培养他在图像方面的兴趣,他做多了,经验自然就多了,反映出来就是能力的提升,成为这方面的专家,别人遇到这方面的问题都来请教他,他就得到了一种荣誉感和满足感。在文字研究所我们还培养了PS专家、BIG5专家,这样他们就会觉得自己有责任,有义务要把所擅长的领域做好。”
不但开发人员应该保持一个明确的定位,在李征看来,一个部门也应该有自己明确的定位。“文字所曾经做过一个MIS系统,事后我想过,从我们这个部门的定位来讲,文字所不该做这个项目,那是个大型数据库项目,数据库项目并非文字所的专长,为了这个项目,我们生生培养出了一批数据库的人才,做MIS系统的人才。这个项目是日本的项目,做得非常成功,但为此把我们最优秀的人都派进去了,如果把这些人都用到飞腾上,成效未必要比做这个系统赚得少,而且,这个项目如果让别的部门做可能做得更好,文字所的主要任务是做飞腾。”
部门经理和项目经理的冲突,从部门经理方面来讲,表现为部门经理把持不住自己,总禁不住越级去管理本应该由项目经理负责的项目,直接对程序员指手划脚,吩咐他们做这做那,这种工作的模式容易产生一系列的问题,项目经理会因此产生“那么,还要项目经理干吗?”的强烈抵触情绪。
合理的做法是部门经理发现问题先和项目经理讲,让项目经理去解决,如果认为项目经理解决不了或者不合格的话,应该把他换掉,而不是越俎代庖地越级替他做管理。
从项目经理方面讲,表现在资源和人力调配上。一个部门的人员、设备和资源都是有限的,而项目经理对好设备、好人员的要求却永远没完,满足不了要求的项目经理自然就会抱怨部门经理。
对于一家软件公司来说,最多的冲突发生在开发人员和市场人员之间。市场人员身处第一线,受用户抱怨最多,市场人员把问题反馈回来,最希望的是问题能及时得到解决。市场人员通常不太懂技术,所以,他们经常提一些不是那么合适的问题,这样的问题在开发人员看来是如此的愚蠢,开发人员心里经常很不耐烦地愤愤然然:“这种问题也来问我?”一来二去,开发部门和销售部门就产生了隔阂,销售部门不了解开发部门为什么这么迟钝,开发人员觉得市场人员不学无术。
开发人员容易是完美主义者,他们最关心技术,追求使用新技术,市场人员每天都要和用户打交道,最担心的是软件在运行中死机,稳定易用是市场人员最关心的两点。尽管市场人员不关心技术人员到底使用了什么新技术,但他总是希望软件的功能越强大越好,越早推出越好,而技术部门则会担心,功能多了可能要增加风险,强行加班加点可能会出现问题。
郭宗明承认,有时候软件升级和软件中所加入的新功能纯粹是为了市场竞争的需要,“竞争对手产品中有的功能,我们没有,用户就会问为什么没有?尽管用户实际上用不着那个功能。但用户会把这个问题当作一个谈价格的筹码向销售人员提出,这样市场人员就会逼着开发人员开发这些功能。”
提及软件“工厂”,提及规范管理,很容易让人将规范与天才对立起来,从而产生规范会不会扼杀了天才,会不会遏制创造的担心?
回答这个问题,先要弄清楚规范是什么?对于软件工程来说,规范是用来保证大规模多人协作开发的一些基本的前提,目的不是为了束缚程序员的天才,它的内容也没有伤害到最体现程序天才创造的算法上,在规范面前,程序员丧失的只是一些随意性。
有程序员觉得规范是一种约束,那是因为大家以前在没有任何规范的环境下随意惯了,突然来了一个规范一时难以适应而已。其实随意和天才,和创造完全是两码事。
如何克服随意性,将软件协作所必需的规范变成程序员的习惯,教育是必由之路。教育对程序员来说一开始可能是痛苦的,但是当程序员慢慢将规范变成习惯以后,也就不会觉得规范是一种约束了。
李征认为,要让程序员从心底接受规范,首先要对程序员灌输产品意识,要让每一个程序员都认识到:现在的产品靠个人的能力根本不能够完成,而是要靠管理、团结和正确的方法才能完成。“只有当每个程序员都从心底认为个人英雄的时代已经成为过去,靠一两个天才打天下的时代已经一去不复返了,他们才会自觉自愿地进行合作,而合作的前提就是必须要有规范,这样原来在程序员心中是条条框框的东西就转变为他自觉自愿的行为。”