金旭亮:一个普通IT人的十年回顾(上)
  
  作者简介:金旭亮于1989年与超级解霸的开发者梁肇新同时迈入广西大学的校门,却走了一条与其不同的路。1994年起开始自学计算机专业本科课程,并开始编程,从未间断,迄今已逾10年,仍对软件痴心不改。2002年北京理工大学计算机应用技术专业研究生毕业,后留校任教,主讲程序设计系列课程。2003年在CSDN论坛发表自传——《一个普通IT人的十年回顾》,细诉自己的坎坷学习经历,言辞激昂澎拜,感染了无数学子之心。发表后一石激起千层浪,先后收到近千封国内外邮件,对作者经历与观点赞叹不已。以下是全文。
  
  今年(2003年)是我大学毕业满10年的日子,也是我投身IT技术的第10年。一直想能对过去的经历做些回顾与反思,以更好地走向未来,但总没有下笔。刚好CSDN举办“讲述程序员的故事”征文,这件事成了一个引子,我终于趁着暑期有时间,敲了一天键盘,便有了这篇人生自述。
  
  10年对于一个人来说是比较长的一个阶段,10年之后,同期大学毕业的同学情况差异之大,让人叹息命运之变幻莫测。
  
  我在此记录下了我的生活足迹,由于时间较长,有些事记得不太清了,但我是尽量真实的记录当时的情况,有兴趣看我这篇长文的人请把我看成是一个在你我中间一块生活,一起喜怒哀乐,一起努力的平凡人,相信我们之间会有很多跨越时空的情感交流。
  
  
  
  从1994到2003,不知不觉之间,我已在计算机技术的世界里沉浸了十年。有位哲人说过:如果一个人能用十年的时间专心致志地研究一门学问,或学习一门手艺,或从事一个职业,他一定能成为这个领域的专家。我天资平庸,但哲人的话是有道理的。我用十年的时间先成为了一名合格的程序员,再成为了一个重点大学计算机专业的大学教师。十年磨一剑,蓦然回首,年华如水,青春如歌!
  
  我父母都是城市中的平民,家境仅能解决温饱,我想我可能代表了中国社会的一大类青年,我的经历与体会可能会对许多条件并不好的年轻程序员有所启示:只要努力,天资差与环境不好都是可以克服的。因为我不是牛人,所以我不能教你如何成为牛人,我只是尽量真实地写下我的经历与感触,写一个平凡人的努力过程。我为我是一个软件开发者而自豪,为我从事的教书育人的事业而自豪,并愿意为中国落后的软件业尽己菲薄之力,为此,我人生无悔!
  
  我想分为三部分讲述我的人生经历:上篇–学习人生:主要是我学习计算机技术的经历与感触,时间跨度大约是从1994~1996年;中篇–艰难人生:主要是我流迹社会,失业一年半,三次考研的痛苦经历;时间跨度大约是从1997~1999年;下篇–实践人生:主要是我的技术实践经历:在公司打工,开发软件,毕业求职与教书生涯,时间跨度是1999~2003。
  
  上篇:学习人生
  
  一、计算机是什么东西?
  
  我是七十年代初在中国出生的那一代人,等我们长大开始读书时,文革已经结束,相对于我们的兄长,从我们这一代开始,以后出生的孩子都能受到较为正规的教育,这是我们幸运的地方。
  
  也就是我们上小学的时候,七十年代末,以美国为技术资源中心的计算机技术开始在全球范围内迅猛发展,这时正是世界性的“软件危机”极为严重的时候,计算机技术各方面都在酝酿着新的突破,而此时比尔·盖茨也正在准备构建他的明日微软帝国。
  
  七十年代末与八十年代初,在我们的生活中,看不到一点计算机技术的影子,刚刚改革开放的中国,99%以上的人连“计算机”这个词恐怕都没听说过,中国游离于信息技术大门之外。
  
  在“振兴中华”成为时代主旋律的八十年代,整个中国真的是呈现出一种勃勃的生机,这是一个民族在经历百年耻辱,十年挫折之后的再起步,象一些老歌—《金梭与银梭》、《在希望的田野上》等,就是当时青年的一种积极向上的精神风貌的体现。这种环境下,对于正在成长中的我们这一批少年,在潜意识中有极为深刻的影响,我们认为爱国与振兴中华是天经地义的事,并且成为了努力学习的主要动力(呵呵,现在的一些“愤青”——愤怒青年一定会说我们当时被“洗脑”了,也许真的是吧,这种信念确实会给人以极大的动力,我看不出有什么不好,至少我不会有现在这一批青年所经历的非常迷茫的感觉)。
  
  1986年我考上了桂林市重点高中——桂林中学,在那儿,我第一次见到了电脑。
  
  1、中学的计算机兴趣班
  
  1987年我在桂林中学读高二,桂中是重点高中,条件较好,当时学校课外安排了两个班:无线电班和计算机班,我上的是计算机班,当时用的微机是AppleII,用BASIC编程。记得当时中国也开发了一种同档次的计算机,叫做中华学习机,要在中小学中大力推广,但AppleII后来发展成了著名的Mac系列,并拥有了自己的操作系统,而中国的中华学习机,还有后来的小霸王等电脑学习机,都无疾而终了。
  
  学校安排上机,有同学不知从哪找来了一些有趣的BASIC程序,什么“比翼双飞”,“飞机空战”等等,都是一些非常简单的小游戏,当时他抄了厚厚一本,一上机就敲一些到计算机中运行,而我是一点也不会,只有站在一边看的份。
  
  那时会计算机的人很少,老师讲的我又不明白,考试的时候也不知道怎么过的。呵呵,后来我读研打工时,在网上看到洛阳一个高中生用VB编的一个“电子书童”程序,水平之高,我当时真是没法比。
  
  1989年,广西高考名额一下减了7000多,竞争激烈,十几人里才能取一个,由于压力过大,我高考前夕失眠,第二天考语文,120分的试卷当时只考了68分,因而与重点高校无缘。本想复读,但父母怕我来年考不上,一定要让我读广西大学,我万分不情愿地顺从了父母的意愿,去了我不喜欢的学校,读了我不喜欢的专业。男怕入错行,我在大学毕业后重新开始学我喜欢的专业,足足用了五六年的时间才转过来,真正成为一名合格的劳动者,走了一条长长的弯路,所以,父母的决定对缺乏经验与决断力的孩子而言,真的是非常重要。
  
  现在想起来,父母当时没错,我也没错,那都是在时代与社会环境下的自然选择。
  
  2、失败的四年本科与工作初期
  
  四年里我是个老老实实的好学生,但四年除了玩命过了六级,什么也没学会。
  
  记得大学第一节课就是BASIC语言,呵呵,也根本没学会,但我看来注定了要与BASIC难解难分了,后面的实践篇中我会讲我用BASIC开发的事。
  
  大学里我学的专业是电力系统自动化,学过微机原理与Fortran,上机时还用的是古老的主机加终端方式的计算机(叫做l/f机),我上机时真是一塌糊涂,因为这门课我从没学进去,也从没学懂过。有同学很厉害的,会用电脑打印出许多漂亮的图片(当然现在看起来很粗糙,针式打印机打的),我那时就称这些人为牛人了。
  
  呵呵,我如果没记错的话,做超级解霸的梁肇新也是广西大学的,但不是我们系,记得我当时就已听到有关几个计算机牛人的事,估计其中就有他吧,如果我记错了,梁肇新先生请指正。在本科期间,我对电脑是神秘多于兴趣。这也说明我成为不了牛人与大师,天资有限。后来,我发现一个普遍的规律,如果能成为计算机方面的牛人与大师,请去翻翻他们的传记,绝大多数在本科期间就已展露出他们的才华。而我们现在的中国高校,这么多的本科生都在为考试、考研、考托、考G而奔忙,这种填鸭式的应试教育体制,扼杀了太多学生的创造性。结果是一个学生在大学里读得越认真,就受到的错误影响越大,我是用好几年的时间反思才得出这个结论的。所以,中国高校十几年数以几十万计的本科生中出不了可编写linux内核的杰出人才,一点也不奇怪。
  
  1993年我毕业了,用我总结的一段话来说,是:一张白纸进来,一脑浆糊出去。
  
  毕业后我分到了一所号称是“中港合资”的生产蓄电池的公司。呵呵,刚刚工作的日子让我这个单纯的大学生被生活好好的教训了一下,许多无法以前想象的社会现象让我目瞪口呆,年轻气盛导致穿了小鞋,还只能忍气吞声。吃了生活的一个闷棍,我才明白,我除了有张文凭,什么都不是!
  
  当时,我感到最郁闷的是我在公司里什么都不会做,一个电机烧坏了我楞不知如何下手修,公司老总办公室里的灯不亮了,学电的大学生我花了半小时楞不知原因在哪!我学的东西没一样能用的。开始我还以为是因为我在学校里没认真学,但后来问了很多同学,90%以上的都有同感,我现在终于认识到这不单是我个人的错,我自认为在学校中是很努力的,从未偷懒过,但如果90%以上的学生所学不能服务社会,这种教育体制一定存在问题。
  
  四年里,我的电脑知识与技能=0!
  
  现在看起来,我浪费了宝贵的四年光阴!但当时的环境与认识水平,也只能如此了,没有当初的浪费,怎有后来的珍惜?这是人生必经的一个阶段。
  
  二、漫长的理论学习时期
  
  1、从电脑培训班开始
  
  我毕业后的第一个工作单位是一个非常差的企业,我在那儿见识了几乎所有中国差的企业的弊端:人浮于事,拉帮结派,暗箭伤人,损公肥私……。可以想见,在这样的企业工作,人是多么的颓废。我在无聊之中过了大半年的时间。1994年4月的一天我去桂林新华书店买书,看到桂林电子工业学院老师举办一个电脑培训班,教打字、排版、常用DOS命令等电脑使用基础,反正也没事,不如上个班学点东西吧。不曾想就是这样一个培训班,却根本影响了我的人生之路。
  
  我清楚地记得当我第一次上机时,连电脑开关在哪都找不到,老师拿着一张五寸软盘,插入软驱,打开电源,在一阵“吱吱”的声音之后,屏幕上开始有英文字符出现,然后,教师在键盘上敲入几个键,电脑沉默一会,突然在屏幕上跳出一个小人,出现一行字:快快乐乐学电脑,还传出了音乐。我当时真是惊呆了,电脑怎么还会唱歌?现在想起来,那个软件其实是中国台湾松岗系列教学软件,而我一个大学本科生,在毕业之后居然对电脑无知到这个地步,我真不知道是该哭还是该笑……!
  
  俗语说:“一见钟情”。我是相信这种事的,因为就是这第一次上机,让我产生了搜索这一神秘世界的强烈兴趣,从此就再难与电脑分开了。
  
  当时,有两位电子学院的老师:尹老师和陈老师。他们给我们讲DOS,讲汉字输入,讲他们如何修改天汇汉字系统使它能在一张软盘上运行,讲打字排版……,一个月之后,我不满足,又学了一个月。
  
  在上培训班的时间里,我向老师要来了桂林电子工业学院计算机应用专业本科四年的培养方案,回到家中,列出了所有本科课程,再根据书上的先修课程介绍,绘制了一张巨大的课程树,从树根开始,决定一本本地啃,从头开始学计算机技术。计算机科学的学习有较强的系列性,想一步到位很可能会学不懂,但循序渐进又无法跟上技术发展的速度,这是一个非常突出的问题。我现在想起来,觉得好的学习方式是:学理论打基础,在实践中逐步理解理论,多思多悟,就会发现层出不穷的新技术中有许多一直不变的东西存在。把握这种东西,就可以以不变应万变。这种“不变”的东西是什么?就是软件开发的基本原理与理论,基本思想与方法!在我对面向对象理论进行了较深入的学习与把握之后,我学。NET只用了三个月的时间就可以独立设计一个完整的全面向对象软件架构,并且用VB。NET与C#混合语言把它给做出来了。对于J2EE,我同样有这种自信,也用三个月的时间,一定可以开发与设计基于J2EE平台的软件,因为它们背后的计算机技术基础是一致的,完全可以触类旁通。
  
  尹老师和陈老师可能不知道,他们开的一个也许是为了经济效益的培训班,最后居然培育出了一个计算机硕士!所以,作为一名教师,其责任真的是非常重大的,可能会影响学生的一辈子,我感激他们!
  
  2、漫长而艰辛的学习之路
  
  我当时每月只有一百多元的工资收入,把大半收入都用到买书上去了。电子工业学院门旁的那个科技书店,以及桂林科技书店,成为了我最常去“站读”的地方。我买了数据结构、操作系统、微机原理、IBMPC汇编程序设计,C程序设计……这些教材,就按照预定的计划开始学了。
  
  我当时也说不清楚为什么要学这些东西,决不象现在学生学什么东西都有很强的功利性:学英语为了出国,学电脑为了好找工作。当时根本就没有想过今后如何如何,就是对计算机技术本身的兴趣推动我去学习的。
  
  当时计算机书还不象现在这样扑天盖地,我几乎看完了我能弄到的每一本计算机书,看了一些书,就特别想有地方上机,能练一练。但我一个月一百多元收入,一台电脑怎么也得几千元,要五六年不吃不喝才攒够钱,父母都是普通百姓,家境仅能温饱,拥有一台电脑真成了我最大的美梦。
  
  为了有机会上机,我这个脸皮极薄的人也会什么都顾不上了,带着一盒保存着各种软件的软盘,厚着脸皮到处找可能的地方上机。在这个时候,电子工业学院又一次帮了我,他们的机房管理得并不严,我就冒充是他们的学生去买机票上机。后来去得多了,那儿的老师都熟悉我这张脸了,但搞笑的是,居然没一人知道我是哪个班的!
  
  当时电子学院用的局域网操作系统是Novell,我在那儿学会了使用许多最基础的软件,现在仍然如数家珍:CPAV,TurboPascal5.5,UCDOS,Tway(天慧汉字系统),Masm,TurboC2.0,还有鼎鼎大名的Norton公司的磁盘医生NDD,PCTools,Borland公司的最牛的常驻内存的软件Sidekick,……
  
  在电子学院机房,我还玩了经典游戏:决战中国海,冒险岛,战斧,三国……。
  
  学校网络里软件很多,但其中所染的病毒也五花八门。我记忆深刻的是第一次遇见DirII病毒时,那种感觉决不是害怕,而是欣喜,呵呵,我见到病毒什么样的啦!由于DOS内核是开放的,所以那时开发一个病毒程序相对容易,大家又都喜欢用软盘拷来拷去,结果毒源泛滥,病毒的猖獗使得杀毒软件有了巨大的市场,现在大名鼎鼎的江民KV系列,就是在那时开始占据中国防毒市场,同时还有部的Kill等竞争对手,瑞星、金山等都是后来者。
  
  那时,我白天在公司上班,就盼望着晚上的上机,每次上机我都有详细的计划,因为机时宝贵,所以分外珍惜。
  
  为了上机时能多敲些程序,我一咬牙,向妈妈要了两百元,买了一台电脑学习机,回家苦练英文指法与五笔输入,每天对着家里那台14寸的电视机屏幕,敲击至少键盘2小时以上。练得手腕酸疼,但终于达到了运指如飞盲打的程度。学五笔,背字根“目具上止卜虎皮,……”,足足花了一星期才背下来,并把每个字根与手指对应起来,后来看报纸都不自觉地将汉字给拆得七零八落,再也看不到是一个完整的汉字啦,当时好象练到了每分钟可打60多个字,后来我居然靠着这弹指神功当了一阵打字员混饭吃!呵呵,练好了指法,一上机,确实效率倍增,两小时能敲入并运行调试的程序比以前花三小时敲的还多。
  
  94、95年是我条件最差,但学习劲头最足的两年时期,外在环境的恶劣,却反而造就了我高昂的学习兴趣,那种痴迷,我想热恋也不过如此了,可能因为我太喜欢计算机了,所以爱情与我无缘,这也是无可奈何的事。
  
  我特别想说说我学习计算机技术书籍的感觉。如果你真的喜欢一门学科,那在啃一本本专业书籍时,就决不会觉得它厚,而只嫌它不够厚。对比我在本科学《电磁学》、《自控原理》之类枯燥无味的课程的感觉,那种课程脱离实际,从纸上到纸上,学生根本无法真正掌握。而学计算机课程《C程序设计》、《数据结构》、《操作系统》等课程的感觉真是天壤之别,原来本科学的东西是越学越糊涂,而我在学习计算机科学的过程中自己就感到慢慢地将所有的知识串成了一条线,脑中有一棵知识树在成长,这不是形容词,是真的感受。我学DOS命令,学了很久不明其道理,是在一天早上醒来时灵感一来,突然理解了文件与树的概念,于是,就真正把握了DOS命令的内涵,开始对copy,format,move……这些英文单词游刃有余了。有段时间,我甚至能感觉得到我的知识在与日俱增!如果那时能有相对稳定的客观条件:比如有一台随时可用的计算机,那我一定学得更快更好。不过话又说回来,条件好的时候,人又容易为安逸所累,进步反而慢。还是那句老话:业精于勤荒于嬉。现在的许多学生就是物质条件太好了,反而不懂得珍惜。
  
  后来我看了金庸先生的《射雕英雄传》,郭靖成了我最喜欢的人物,不是因为他有黄蓉的爱,而是他那种坚忍不拔的毅力,以平凡之资终登绝顶!金庸先生真是妙笔!此小说我不知看了多少遍。
  
  最值得怀念的就是我学编程的岁月,我学C语言用的是谭浩强的《C程序设计》,当时谭老师在电视上同时讲C程序设计,我每天必看,把书上的每道例题与习题全部做了一遍,并写出了每次上机的安排。我每次都先在纸上把程序写出来,然后上机时争分夺秒地在计算机中调试运行,并根据运行结果思索为什么会运行不正常,在哪儿出错了,如何更正,上机完后还有总结。就是这样,我把谭浩强的《C程序设计》一书中的所有例题和习题全部敲到计算机中运行了一遍,打下了C语言扎实的基础。谭老师的书和课,的确影响了中国多少名程序员!
  
  我学了C语言之后,就开始想做点东西了。我用了一个月的时间,用C编写了一个中文下拉菜单的程序,从UCDOS中的字库中提取汉字点阵,然后在图形模式下“画”出汉字来,使程序能脱离汉字系统的支持直接显示汉字。整个程序应该有一两千行代码吧,全部是自己寻找资料,一行行敲进去的。后来,我又编了读取WPS文件的程序(当时DOS下打字排版是求伯君的WPS一统天下,Word当时在哪里我不知道呢!《电脑报》介绍过的求伯君、鲍岳桥等作为第一代中国杰出程序员代表,是我当时崇拜的偶像),我还编写了一个绘制简单图形的小程序,从编程调试的过程中,我得到了程序员基本功的最初训练。我当初没人教,遇见各种困难只能自己解决,为找出一个bug,晚上睡觉做梦都在编程,而现在的一些大学生,程序通不过,马上问老师,甚至有学生把程序发到我的邮箱,叫我帮他调程序!有的计算机专业学生,学了四年,四年敲过的代码总数恐怕不超过2千行!
  
  的确,我当时的水平很低,现在的本科生比我当时强太多了,但至少有一点他们中的许多人不如我,他们不如我勤奋,也不具备我的毅力,我觉得这是现在这批八十年代出生的大学生最缺的东西。
  
  我用一年半的时间基本自学完了计算机专业的主干课程(除了《编译原理》,我实在看不懂),1995年我参加了初级程序员考试,结果上下午成绩加起来有90多分。但96、97我两次参加程序员级考试,虽然我已有不少编程实践,但仍然通不过,现在看起来,这反映出一个事实:我理论基础实在太差,天资也并不高。直到现在,我仍然痛感我的计算机基础理论不好,使我难以成为一名计算机科学家,而只能成为一名不错的软件工程师。
  
  从95年开始,我的生活开始加速下降,我所在的公司由于被一群我现在称之为驻虫与流氓的人给弄得不成样子,每月连100多元的工资都无法保证,我只得离开了公司,把档案往人才交流中心一放,就开始了我四年的社会漂浮生活……
  
  在这四年中,我干了不下四五种工作:当过推销员,当过打字员,当过培训老师,修过电脑,从事售后服务,甚至摆过地摊……,一切的一切,很简单,就为了能有口饭吃。生活是严厉的,不讲情面的,我唯一的爱好就是闲下来就拿起我的计算机书来看。当时我大哥说过:你学这些东西有什么用?能靠它当饭吃?不要惊奇这种观点,在我们那信息闭塞的地方,当时有谁能想到计算机技术会有如此大的改变社会的能力?我之所以不懈学习,纯粹是为了解脱精神上的困惑,在技术的海洋中忘却生活的烦恼。我后来有一句名言:何以解忧,唯有电脑。别人当作一句笑话,但却是我当时的真实写照。
  
  万事都有两面,事情坏到极处,就会向好转化。又是一个很偶然的事,改变了我的人生轨迹。
  
  1996年,我的一个高中同学杨考上了湖南大学计算机系研究生,请客吃酸菜鱼火锅。在大家喝酒时,杨提了一个问题:请大家说出一个自己最想达到的目标。我的桂中同学大多数都是上的全国重点大学,此时毕业三年了,大家都对社会对生活有了自己的认识,于是就有了各种不同的答案,我当时的回答是:“我希望能有一天开发出一个好的软件,让许许多多的人都能用上它。”,这个目标我到现在都没达到。但当时大家是给我热烈地鼓励。杨饭后跟我说,你既然那么喜欢计算机,为什么不考研呢?对啊,我为什么不去试试呢?当天晚上我躺在床上,没怎么想就确定了要考研的想法。当时却怎么也没想到,考研之路成了另一条折磨人的不归路。对我一生的影响深远……
  
  这就是我早期的学习生涯,深深地体现出中国的时代特色。这段时间我的生活是困苦的,心情是苦闷的,但学习热情却是无以伦比的。现在我一个人拥有两台奔四电脑,随时可上互联网获取丰富的资源,反而在技术上难有寸进了。越来越觉得古语说得好:
  
  艰难困苦,玉汝于成!这是生活的真理!谦逊基于力量,高傲基于无能。编程魔方我们一起努力!