《我十年的程序员生涯》系列之二:我写BITLOK的这七年
1989年8月,大二暑假,我和王全国合作写了我的第一个正式作品BITLOK 加密软件,主要用来保护软件的知识产权,防止盗版的。当时,他毕业留校了,在校办的一家电脑销售公司工作,我们就是利用晚上和周末时间在他们公司的电脑上完成的产品研发。1991年我写了BITLOK第二个版本,1996年我在休假的时候写了BITLOK 3.0。后来BITLOK市场萎缩了,我就没有再开发了。
在当时,BITLOK小有名气,不少知名的软件公司购买了我们的产品,比如用友、金山等。写BITLOK的时候,没有想过挣多少钱,只是因为自己喜欢。据王全国最近的回忆,写完BITLOK 0.99后,他把公司给50元的加班费给了我。算起来,这是我写BITLOK挣的第一笔钱。没有想到的是,后来BITLOK卖得还不错,我们居然赚了上百万元。这是我人生赚的第一桶金。
附上我在1996年5月在BBS上写的关于BITLOK的开发过程,纪念我十年的程序员生涯。
我写 BITLOK 的这七年
1996年5月写于金山西点BBS
BITLOK 是我和朋友业余开发的加密软件。我参与开发是从八九年开始的,已有七载,BITLOK 也从最初的 0.99 版升到了现在的 3.0 版。对于人生旅程,七年不算长,但作为一个小产品的开发来说,也不算短了。这七年里,我尝遍一个产品开发过程中的酸甜苦辣,借此文叙叙其中滋味。
八七年我上了武汉大学计算机系,从第一门计算机专业课开始我就迷上了电脑,热度远超过以前着迷过的集邮、围棋等。自从学电脑后,我也似乎没有了别的爱好,电脑成了我当时生活中的唯一。我不再拥有宿舍里漫无边际的侃山和图书馆里东逛西看的闲暇,也不再拥有晚自习的宁静和周末电影院的热闹,为了学电脑甚至不惜经常逃课。
我学电脑是从“泡机房”开始的。那个年代,计算机还没有现在这么普及, 计算机系机房 PC 机全部不超过十五台,上机自然紧张。我的解决上机问题的诀窍就是“泡”,每天呆在机房里磨蹭。我最好的运气就是别人不来,有空的机器;如果有人不懂,我也可以借指导之机用一会;实在不行,就坐一边看看热闹。 “泡机房”也是一件很痛苦的事,有时候遇到不好说话的机房管理员,死活就是不让你进去。一般想泡机房就必须提前一个小时去在门前排队,武汉的冬天是没有暖气的,非常冷,但机房里又必须穿拖鞋,我们机房旁边就是一个风口,在机房门前穿拖鞋等上一个多小时就已经冻得直哆嗦,但我还是乐此不疲。后来我去得太频繁,以至于后来机房管理员见着我,不问有没有上机票就往外轰。
学电脑的机会就是如此不容易,以至现在电脑随便用的时候,玩游戏仍然觉得有点浪费时间。
一、步入开发旅程
刚开始,我自嘲过 BITLOK,谓之“雕虫小技”
大二的下学期,当时想学的东西都学得差不多了,就有了一种特别强的表现欲望:可不可以写点什么软件,让大家都来用。当时我认为,在国内做软件,一定要掌握中文处理和加密这两项最关键的技术。中文是中国软件开发的障碍,它使中国用户不容易同步享受世界最新的软件成果,同时也是中国软件产业的天然壁垒,一个不是在汉文化环境中成长起来的程序员很难突破这个壁垒,所以中文会保护中国软件产业,也是中国软件的市场和希望所在。加密技术是产品销售的保证,国内盗版严重,不加密的软件当时没有经销商愿意卖。
为了以后写软件比较方便,我考虑写一个加密工具。八九年上半年,我写了一个雏形。后来这个雏形能够成为产品,主要是我认识了合作伙伴王全国。当时,天下居然有这样的巧合,我在写加密软件内核的时候,他正在写加密软件的界面,合作就成了很自然的事情。我们计划花半个月的时候构造一个实际可用的软件。最后我们按时完成了计划,我现在还清楚地记得完成的时间是1989年8月17日。
在这段合作中,工作量非常大,工作非常辛苦,一般要从工作到深夜二三点,就合衣睡在沙发上,第二天别人八点上班,我们必须起床。半个月下来,两个人瘦了一大圈,脏衣服也累积了一大堆。有个礼拜天,我们从早上干到了傍晚,出门吃饭,见到了夕阳,当时大家还开了个玩笑:当我们见到太阳的时候,太阳已经下山了。
虽然我们这次开发只用了半个月的时候,当时我们决定没有想到以后会坚持开发了七年。
产品做完后,我们非常激动,心想该为我们这个开发组取个响亮上口的名字。以前看过一个电影,叫“神秘的黄玫瑰”,说的是一个除暴安良的神秘人物,我们做加密软件就是为了扼制盗版,所以借助这个故事,取名黄玫瑰。我们把产品取名 BITLOK,版本号设定为 0.99,因为这个产品距真正好的版本还有距离。
就这样,BITLOK 0.99 诞生了。
这个版本不算成功,但激起了我开发商品软件的热情和信心,接着开发了几个小产品。当时,我踌躇满志,硅谷英雄的故事时时燃烧着我的胸膛,经常梦想着有一天能创建一个一流的软件公司,满世界都用我们的软件,于是不太屑于开发这些小产品。我自嘲过 BITLOK,谓之“雕虫小技”。
二、重起炉灶
在快乐没有人分享的日子里,我独自完成了 BITLOK 1.0
北京是中国电脑业的圣地。毕业的时候,我对于去北京非常执着,就象飞娥扑火一样。我觉得,北京较之武汉,信息要灵通很多,市场也要大很多。当其他同学选择了深圳和广州,讲述那里的钞票盛况的时候,我没有丝毫的心动。
满怀着干一番大事业的心情,分到了一个研究所,参与很大项目。虽然工作在郊区,工资很微薄,我也不曾在意过,但一直找不到参与大项目的感觉。在那段时间,时间过得非常慢,慢得不知道如何打发。
这个时候,我认识了苏启强,当时他是用友公司的副总经理,他建议我继续开发加密软件。就这样,尽管我不愿意再开发小产品,但没有别的选择,就继续开发 BITLOK 新版。从开发第一个版本到我大学毕业,已经过了两年, 水平有了提高,回头看看过去的产品,决定推倒重写。
这个时候再写软件,比以前麻烦得多,白天要上班,虽然办公室没有多少事可干,但也不能干别的,周末还要到中关村会会朋友。这样,我的时间只有周一到周五的晚上。那个时候,为了节约时间,我经常用小时来安排晚上的日程表。有时如果完不成计划就干通宵。干通宵虽然累,但也有某种精神上的安慰。每每凌晨的时候,万籁俱寂,而我一个人还在电脑前干活的时候,当时有一种极大的精神鼓舞着我:我在用别人睡觉的时候干活。这个时候,嘈杂的电脑风扇和敲键盘的声音就成了悦耳的音乐。
干通宵最深刻的记忆是有次凌晨四点,程序写完的时候,存盘时死机了,把备份的文件写成了零字节,而我第二天必须给人演示这个程序。我已经不可能把整晚上的工作全部重写,当时我都呆了,不知道说什么好。同宿舍的朋友醒了,帮我从硬盘里的第一个扇区找起,花了两个小时,全部找回来了。我那个朋友后来开玩笑说我当时快哭出来了。
那个时候的辛苦由想可知,由于刚开始工作,不好意思迟到,只能勉强自己少睡点。但我面临的最大痛苦不是苦累,也不是报酬太低,而是快乐没有人分享。每每我遇到一个难关,不会有人帮忙解决;花费很大的力气解决的时候,高兴得手舞足蹈,也没有人分享。“独乐乐不如与众同乐”,在那段光阴,想“与众同乐”都不可能,只有“独乐乐”。这是多么悲哀!
在快乐没有人分享的日子里,我终于完成了 BITLOK 1.0。
作为开发产品,如果没有用户和朋友的支持,这是非常可悲的事,但一个开发者只有勇于寂寞、甘于寂寞,也可能开发出好的产品。这个版本的软件后来被不少软件公司选用,如用友、超想、金山等等,BITLOK 加密后的软件在超过一百万台的计算机上使用过。这是最令我非常欢心鼓舞的事。
三、真正的商品软件
软件商品化,光有技术是不够的
为了实现开发大软件的梦想,我义务反顾地加盟了金山软件,同时也邀请了过去的伙伴们一起加入。在开发大型软件(这个软件就是后来的“盘古组件”中的一部分)之余,BITLOK 的开发也只能是业余的。
在金山友爱的环境里,不少的同事协助我完成了不少工作,更值得提起的是,完成一个版本,同事就来试探解密,发现问题再告诉我,我再完善,如此多次,最后才定型。BITLOK 1.2 就是依靠集体的力量开发完成的。
这个时候 BITLOK 已经是一套很完善的商品软件,但从来没有作为一套 真正的商品软件在货架上销售过。BITLOK 从技术上讲比较成熟了,但从市场上讲,等于还是一个实验室的作品。九三年,有个朋友有兴趣推销,我坚持认为 BITLOK 是一个业余产品。后来在这个朋友再三的劝说下,BITLOK 才有机会摆在货架上。这个朋友非常尽心,产品宣传和技术服务都下了很大的功夫,BITLOK 很快就赢得了不少客户。
BITLOK 在我们的技术加上这位朋友的宣传和服务,成为了一个真正的商品。如果一个产品没有市场宣传、销售和售后服务等多项保证,就不是一个真正的商品软件。如果没有那个朋友非常下功夫的推广,BITLOK 永远也成不了真正的商品软件。对于这位朋友,我总存有很多感激之情。
显然,软件商品化,光有技术是不够的。
四、承诺永恒
产品不仅属于开发者,更属于用户
以后几年的开发中,BITLOK 一直坚持开发,出了一系列的版本,已经有不少的用户在使用,他们提出了不少好的建议,我们也坚持把他们的意见综合到产品中去。这样,BITLOK 也更受用户欢迎。从这里我得到一个结论,产 品是开发者和用户合作的产物,产品不仅属于开发者,更属于用户。如果说 BITLOK 比同类软件好的话,就是在采纳用户意见方面。
BITLOK 已经取得了一些成绩,但我们冷静地分析过加密软件的市场,发现几个方面的问题:一、加密软件只有开发者才用,市场很小,整个市场每年不到一千套,作为业余兴趣,还能接受,作为公司的开发项目的话,并不合适;二、随着软件市场的繁荣,国内有些软件开始试探不加密销售的方法,这是软件市场发展的趋势。不少朋友认为加密软件不用做了。
我也非常困惑:到底还做不做?
不少知道我开发加密软件的朋友,经常告诉我一些新的解密方法和解密工具,老用户也在继续打电话询问新版本的开发情况和提出修改意见。这个时候,我感到了很大的压力:产品也属于用户,不是我想停就可以停得了的。如果不能成为公司的开发项目,那就继续作为兴趣开发好了,只不过是我自己更辛苦点。不管什么说,BITLOK 还有很多用户需要升级维护。至于未来市场的发展 来说,还有一个相当长的过程。再说,就是在美国,还是有不少的专业加密软件。
过去我一直认为 BITLOK 是一个小产品,是凭兴趣开发。当 BITLOK 的背后有了这么多用户的支持,我无法认同自己以前的观点,这些用户使我感到压力,也多了很多责任感。不管有没有经济效益,我决心写一个全新的 3.0,彻底解决过去用户提出的各种问题,让过去的用户有一次升级的机会。
今年来,我一直希望有整块时间来重写自己的程序,但自己的日常工作非常繁重。好不容易,才抽出几个月的时间,在不少朋友的帮助下,重写了全部的代码。
在原有的基础上修修补补,已经不是办法,在多年的修改过程中,BITLOK 已经超过了三万行代码。作为一个业余的程序,已经不算短了,也很难修改。但全部重写自己的程序,又要有很大的勇气。在原有经验的基础上,使用了一些突破的技术,我还是花了很大的心血写完了 BITLOK 3.0。不管 BITLOK 3.0 写得如何,我尽心了。
我想,如果 BITLOK 还有人用,我就肯定会花时间来维护;如果没人用了, 也就到了“寿终正寝”的时候,我也该“洗手”了。