Richie

Sometimes at night when I look up at the stars, and see the whole sky just laid out there, don't you think I ain't remembering it all. I still got dreams like anybody else, and ever so often, I am thinking about how things might of been. And then, all of a sudden, I'm forty, fifty, sixty years old, you know?

五年程序人生

    秒针不停的向前跳跃,不管前面的路多远,总是这么一小步一小步的走。时间一步步指向一个日子。

    5年了,2002.07.08 - 2007.07.07,想写点什么,又不知道该写些什么。沙滩上,踩下的脚印被海浪冲的无影无踪;雨天里,看到点景物却被雾水藏的不知何去何从。
    本来以为会在M过完自己的第五个年头,终于没能坚持下来,4.27的中午,交上识别卡,离职单签完最后一关,跨出了留有5年难忘回忆的公司大门。在应该成家立业的年纪,又开始漂。漂吧,风也好雨也好,50年也只是这过去的5个年头。5年时间,秒针走过的距离可以从苏州到上海,50年,可以从上海到家门前。

    4.28踏上了回家的飞机,短短的感受了一下久违的家乡的夏天。
    一切是那么熟悉,也有点陌生。我举起相机,镜头里的景物如此普通,怎么也找不到多年以前的一幕幕,哪怕一点点。如果可以回到从前,我一定能拍到无数的艺术珍品。
    休息的几天,清晨总是被布谷山雀早早吵醒,教你尽情的呼吸清新的空气。空旷的空间里填满清脆的鸟鸣,夹杂着人们的说笑谈论,彷佛穿过了几个世纪的时空却还保持这么清晰。午后,暖暖的晒太阳,遥望碧蓝的天空,燕子不时的滑过,遥想着它们年复一年拖家带口的飞越成千上万里,还得找到去年呆过的那个窝。老妈静静的说道,一到秋天,常常看到黑压压的燕子在天空盘旋,等待着结伴同行,走了一批又会有另一批。有的为了让小燕子能够跟着展翅飞万里,要走的很晚,很晚,直到秋的气息渐渐逼近。有很多死在野外。望着停在家门电线上的那一对,默默说到,飞吧,唱吧,这是你们的季节。
    翻开高中的笔记,里面厚厚的写满了FOR IF之类QBASIC命令的解释,还有很多一段段的小程序。墨水的笔迹在纸张上面隐隐的渗透开来,遥远年代的记忆在眼前浮动。

    从高一开始,每周2节电脑课,一直到高三。一开始学一些基础的DOS操作,然后是WPS,五笔,后来是Fox Pro。
    其实对电脑也没怎么了解,只能算大概知道了什么样子。那时大家最喜欢的是游戏,大部分是以前在游戏机上玩的那些街机游戏的DOS版本,比如战斗机,三国等,大一点的也就是大富翁,要两张软盘才能拷贝下来。周末可以去科技馆机房,花1,2块钱就可以,当然,那时侯大街上还没有网吧。我周末不怎么去机房,因为学校机器上面没有游戏,要自己带软盘拷贝进去,还要解压缩,那时侯根本不懂的怎么弄。
    学校发的计算机教材上,有QBASIC教程,没事时候就看看,免强看懂了些,引起了对计算机的兴趣。那些条件、循环控制语句,一个个写下去,就能让电脑做很多事情。听个高人说,电脑上所有的游戏、程序,都是用类似这样的语言开发出来的,觉得非常神奇的事情。
    后来用QBASIC写了个模仿中奖逻辑的程序,但是从来没有运行过,因为不知道怎么运行。
    高一高二成绩一直不好,从抽屉翻开一张张成绩单,都是30、40名。曾经在成绩上一直是优秀者,所以这样的成绩单很多从来没有给父母看过的。还能清晰的记得当年看着这些成绩单时愧疚的心情,作为农村的孩子,为了减轻父母的负担,很多优秀的同伴在中考时选择了中专,而我选择了这个省重点,一条更漫长艰苦的路。小的时候不知道什么叫做梦想,进入高中后心中一直梦想着将来如何潇洒的走在北大、清华的校园里,常常这样进入睡眠。高三一年开始下苦功,渐渐把曾经的高手们一个个摔到身后,15名、10名,高考前最后的摸底考试进入第二名,最后的高考出了点小故障,仍然是第二名,没能赶上那个从小学就开始的同学。高考的成绩还可以,但志愿没有如愿以偿。记得那时志愿填南大跟南邮,因为觉得数一数二的没法上,三教九流的应该不成问题,所以专业都是计算机、软件方面的,学校跟专业都不服从调配,最后的结果是被丢到一个山沟里,这算是现实给我的一次沉重的教训。
    在那个焦虑而无奈的夏天,无需太多的思考,我背起行李,一个人踏上了开往山沟里的火车。这个夏天一直延续到我的大学毕业,沉闷而压抑。老妈做着手头的活跟我说,看着我离开的身影,他们终于松了一口气。我知道。

    大学里面心情不好,任何事情都没有兴趣,行尸走肉似的过了相当一段时间。喜欢坐在山头上,看着火车从脚底的山洞钻出来,很快又钻入对面的山洞,然后消失。回荡的余音把我带回道吾山下,夜夜烟花灿烂的小城,回想那些个苦苦熬战的日夜,回想那个古木蔽日,亭台楼榭美丽的校园。
    忘记清华北大,我开始从书店搬回这样那样计算机的书。大学一开始也有计算机基础课,就是讲讲Windows,Word怎么用之类的,我对这些没多大兴趣。计算机的技术方面太多,图书数不胜数,一到书店,准被五花八门的书,各种各样不理解的技术弄的眼花缭乱。那时对计算机可以说一窍不通,没有什么人可以求教指导,不知道该学些什么。
    最开始看的是谭浩强的《C语言程序设计》,这本书很不错,我一个什么都不懂的人也看懂了C语言,虽然还是有很多概念半懂不懂的,比如指针之类。后来的物理课跟计算机结合比较多,书上有非常多的C语言程序,很多的东西都要求我们在计算机上用图形去模拟,需要上机实验做出来。比如简谐振动,到后来是模糊控制论里的一些东西,例如书上的一个示例,将数据用模糊函数整合到一副蒙娜丽莎的图像里面,通过模糊函数可以将数据再还原,而蒙娜丽莎的图像和原图相比,只是多了一些躁点。这样使得对TC2.0的编译、调试、图形界面开发有了一个全面一点的认识。

    学完C语言,感觉计算机硬件、原理方面太多东西不懂,因此开始看计算机体系结构,看汇编。清华大学出版社的《80x86汇编语言程序设计》,黑色封面厚厚的一本,在黑灯瞎火的摸索中,通过这本书我把汇编搞懂了。当然一开始怎么也想不透各种各样的寄存器是做什么用怎么工作,代码段、数据段、各种各样的中断调用是在做什么,保护模式编程是怎么回事,硬着头皮往下看,一遍又一遍的翻到前面去琢磨理解,不停的写代码测试验证,最终对汇编、计算机工作原理有了个正确的认识。看到Win32汇编部分实在看不下去了,因为又涉及了Windows各种各样API的调用,多任务切换下寄存器现场保护等等。
    后来看了Windows FAT16磁盘结构,反汇编研究磁盘引导区,自己写了个读写软盘的程序替换系统中断,居然还能正确的按照FAT16格式读写软盘,很有成就感的样子,因为整个软盘每个字节的读写都在自己控制之下。再后来反汇编研究DOS系统引导区,追踪DOS的启动引导代码,研究DOS工作原理,对这个简单的操作系统加深了理解。
    最后大学的毕业设计课题,选的Motorola的单片机编程。我负责写Boot Loader,也就是单片机启动之后执行的一段初始化程序,一方面需要初始化整个单片机运行环境,另一方面需要监听一个通讯端口,随时准备从PC接收程序代码,进行Flash擦写。写这个最难的地方是Motorola的单片机指令集不是标准的x86汇编指令,单片机结构很多都是Motorola特有的,需要知道怎么用,只能查文档,而文档全是英文的。象我英语那么差,只有头痛的份,慢慢的啃。还记得独特的地方,是它的Flash为128K,由4个Flash存储器组成,必须每32K进行切换控制。另外一个有意思的地方,是它的网络通讯,一个非常简单又完整的网络通讯协议:S协议,还清楚的记得S0表示开始发包,S9表示结束发包,S1、S2等是中间具体数据包。
    写汇编有很多有意思的地方,例如一个最底层简单而又完整的操作系统很容易就呈现在你面前,例如整个计算机是如何运作你可以彻底弄清楚,例如很容易你就进入到反编译黑客的世界,面对各种代码优化技巧,常常让你有豁然开朗的感觉。工作后遇到了聪明的Dick,最喜欢研究反编译、脱壳、解密,还做出过不少的成果,他的汇编功底其实不如我,虽然老是在一起讨论汇编、加壳加密技术,但我那时的兴趣已经不在这个方向。

    汇编研究到Win32环境后,对Windows的兴趣使我开始研究Windows编程。Petzold的《Windows Programming》,绝对的经典。这一次无异于又开始了一个新的汇编历程,不过针对的是Windows的环境而已。我饱偿着自学过程中的一切苦恼,例如没有指导,没有交流,每接触到一个新的概念,只能自己瞎琢磨。印象最深的是暑假不回家,火热的7,8月校园里面空空荡荡,蚊子掉到地上都可以听到,一个人呆在教学楼里静静的看。Windows窗体类、消息循环回调函数、各种API、结构等等,总有无数不懂的地方,想不明白时就望着窗外刺眼的阳光,常常走神,想到很多其他的东西。如今回想,这些场景还历历在目,可以清晰的感受当时的环境心情。仍然是学汇编时的老方法,硬着头皮往下看,反复的翻到前面去对照思考那些没有理解的概念。我的那些计算机书,封面都是用透明胶严严包起来,为了防止反复翻来翻去弄骤了。看着在Windows下,出现主界面,每一个显示每一个事件都任我摆布,非常兴奋,感觉自己快要掌握世界的真理了。
    自己有了兴趣想写点东西,于是开始写五子棋。那时候没多少机会上网,没有参考任何五子棋方面的资料,就是用自己想的方法,也是最原始的算法去写,一个数组记录棋盘走子情况,一个大的链表存储各种形式分析用的元数据结构。人机对战算法有点笨,进攻性差,基本处于防守状态。后来一直思考如何让电脑更聪明,想把它写完美,不过面临毕业的其它事情,被搁置起来了。
    Windows编程看到MDI,发现太繁琐,觉得做这样的事情不应当用Windows C折腾了,因此开始看David Kruglinski的《Inside Visual C++》4th Edition,也是经典之作。VC只是看了个大概,Template、MFC仅仅处于了解的程度,就没怎么继续下去了,将我的五子棋搬到MFC下面实现过,也只是简单的使用MFC画画窗体,管管消息循环。

    临近大学毕业,是忙一些形式工作了。我知道自己不是计算机专业,为了找工作几个计算机方面证书是必不可少的。先是考3级,我考的A,偏硬件方面的,因为这个拿手。3级证书相当顺利的到手。接下来是高级程序员,这一次有点犯难了,考中程自己把握很大,而高程没底,据我们那种学校的消息,高程非常难考,而当我打算考程序员时,是我大学期间的最后一次程序员考试机会了。我选择了高程。数据结构、编译原理两本书被吃透了,计算机体系结构、软件工程等都系统的看、复习一遍。大学毕业的前夕,我领到了高程证书。
    整个大学期间成绩一塌糊涂,毕业的时候不够拿学位证,后来系里发慈悲酌情考虑,我还是拿到了学位证。在这个满世界研究生博士的年代,我连个大学生也是不够格的。
    毕业的时候,包括现在,回顾大学4年,烟酒游戏里面沉醉过,愤懑与理性之间迷茫过,有失去,有付出,有收货,有被认可。正如高中,如果再多个一年半载的努力,我会出身清华;大学里如果再多个三五成投入,我也能成为大家眼中的超级强人。但人生总会有那么些遗憾,不然怎会见得完美。我得感恩仁慈的上帝,让我在荒野、险恶、举步唯艰的幽暗森林里没有迷失方向。

    高中、大学记忆的文字,大部分来自05年除夕的一篇Post,下面是当时的后记:
    05年除夕,中午和Ray,George一起到川福楼吃饭,之后Ray回常州。和George回宿舍后没什么事情,就去了网吧(那几天刚从厦门出差回来,还没来得及装宽带)。Geoge在那看彩票,除夕的日子,感觉到欢喜热闹的气氛,也感觉到冷清,坐在那漫无边际的回想起一些事情来,就写了这篇Blog。写完的时候,已经是傍晚,鞭炮烟花声四下响起来,正是除夕的夜——
    也许这段短短的文字,也能表达不少程序员的心境。

    01年底02年初开始忙着找工作。跟老周去了一趟深圳,投了几份简历,很久以后网易打电话叫面试,告诉他工作已经定了。
    02年3月10号武汉科技会展中心的人才交流会,跟两个同学一起过去,投了3份简历。13号晚上9点M打电话面试,放下电话就坐火车赶往武汉,刚够赶上第二天10点的面试时间,面试的人是David和Casper。Adrian的面试一开始通知是4月6号,赶到武汉又告诉推迟到4月10号,因此回家休息了几天。那时正是家乡初夏的雷雨季节,阴沉沉的天,灰色的云层贴着地面爬行,闪电时而在眼皮底下跳跃,夹杂着雨雾的清凉空气刺激肺腑,是久别的家乡的气息。上周末跟Kevin一起,还回忆起Adrian的面试映象比较深刻,微笑、结束时极具热情的握手。
    毕业答辩完毕,没有时间回家,直接坐上了开往苏州的火车。就这样开始了我的职业生涯,在M一直呆到07年4月,将近5年的时间。

    刚开始做测试,Larry辅导,跑ERP、测试VMI、Order项目,大概Order做的差不多Larry就离职了。QA做了8、9个月,除了测试流程,ERP相关概念等,也在学习SQL Server、Oracle、ASP、Delphi,最感兴趣的是研究COM、DCOM原理,《Inside COM》、《Essential COM》、《C++ Object Model》被啃完了,用C写COM、COM+,反编译研究VB、Delphi的COM组件。那段时间正是Dick极有兴趣研究脱壳、解密的时候,刚好他在大学对COM已经研究过,有很多共同的话题,经常会一起在公司泡的很晚,晚上1、2点一帮子人从老厂步行回新厂宿舍。极富纪念色彩的一段时光。
    一次David老大找谈话,跟他说不想做QA了,想做开发。03年3月开始转到研发角色,由Phil带着做AU SCM项目,还有Dick、Kevin一起,这是我的第一个研发项目。03年7月AU项目上线过程中,这段时间发生了不少事情。Dick看透了软件开发,回浙大读土木研究生;Phil因为自己的事业离职;SCM研发人员彻底换班,加入2个4年经验和2个新人;我被任命为SCM研发Team Leader;参加M颠峰战将(魔鬼训练)。从这时候开始,技术研究被画上一个句号,技术的长进变得缓慢,随后的日子就是两个主题:项目、Team。
    还记得跟Sheep一起晚上3点多从AU出来,在苏虹路上等的士等了2个多小时;还记得跟Paul、Roger、George一起往返于苏州昆山;还记得Rab、David晚上2点多出差回来,我们还在小房间Coding项目;还记得跟Robert、Tom、Tony一次次深夜从科技园回来,凌晨就赶往上海;还记得连续两天两通宵的加班解决客户问题;还记得每一次季会为了一份PPT整理的焦头烂额;还记得颠峰战将太湖边上的风景。面对03年千岛湖之行的02级同事全家福,总想起那段打拼的时光。把所有一切记录下来,也无法描述当时的心境情形。
    AU后续几期的项目,WUSPC SCM项目,产品升级到.NET 1.1,04年Team加入5位新人,Namtai SCM项目。05年开始Amoi SCM项目,跟Tom、Tony在厦门出差1年。06年回来支持Jinling SCM,产品升级到.NET 2.0和Oracle数据库上,Hisense SCM项目。Bruce的激情燃起了我对开源项目、架构思想的研究,10月青岛出差期间,Bruce离职。这就是5年的生活,正像5分钟的一个短片。
    Rab总是说不明白为什么我会走,我想有些事情是已经注定了。永远都会记得那个拥有优秀文化、大家齐心奋斗的大家庭,那些充满激情优秀的同事们,曾经一起打造过的一个梦。

    秋天到了,天气凉了,大雁该南飞,“一”字,“人”字,是的,一个人,再次踏上新的旅程,寻找一片温暖的土地,种植一个自己的梦。
    短短几天的休息很快就结束,飞往上海的云端,我才想起并未按下过快门,我后悔了。刚刚还在眼前的一幕幕,多年以后我是否还能常见,尤其是父母那日渐苍老的音容笑貌。下次了......
    又想起这首诗:
        今生今世 我最忘情的哭声有两次
        一次在我生命的开始
        一次在你生命的告终
        第一次我不会记得是听你说的
        第二次你不会晓得我说也没用
        但两次哭声的中间啊
        有无穷无尽的笑声
        一遍一遍又一遍 回荡了整整三十年
        你都晓得我都记得

posted on 2007-06-30 16:36  riccc  阅读(...)  评论(...编辑  收藏

导航

统计信息