【IT168 专稿】就像战士离不开枪,信息化工作离不开软件。又像信息化让人爱恨交织,软件也是众说纷纭,始终是一个纠缠不清的热门话题。
灰头土脸的软件工程师
日前,甲骨文公司首席执行官Larry Ellison在硅谷邱吉尔俱乐部,出席一次演讲时,对有人提出的甲骨文的文化并不重视软件工程、而是更加重视销售和营销工作的说法颇多愤慨。这位65岁“高龄”的掌门人解释说:“我们是世界上从麻省理工学院和加州理工大学雇用工程师人数最多的公司;我们也是世界上从斯坦福大学、哈佛大学和卡内基•梅隆大学雇用数学家人数最多的公司。软件工程绝对是我们甲骨文公司文化的核心。”意犹未尽的他又补充道:“从表面来看,称我们是一家销售和营销公司的说法就可笑得很,而一些人经常这样写我们。我们公司的精髓就是软件工程。这是我们唯一的法宝。”
笔者认识的,在这家公司供职的朋友中,几乎一水的是营销人员。我还没有机会近距离欣赏这家公司软件工程师的工作姿态,所以不敢妄言。然而,有一点,透过Larry Ellison先生的激动与言表,我可以明确地感知到,包括甲骨文公司在内,许多的IT企业,对软件产品及其研发倍加重视。
与此形成鲜明对照的是,市面上的软件佳作,特别是让客户折腰的实用软件,实在是稀缺。无论是国外的软件厂商,还是国内“大腕”级软件企业,其宣传推介的重点,大多是眼花缭乱的新名词、新概念、新技术,以及新的英文或其他文字的缩写,用户们的感觉还是一脸的盲然,二十几年来,几无变化。这一点,透过软件销售环节看得则更加清楚。以笔者所在行业为例,我就很少听说有哪个客户追着软件公司的屁股,要主动掏钱买他的某某软件。目力所及,多是深陷客户意见与批评、灰头土脸的软件工程师,以及在这些朋友的后面,一个或者若干个更加灰头土脸的软件企业老板。
如何开发软件,这个问题似乎早就解决了。在我们的大学里,就有这类的专门的课程。只可惜,这些经典之作,往往不大好使。或者说,如果它们真的是放之四海皆为准的真理,恐怕这市面上,就不会有那么多不叫座的烂软件了。
实际上,如何开发好的软件,“各村”有各村的高招,而真正解渴管用的,也许就是那么几条。
第一条:打造爱写软件的团队
有什么力量,可以支撑一个人,在孤寂与困难丛生的软件开发道路上执著前行呢?以我的观察,就是从内心深处,喜欢干这个事情。这不是一般意义的喜欢,而是发自内心的喜爱。
对于一个软件公司而言,要想打造好的软件,必须率先网罗这样的一批软件开发人员,打造一个爱写软件的团队。在这个团队里,最好要有若干热爱生活、富有情趣的人士。记得微软就曾专门招聘过一位很会做菜、但对电脑和软件不大在行的女士,她的工作就是“找茬”。也难怪我在用OFFICE软件写东西时,如果突发奇想,总是一试就有,好像人家的OFFICE软件是专门为我这种不太老实的冒失鬼预备的。微软OFFICE这些方便而有趣的暗道机关,兴许就是借这位女士那双生活的慧眼,挑剔、打磨出来的。而真正好用的软件,就像人文关怀一样,总是在细微之处见精神,让人有一种温暖的感觉,并在这种陶醉之中,暗暗地认同了它们。
第二条:尽量多去体验“生活”
与文学创作相仿,软件开发也需要“生活”的底子,需要“体验生活”。同样是体验“生活”。不同的软件公司做派不同,结果迥异。有些软件公司是接了一个活儿,派上仨俩人,揣上本和笔,到客户那里,走马观花一两趟,就美其名曰:“摸过需求”了。
还有更牛的,类似的形式都懒得去走,就信心满满地跟客户说,你这点业务,我们早就做过N多遍了,你们怎么进货、怎么加工、怎么检测、怎么下单、怎么出库、怎么回款,都在我们软件工程师的脑子里。甚至会打开笔记本电脑,给客户看DEMO、说名词、谈理念、授业解惑当先生了。
这就难怪,有那么多的IT项目会流产,有那么多的软件咋看都是“半吊子”。都是这种要命的“摸需求”给“摸出来”的。
体验生活需要一个健康的心态。什么心态是健康的呢?处子之心。就是在进人家门之前,不抱任何成见,将头脑中有关这个行业、这个客户的业务与经验,全部“清零”。从客户的每个岗位、每项业务入手,虚心学习、认真收集有关材料,做好相关记载。
“摸需求”需要选好点,需要多次反复。如果条件允许,甚至要派员深入到客户那里去,与其同吃、同住、同劳动。如果选点不慎,就会摸来许多似是而非甚至是负面的东西,照此开发设计的软件产品,不仅于事无补,还会误了客户的大事。
“摸需求”需要选好时。有时候,朝九晚五式的摸需求,摸来的,只是皮毛,真正的硬通货,往往是在正常工作时间以外。笔者所在行业,为数众多的IT企业在设计建设视频系统时,没有考虑到客户员工会在晚上值机看监控,结果,设计的系统看了就让人闹心,客户员工不爱看,投资效果大打折扣。如果开发人员认识到客户员工长时间夜间工作的特点,在设计时,多加关照,开发的软件和产品就会是另一副样子。
第三条:交几个过硬的“朋友”
俗话说:隔行如隔山。这话真的不假。现如今,应用软件行业细分渐成时尚,相当比例的行业软件提供商,专司某个行业,大搞纵向开掘。这为积累行业经验、精确把握客户需求、开发好软件创造了条件,但是,在这个世界上,从来就没有两片相同的树叶,至于企业,即使是某一行业的企业,也会有诸多的不同。眼下,中国的企事业单位,包括政府部门在内,不像西方发达国家,规范化管理水平普遍不高,这就造成了大量的差异,增加了软件研发人员摸需求、搞开发的难度与风险。一个软件研发团队再善于学习,再善解人意,再会摸需求,也会有隔靴搔痒之感,也会有摸不清门道的情况。
要解决这个难题,一个现实的办法就是:在摸需求的时候,在工作过程中,边摸需求,边“摸人头”。尽量在客户的每个岗位、每项业务,都找到几个“明白人”,尽量把人家的尊姓大名、联系方式登记在册,想方设法跟人家“套词”,跟人家交朋友,成“铁磁”。要尽全力,将这些朋友凝聚成软件公司的一个不在编的“研发顾问团队”。现在有个名词叫“外脑”,可以形象地说明这个研发顾问团队的重要性。
要尽可能地与这些朋友保持持续性的接触和交往。因其不仅在摸需求、搞研发的前期、中期、后期有重要价值,在项目结束后,他们也是软件公司不可多得的情报员、项目源。这是后话,不再赘述。
第四条:多看客户的“家底”
如今,信息化早已不是什么新名词了。许多单位,或多或少,都有了一些信息化的积累。这里,不妨将其称为客户的“家底”。有人说,一张白纸好做文章,客户这张纸已经被人家捷足先登,画了个乱七八糟,“夹生饭”的生意不好做。我对此持保留意见。首先,这个世界,拿到软件订单本已实属不易,许多软件公司鲜有挑三拣四的实力与底气,也就没有资格在这个问题上挑剔,其次,客户的家底子,对于新的软件研发团队而言,正是一份难得的参照物。从中,我们可以看到许多有趣的名堂,也可以此为靶子,从客户那里,探出许多深层次的需求与想法。有些功能,甚至不用花太多的心思,就可“拿来主义”解决问题。这不是白拣了一个便宜吗?
所以,对客户的家底,一定要多加留意。怎么留意呢?依笔者管见,一要多打听。客户之所以要上马你张罗的这个项目,有时候,想法是蛮复杂的。软件公司人员要想方设法,在保护客户利益(包括隐私)的前提下,让客户更多地亮出家底。这些家底,包括在用的信息化项目,也包括那些半拉子工程,甚至是失败的压厢子底的工程。二要透过家底看门道。看了人家的软件,还要了解客户对它的看法。是认同,还是反对,抑或是部分地认同,这里面都有许多的潜台词。要通过深入的交流、持续的交往,把客户的心思揣摩透。这些心思,对现有软件的开发建设,意义重大,甚至是决定研发方向的大问题。许多时候,软件公司针对一个项目,要向不同层级、岗位的多个人员咨询了解,以求兼听则明。三要认真分析。要分辨出其中的可取之处、败笔与短板。不仅要从这些家底子中直接“抖落”出“硬通货”,还要从客户的多维的评价中,间接发现“猛料”。四要扬弃借鉴。扬弃就是在新软件研发中,要对现有软件产品中的亮点、成功之处,加以引进,或在改进后引进,回避其负面的东西。借鉴就是吸取其成功的思想和正反两方面的经验教训。
第五条:妥善运用研发团队自身的行业积累
前面提到,要以处子之心去客户那里摸需求,这与本条建议并不抵触。软件开发,如果不注意运用行业积累,大玩“老熊掰棒子”,是很难迅速把握并驾驭客户需求的,更别说写出过硬的好软件了。经验永远是我们的一笔宝贵财富。本文只是想提醒诸位朋友,要注意把握其运用的艺术。如果在前期摸需求的时候,瞒脑子都是你的固有经验,就会有意无意地拒客户需求的特殊性于“门外”,在其他研发阶段,则要大着胆子提炼经验为新项目所用。要将相关行业的成功“打法”,通过软件开发,移植到新的项目中来,以此带给客户软件的价值。
某软件公司接手一个项目后,发现客户在异构数据库间汇集数据颇具挑战性,老系统的解决方案,基于XML文档,借助专门程序完成此项业务,但是效果不甚理想。新的研发团队中,有两位工程师曾在实施另一项目时,专门研究解决过这类问题,经过研究,他们借鉴了这一成功作法,借助数据库技术,直接实现数据汇集。新项目实施后,问题得到妥善解决,客户反响良好。这个例子,恰恰能够说明,行业积累妥善运用的重要性。
第六条:持续的互动与打磨
软件开发到一定阶段,一定要记得,及时与客户见面。通过见面,及时听取客户的意见和建议,了解客户的感觉,厘清客户的真正需求。这既是软件开发的一种具体方法,也是一项重要的工作策略。
限于工期和成本的考虑,软件企业老板,主观上往往不倾向于过多地与客户的接触与互动。软件工程师,对自己辛辛苦苦开发出的软件产品,也有一种“母爱情节”,面对客户正面的评价,心里尚可接受,对负面的评价,则容易滋生抵触情绪。一款软件,从动手,到成熟,无论开发人员多么历害,多么不情愿听到客户指摘,往往也要经历多次的调整,有时候甚至是颠覆性的调整。开始的时候,开发人员大多还能沉得住气,越往后,往往越难保持心态的平衡,所以,许多时候,软件研发人员都容易被负面情绪所包围,这就需要企业管理者和研发团队,能够注意到软件开发人员的心绪变化,建立起有效的疏导机制,使这些负面情绪不至于影响工作。笔者注意到,在微软、Google等软件企业,都设有“咖啡机文化”,中国华为公司还定期召开带有对立性质的会议,允许员工畅谈反对意见、发泄不满情绪,然后再召开团结性会议,统一大家思想,消除对立情绪。这些作法,值得有志于成长为优秀软件公司的朋友们参考和借鉴。
我认识一些端软件开发饭碗的朋友,也乐于与其交流。说实话,他们都是十分聪明、十分敬业的英雄好汉。其中不乏成熟者,一个重要的标志,就是面对客户的批评和指责,他们能够耐住性子,不急于辩解。有时候,即使明知道客户的意见是片面的,他们也乐于洗耳恭听,不轻易打断。他们知道,即使在客户片面的意见里也有金子。打断、辩解,也许金子就没有了。如果实在需要解释,他们会选择放在最后,比如第二天,他们会主动打过电话来。而在这段时间里,他已经多多少少地从客户的意见里,了解到一些新的情况,或者吸取到一些有价值的东西。
即便是璀璨夺目的钻石,都需要精心的打磨。要想打造出惊世骇俗的好软件,更是离不开研发人员与客户的反复玩味与痛苦的打磨。这种打磨,往往是在软件交付客户使用之前,有时是在试用的过程中,也有延续到正式上线使用之后,甚至项目合同期满的。如果不幸真的延续到项目合同期满了,我倒要恭喜你了:新的商机已经在向你招手,可不要嫌麻烦,置之不理噢。
要炼出好的软件,一定还有许多的门道有待揭示,比如,要注意细节的处理,要符合人体工学原理,要融入人文关怀,等等。限于篇幅,这里不便一一阐述。相信有志于此道的朋友们,会和我一道,共同研究、探索的。