程序员代表着技术的拥有者,比起其它的人群,他们拥有更强大的力量,甚至可以说拥有的是那个传说中点石成金的金手指。然而,过渡的迷恋技术也让很多程序员无法获得那段秘诀,本书将讲述那些已经找到秘诀的程序员的故事,并帮你分析他们是如何找到秘诀的。
闫辉 著
目录
前言
第一章:程序员为什么需要商业意识
第二章:与客户沟通 建立商业意识
第三章:软件收费和盈利模式的转变
第四章:软件创业模式中的商业意识
第五章:商业意识与软件道德
第六章:依靠商业意识在软件领域挖掘新商机
第七章:开发你的商业意识
第八章:企业中的商业意识
后记:程序员职业成长
第二章
与客户沟通 建立商业意识
创立威速科技的清华毕业生在开始的时候,一个设计的方案获得了香港某投资机构的青睐,获得了一定的天使投资基金。于是他们认为自己的产品肯定会受到用户的喜爱,带着这样的想法,他们将自己的视频会议产品1.0版本展示给客户。客户看了之后说:“你这个产品微软的NetMeeting不是都提供了吗?你们和他们的有什么不一样?NetMeeting是一个免费的产品,我为什么要选择购买你们的产品?”这些问题当时曾经让总经理叶滨无言以对。后来,我们终于理解了,原因一个技术和产品之间存在着如此大的差距,让用户购买是需要提供足够的说服力。即便这样,他们仍然在更新的几个小版本之后一套产品都没有销售出去。直到2.0版本出来后,提供了多方混音会议,支持各种文件格式的白板功能等增强的功能,这才获得了用户的初步首肯。到现在,叶滨说:“这是我创业中的转折点。”
而现在,当你在创业之前就了解到了这些必要的决定因素的时候,再去衡量一下自己的方案。你所面对的客户群是谁?他们为什么要使用你的服务?他们会为哪些服务付费?市场上有没有类似的产品?他们的功能怎样?缺少哪些客户需要的功能?未来的竞争态势如何?等等问题,只有当你把这些因素统统考虑过一遍之后,在返回头衡量一下自己的出发点,或许那时你将对自己的产品有了更加清醒的认识。
Magic C++是两位程序员的作品,它是一款在Windows平台可以可以多人开发Unix程序的开发环境,当初创始人之一的张涛在电信部门工作的时候便深受Unix开发环境不便之苦,而另外一位创始人戴晓东同样也经历过这样的问题。于是两个人辞去了自己舒适的工作,埋头到了广州一个城乡结合部开发软件。两个人做了将近两年,在这过程中,他们没有任何其它的娱乐和消遣,写代码、吃饭、睡觉就成为了生活的全部,到最后两个人的神经几乎在紧绷中崩溃。我们在这里的确是要为他们对技术的痴情而致敬,但返回头了解一下他们当初所做的决定,也比较容易发现其中存在一些冲动的成分。用周鸿袆的话说:“这个市场是一个窄众市场,用户群很小,而且中国的客户还没有为开发工具付费的习惯,因此建议在国外销售。”当然,现在Magic C++也在稳步的发展,但当初如果能够更好的考察一下市场,或许可以取得更好的成功。
2.1 开发的软件不是程序员自己用的
曾经有人描述求伯军当时编程水平的厉害,看到一个软件,觉得不好用,于是自己动手写了一个。估计很多编程高手都经常会产生这种冲动。然而,当我们仔细衡量一些他们的动因时,会发现原来他们是要给自己写软件,而不是写给用户使用。
记得当时金山推出“用户使用体验实验室”的时候,还颇为骄傲的宣传了一把。因为,从中可以观察用户的使用习惯。我想这可能是雷军从各种媒体的报道中发现了这样一点:有公司将用户使用软件的一举一动都记录下来,然后分析用户的使用习惯,进而改善用户的使用体验。在VB之父的书中,也阐述重要性。
然而,对许多程序员来说,仍然无法站在用户的角度看软件的使用。我曾经使用过一套网上调查系统,系统的功能颇为强大,可以做出各种层次,可以支持各种数据类型的调查。但令人伤心的是,整个系统的安排和命名极其混乱,我想也只有开发人员才能明白为什么要起那样的名字吧。当输入数据后,如果出现错误,也会返回一些令人丈二和尚摸不着头脑的提示。我每次使用,都要极力的回忆其使用方法,即便如此,也不能保证一次成功。这让我对整个系统充满了恐惧感和不信任感。在CSDN的新闻后台中,一个非常简单的功能,但用户提交新闻后,应该可以给出新闻的生成页面,然而CSDN的新闻后台给出的却是一个修改页面,要想查看,需要到前台访问一个很长很长的动态地址才能够获得,这样一个简单的修改竟然经过三年的时间才修正过来。因为每次提这个需求的时候,开发人员总会说很忙,既然能够实现整个功能,干吗还要修改。
现在担任瑞星高级副总裁的IT资深人士毛一丁也讲述过他的亲身经历。当时,珠海金山在开发WPS 97的产品,请毛一丁前去做最早的用户提建议,毛一丁非常仔细的使用过后,写了满满的一页意见,但很多开发人员看后,不以为然。比如,毛一丁提出为什么没有很常用的“字数统计”功能,开发人员拿过鼠标,经过一番操作,把结果显示在屏幕上,然后说这不是可以实现嘛?而对另外一些功能,开发人员认为自己很煞费苦心的做到了鼠标右键上,但毛一丁很尖锐的指出大部分用户是不知道使用右键的。所以说,尊重用户的使用习惯,对于程序员来说,这是必须要上的一课。
2.2 玩技术与利用技术
让程序员感到最为骄傲的事情是什么?那肯定是自己做出的技术在别人的面前进行炫耀。就像当初卡马克做出新的三维游戏技术时,整个世界都为之疯狂,这是一个技术人员能够达到的最终幻想。不过,对大部分程序员来说,这样的高度是无法企及的,但这并不妨碍他们来show一下自己学会的技巧。
我认识一位在Dos时代的技术人员,他在别人只会用拼音输入法的时候学会了五笔输入法;在别人只会用UCDOS的时候,他可以解密WPS文件,在别人会用CCED的时候,他可以拿着打印的长长的用C语言写的Menu的实现代码炫耀。然而,到了今天,仍然对自己掌握了某一个技术感到沾沾自喜。其实,这样的技术人员应该也不在少数,甚至有些人只不过五十步笑百步罢了。
这并不能怪他们,因为在最初软件开发进入中国的时候,各方面的技术资料少的可怜,尤其是当Dos向Windows编程过渡的时候,微软有很多API并没有公布,在那个时候,可能一个产品的核心依靠的就是比别人多了解一个API或者一个钩子的机制。蒋涛曾经讲过金山词霸的开发,其实只不过是因为他们直到如何利用一个钩子机制从程序中截获信息并进行翻译的处理,但就是这个技术,事实上造就了如此大的一个产业,也造就了几位的百万富翁。而对王志东来说,也是靠剖析了Windows系统中的DLL文件实现了对Windows平台的汉化,并由此诞生了一个畅销的中文之星软件。而瑞星的崛起也是因为刘旭将流行的Word宏病毒的查杀机制做了出来,便一下子打开了市场。那个时候,这些人被称为高手,因为他们掌握着某些关键性的技术。甚至可以说,不一定是技术,有可能只是技巧。
然而,现在随着互联网的兴起,技巧的价值变得越来越小,遇到一个难题,用搜索引擎搜索一下,一般都可以找到答案。实在不行,到论坛中发一个请求,也经常会有高手告诉你答案。一个人掌握某种技术技巧变得越来越不重要了。说到这里,我们可以讲一个小插曲,这便是微软最早评选MVP(社区最有价值专家)的时候,在CSDN上根据专家分来进行判断,也就是谁回答的问题最多,谁就是专家。当CSDN通过检索把名单给微软之后,在第一次见面会上,令大家跌破眼镜的是,第一名是一个女生,而且她不太编程。当询问她经验的时候,她说每次看到问题,她就会先用搜索引擎搜索一下,如果中文找不到,那她就用选择一些关键词搜索英文的网站,这样一般都会有人回答,这样答案就出来了,而且很多都是英文的答案,这也让很多网友感觉这的确是一个高人,因为这些问题都是用英语回答的。了解了这一切,令人恍然大悟,除了看到一些程序员的懒惰之外,也可以感受到技巧已经不再成为衡量一个程序员水平高低的门槛了。
这个时候,考察一个程序员的价值除了其技术的深度和广度之外,是否能够看到技术之上的商业价值,是否能够拥有商业的意识便变得更为重要。这时,如果作为一个程序员,仍然整天为了获得了某个技巧而炫耀的话,相信无法取得更大的成绩。
玩技术还有一层含义,就是迷恋最新出现的技术,一旦有了新的进展,就要下载尝试一下,或者安装一下玩玩。曾经有一次我们被某公司邀请参加他们的一个技术研讨会。会上有两组开发的团队,一组是原有的技术开发团队,另外一组是最新组建的,而且要准备以.NET技术进行开发,当时.NET还是一个新兴的技术,有人给戴习为老师推荐了一位工程师,这位工程师号称对.NET技术很精通。然而,当在会议上这位工程师讲述了自己准备用.NET做产品的构想时,原有的开发团队问到了很多系统设计层面的内容,这位工程师几乎无法应对,因为他只是玩了.NET技术,对于这样的技术在商业上的应用却没有经验。会后,戴习为老师也表示:“尽管他对微软的.NET技术有一定的了解,但的确经验还缺乏很多。”后来这位工程师发展的还不错,进入了微软开发合作部,专门用来讲述微软最新出现的技术,想来这也与他自己的爱好挂上了钩,也是一个不错的选择。不过,这样的职位毕竟只是少数,对大多数程序员来说,玩技术并不能给他带来更高的价值。
前两天,这位工程师又在自己的blog上提到,他用微软最新开发平台内置的屏保程序制作了一个自己的屏保,演示给同事看,同事感觉很新奇。当我看到这条Blog,感到一丝苦笑:玩技术而已!
玩技术的另外一个后果便是容易迷失方向。在Dos时代,技术的种类很少,程序员面前的技术方向也很少,玩也容易玩出深度。但随着Windows平台,尤其是网络出现后,各种技术层出不穷,即便是水平再高的程序员也很难兼顾几种技术领域。如果不能够对技术发展的来龙去脉有深入的了解,就很容易限于技术的表面理解,也就很容易造成程序员不知道如何选择要继续下去的技术,丢了西瓜,拣了芝麻。于是会出现论坛中“到底是什么技术好,到底应该选择那种语言的疑问。”按照大部分过来人的解释,其实只要选准一条技术路线,真正的钻进去,自然会取得好的效果,因为不同的技术之间是相通的。微软工程师孙展波在回答程序员 “做技术到底应该做深还是做广?”的疑问时,毫不犹豫的表示:“应该做深,而在广度的方面每周抽出一些时间了解一下就足够了。尤其是在现在互联网如此方便,网上信息量如此庞大,专业类网站密布,检索极其方便的情况下,想要获得任何资源都是一件并不复杂的事情。”
而且玩技术还有一个结果,就是容易忽略用户的需求。技术酷是一件很棒的事情,但这并不能保证持续的生存。尽管硅谷曾经以看哪个公司做的技术最酷而吸引程序员的关注。比如最初的是苹果的技术最酷,后来出现了Netscape这种做浏览器的公司给人感觉技术很酷,随后SUN公司推出Java语言的兴起,Java技术变得很酷,但现在,Google搜索引擎成为了最酷的技术。因此,技术本身仅仅注重酷的感觉是远远不够的。趋势科技的创始人张明正和陈怡蓁女士合著的《挡不住的趋势》一书中便提到,开始趋势的文化是要做最酷的技术和产品,但随着公司发展到一定的阶段,他们发现仅仅这些并不能保证公司的持续发展和客户的认同,而真正了解和分析用户的需求才是更重要的。“我们公司将从一个酷技术的公司转变为满足客户需求的公司。”,这是他们十多年做公司的总结,而处在软件公司中的程序员自然应该从中得到某些启示。
2.2 避免坐井观天
美国的民主党和共和党两大党派,双方竞争的时候相互攻击乎,但这并不妨碍他们互相接受对方的某些观点和主张,事实上,在执政的时候,这两大政党的很多作法也都是一样的。但对于技术领域的程序员来说,很多人却将不同的技术看做势如水火:我是Java程序员便鄙视.NET的一切,我在微软平台上开发便不了解任何Java技术的发展。
程序员对技术的爱狠本来是一件非常常见的事情,但如果硬要把这种感情夸大的表示出来,或许将来给自己的也是难堪。曾经以一篇《写程序不如卖鸡排》短文备受瞩目的台湾地区著名的技术作家蔡学镛最初是一位Java坚定的支持者,在他《Java夜未眠》中,便对.NET技术进行了一遍又一遍的讥讽,诸如“Java是.NET的爹”等语言表明了作者的鲜明态度。然而,就在书发表不到一年,蔡学镛表示,“了解.NET越多,越觉得这也是一项了不起的技术,它有很多的独创和更高明之处”这样的观点,逐渐的,他转向了.NET平台,成为了这个平台上的技术作家。如果我们说一个人的世界观可以改变的话,程序员的技术观当然可以改变,但这种改变中最好不要给人留下很多“坐井观天”的言论。
国内某Java网站的站长也是一位Java的死党,有一次,我们组织了不同领域的专家一起座谈,一位是.NET的专家,一位是做.NET移植Java技术的专家,这位站长也参加了,但可能是由于经验和知识的缺乏,在讲述的过程被批驳了一番,这让这位专家十分恼火,于是回去后在自己的一亩三分地上大骂那位.NET的专家。我也认为,这是一种坐井观天被揭露后的恼怒。而且,后来这位专家还发生过另外一件事情,这就是为了显示自己支持开源,于是也在SourceForge上提交了一个自己做的项目,但却遭到了一堆人的狂骂,原因是他开源的项目竟然是用Jbuilder写成的,在国内可以盗版Jbuilder,但在国外这是需要很大一笔钱购买的开发工具,一个不懂得开源内涵的人来做开源的事情,是不是坐井观天?
即便在我们编辑部内部也发生过这样的事情,当时杂志曾采访了一家做中文分词技术的公司写了一篇报道,但一位技术编辑以自己认识在做分词技术的人员为理由,坚决认为这个采访是夸大的,他做的并不是最好的技术。在这里,他的评判标准是因为原来他接触过一个做这样技术的人,感觉做的很棒了,已经不可能再超过这种技术了。岂不是,在市场环境下,这家做中文分词的公司早已经超越了单纯的中文分词算法技术,他们已经在用工程化的手段提高分词的效果了,单纯的技术层面的比较在这家公司的眼中只是产品化的一个方面而已,更重要的是以面向市场,客户为导向的方式来做技术。连IBM原软件中心的总经理,现任中兴公司技术副总裁都承认这家公司在中文分词技术上是最领先的,作为一个普通的技术编辑,又怎能拿着自己坐井观天的想法来评判呢。
技术是互通的,但同时又是有疆界的,面对自己不熟悉不了解的技术,谦虚的听是最好的方法。而凭借自己模棱两可的了解便做出谁的技术好,谁的技术不好的作法是需要不断修正的。