小兵成长记
我不了解IT,因为我学的只是软件,IT的一个分支而已;我不了解软件,因为我没有做过任何一个商业的软件,我做过的,只是一些toy;我也不了解编程,因为我从第一次摸计算机那天起到现在,还不足10年,虽然我学的是技术,但对于编程,这是一种艺术,我还没有掌握她的精髓。所以我称自己为小兵,因为在软件行业,更大一点说IT产业,我才刚刚起步。
一、童年电脑映像
从游戏机到学习机,可以说是我人生的一大飞跃,那时我13岁。从那时起,我学会了打字。后来我在的小学有了电脑,学打字就是我们唯一的电脑课程。当时学的是五笔,我练的很勤快,打字的速度也比别人快很多,我记得还给学校领导表演过。进了初中以后,学校搞到某香港某富商赠送一批的电脑,我们开始学习DOS。每周的电脑课是我的精神支柱,一旦由于某种特殊原因导致电脑课被取消的话,会让我郁闷好几天,然后开始期待下个礼拜的电脑课。
我们这代人正好赶上了中国的电子化,说的好听一点叫信息化潮流。红白机,街机,电脑游戏,网络游戏,这些东西占据了我们童年的大部分时间,随着我们的成长,技术也在不断的进步。这些东西的核心技术都是国外的,国内的厂商只是做了一些包装。去年我尝试着写一个红白机的模拟器,发现相当的困难,而且国内研究这个的人非常少,而别人10年以前就能做出成熟的产品,中国的IT产业真的落后了太多。我比别的孩子稍微幸运一点,因为除了游戏以外,我学了一些“硬件”和“软件”,这对我以后走IT这条路起着决定性的作用。
我的家庭还算富裕,初二那年我家买了一台电脑,虽然不是专门给我用的,但这确实让我学习电脑的兴趣增加了许多。或许不能说学习,因为我只是在上面摸索着怎么装游戏。那时我买了好多游戏,都是正版,因为我不知道有盗版这回事。但是自从一位来修电脑的人给我介绍了盗版以后,我几乎再也没有买过正版。由此可见“人之初,性本善”,但人也是动物,昆虫有趋光性,我觉得人有趋利性。我不知道是哪些人掀起了中国的盗版产业,他们是发达了,但是中国的软件产业也被扼杀在了摇篮里面,更可恶的是盗版影响了一代人对软件的看法(包括我在内),认为“盗版”是理所当然的事情。
二、装机高手
初二那年是我学习电脑的一个转折点,但过程却有些荒谬。那时候我们换了班主任。原因有二,第一是以前的班主任要结婚了,第二是因为她和班上一部分学生的关系非常糟糕,像我这样的“坏小孩”经常和她作对,可能是大学刚毕业没有经验,不懂怎么应付这样的问题,偶尔几次她还哭了(现在想起当年的一些事情,我的确有些惭愧)。
新的班主任是电脑迷,对拆装电脑,重装系统一类的事情非常精通,有点像电脑城里面装机的那些人。也就在那个时候,我开始了我的初恋,遭到
就是这样一段情感经历,却也能和电脑扯上点关系。新来的班主任说要教我电脑,为了转移我的注意力,别再把精力放在儿女私情上。那天晚上,他给我了几本电脑报的合订本,从此我迷上了看电脑报。除了上课,吃饭,睡觉,做作业,其余时间都花在了电脑报上。很快,我也学会了拆装机器,重装系统。家里的电脑经常被我搞的不能正常工作,爸爸同意给我买一台电脑,前提是我期末能考到班级前10,我做到了。如果我没记错的话,我的第一台电脑是奔2,
从此以后我和班主任之间便多了很多话题,我们常常一起去逛电脑城还有盗版市场。我关注的焦点也从游戏放大到软件,操作系统。那个时候买的光盘真是数不过来,我现在还能在家里找到满满几包盗版光盘。那时候几乎是玩遍市面上的所有游戏,甚至写攻略投稿,软件也是不断的升级,就连操作系统也是装了个遍,包括98,ME,2000,NT(那时我还不知道所谓的Server到底是什么东西),甚至Linux,我记得我装的是现在已经消失了的“蓝点Linux”。那时候可以不知疲倦的重装系统,或者为了看到某个软件,游戏新的界面,新的功能而熬到深夜。每次回想起这些的时候,忍不住慨叹当年的激情已经不在……
班主任推荐我买一套学习电脑的软件《开天辟地》,当然是盗版。但是当我看完以后,我就去买了它的姊妹篇《万事无忧》,这次是正版。因为我觉得这套学习软件做得实在太棒了,图文并茂,而且还有动画。我买正版的另外一个原因是因为正版还有配套的书送。我对电脑方面的书似乎情有独钟,我记得为了玩《轩辕剑》买了一个正版的攻略,精装彩页,但游戏软件是盗版的,到最后BOSS的时候卡住过不去了,有攻略也没用,当时着实让我郁闷了很久。这些学习软件是北京的洪恩公司出品的,我还打过几次客服电话,问了一些现在看来很傻的技术问题,但是对方的态度是非常好的,还经常给我寄洪恩的报纸。我把这套软件推荐给我周围的同学,朋友,他们多数还是买了盗版,毕竟价格上有很大的差距。不懂洪恩公司现在发展的怎么样,给我的感觉是没落了,盗版的受害者。在中国,唯一没有受到盗版影响的就是杀毒软件,虽然从技术角度讲,盗版的杀毒软件一样用,但普通用户还是愿意花钱买保险。
我通过《万事无忧》学会了设置BIOS,这在一般的电脑玩家看来是一个很深奥的东西,因为它全英文,而且搞错了电脑就会不正常。从此,我一下从一个普通玩家升级为电脑高手,我也经常给别人展示如何设置BIOS。DIY是当时非常流行的词语,《万事无忧》也教会了我很多DIY的知识,包括跳线,超频之类的东西。那时玩电脑追求的是性能,总希望能通过超频来获得最佳的性能。而且会去研究什么样的硬件搭配能获得更好的性能,乐此不疲。而现在我对这些已经不在感兴趣,现在对电脑的要求是使用的稳定与舒适,大概我老了。
自从成为“高手”以后,我经常性的会为别人买电脑提供一些意见,或者陪别人去电脑城里面装机。我甚至想过暑假去电脑城里面打工,工作就是帮别人装电脑,由于种种原因,最终没能如愿以偿,否则那将是我的第一份实习。
现在偶尔还和初中的班主任有一些联系,也聊到一些以前的事情。他也问过我是不是恨他当时破坏了我的初恋,怎么说呢,有时候我相信命中注定。无法预料当初的改变会对今天造成什么样的影响,就像“蝴蝶效应”,或许只有一种结果,根本无法选择。我还是很感谢我的班主任,是他带我开始研究电脑,虽然很肤浅。
三、计算机竞赛
我带着这样一种“高手”的感觉进入了高中。我参加了“计算机奥林匹克竞赛”,虽然刚开始我根本不懂这个比赛是干嘛的。那时候的感觉有些自大,不知道山外有山,我更像是一只井底之蛙,以为自己什么都懂。了解的多了才发现自己和别人的差距,也知道了编程是怎么一回事。
虽然我上的高中是省重点,但计算机教育还相当落后。学校里没有一个真正懂编程的
高二那年我硬着头皮报名参加了计算机竞赛,很显然,我在初赛的时候被淘汰了。但是收获不少,因为我认识了一批搞计算机竞赛的同龄人(其中大多数比我小)。我发现他们中的很多人是从小学开始学编程的,而我小学的时候学的是打字(城市和农村的差距),虽然他们的水平都不怎么样,但是相对我来说,他们比我早入门,比我更有经验,我在他们身上学了不少东西。
初次尝试失败以后,我有些沮丧,但我当时做了一个艰难,但正确的决定就是高三继续参加比赛。这有点像赌博,赌赢了高考可以加20分,赌输了将直接影响高考的成绩,因为搞竞赛是很花时间的。我当时决定继续参加比赛不是纯粹的为了高考那20分,更多的是出于一种爱好,我不服输。我高二参加比赛家里并不知道,直到高三比赛的初赛结束我才告诉家里这件事情,并告诉他们,很可能这次又没戏。没想到他们对此非常有兴趣。我妈妈第二天直接去找了学校里负责这个比赛的老师,从此这个老师对我特别关心。我顺利的进入了复赛,这极大的鼓舞了我,为了在复赛中拿到好成绩,我更是发奋的练习编程,学习算法,买了很多计算机竞赛的书看。后来我知道,按照我初赛的成绩是进不了复赛的,是我妈妈
学校里负责计算机竞赛的是个女老师,并不懂编程,或者说只懂一点点。我记得她给我讲过递归的算法,就是汉诺塔的问题,但是我没听明白。她很关心学生,经常会为参加计算机竞赛的学生订牛奶。进入了复赛有一个好处就是可以随意使用学校的机房。我记得当时参加复赛的除了我以外还有两个,都比我小,一个高二,一个高一,然而编程的水平却是倒过来的高一的比高二的厉害,高二的比高三的厉害,真是惭愧。我第一次见到那个高一的同学是在我高二的时候,那时候我以为他是高三的,过去问他一个问题,他很快告诉我答案并把程序编了出来,还教我用Turbo Pascal的帮助功能。他操作键盘的速度极快,看的我眼花缭乱,并且他编码的速度和正确率相当的高,很少按“Backspace”,而且程序基本上是一遍编译通过出结果,我感觉自己遇到高人了。后来问他是哪个班的才知道他还在上初三,只不过来我们学校练习编程,我当时真是无地自容。
接下来的日子我们便在机房度过,除了必要的主课要上以外,副课都不上了,专心编程。那段时间我感觉自己的编程水平飞跃了好几次,起码拿到往年的编程题目不会无从下手。我们经常一起讨论问题,比谁的算法更快,累了我们会玩几把CS,CS我比他们强一点。临近比赛的时候,我们还互相出题给对方做,进行模拟比赛,准备的相当充分了。
比赛的地点在无锡,离我所在的城市比较远,要提前一天过去。学校还是挺重视计算机比赛,虽然只有三个人。出去比赛那几天我们每人都配一台笔记本,方便练习,学校还包吃包住,从来没有享受过如此待遇。
除了我以外,其他两位以前都参加过这样的比赛,而且还不是一次。当时比赛的气氛有些紧张,还没开始敲键盘,我的手心就全是汗,还上了好几次厕所。比赛的时候时间总是不够用,最后一道题我刚看完题目时间都到了,根本来不及写代码,我只是猜了几个输入输出,没想到还撞到一个。不过在我的考场有个牛人,做了一个小时不到就走人了,最后他拿的是满分。
出了考场,我感觉有些沮丧,因为我觉得有些题目我能做的更好。中午吃饭的气氛有点压抑,大家话都不多,都在等着下午的结果。虽然老师不断的安慰我们,但这根本不起作用。谁都希望自己的努力最后能有一个好的结果。下午我们在比赛的学校参观了一圈,那是个贵族学校,硬件设施相当齐全,不过好像没什么人,估计放假了。
分数终于出来了,和想象中的差不多,60+,40+,30-(满分100),仍然按平时编程的水平排列。这个分数还算正常,没有什么超常发挥和失常发挥,他们两个一等奖都没有问题,只是能不能进前20的问题,而我的一等奖就比较困难了。我记得当时我好像是27分,老师带着我去要求重新测试,负责测试的是一个年轻的小伙,我估计是个大学生,他是黑盒测试,只看能不能在5秒之内出结果,不管是怎么实现的,而且他是用的程序自动测试。在他那里又跑了一遍我的程序,还是27分。当时真是急死人,因为有消息说一等奖要30分以上。我有些放弃了,但我的老师仍然不放弃,带着我去这次比赛的负责人那里要求重测。到了那里发现已经有几个人在那里排队重测了。那个负责人是个老头,挺有名的,但我忘记他的名字了,只记得我看的一本计算机竞赛的书是他写的。据说他以前是搞导弹的,退休了就负责青少年的计算机竞赛。他
第二次重测的时候我看到了自己的代码,这次是手工输入。很奇怪的是,同样的输入,这次我竟然得了32分,难道手工测和机器测有区别吗?这个问题我到现在都没搞明白。那个负责人除了给我测试以外还分析了我的代码,告诉我这个分数是公正的,我也只能得这么多分数。我很佩服他一把年纪,头发花白了还能看懂我的代码,而且这些代码的可读性相当的差,因为都是算法,而且很多是自创的算法。我的老师似乎不满意这个分数,想要再争取一下,但是后面排队的人有意见了,也只能作罢,在成绩单上签了字,接下来只能听天由命了。
吃晚饭的时候我明显很沮丧,其他两位也不说话。吃完饭我们就去等结果,组委会在开会讨论分数线,那里禁止一切人员出入。到了10点还没出结果,我急的眼泪都要下来了。终于到了11点,有结果了,一等奖的分数线是31,我恰好过线。我当时一激动就哭出来了,想想真是没用,唉。回去的路上聊天比较轻松,他们都觉得如果我拿不到一等奖很可惜,因为我已经高三了,最后一次机会,顶着高考的压力,还花了这么多时间,幸运的是我拿到了,命运之神再一次的站到了我这边。我记得高二那个家伙对我说我的精神感动了他,他高三也要继续,争取能进全国赛,我听了倒蛮感动的。
这次比赛可以说是一个转折点,虽然我不是为了高考的20分而去,但这20分还是起了很大的作用。我高考的分数是609,好像比复旦的分数线差了一分,不过加上20分就没有问题了。而且这次比赛为我奠定了很好的编程基础,这使得我在填志愿的时候很有目的,我就填了一个志愿,复旦大学软件学院。更重要的是在进了大学以后,我比其他同学的起点更高,学习也更轻松。这次比赛应该是我高中阶段最有意义,也是最重大的一件事情了,让我学会了很多,也承受了很多。关于这次比赛的很多场景我还历历在目,很难忘却,有时候回想起来,心情仍然不那么平静。
四、软院特色
“软件学院”,这个名字听起来不错,但很多人并不知道她到底是干嘛的。我算是进软件学院的学生中比较有目的性的了,我就是冲着她来的。我周围的很多人都是被调剂进来的。虽然我那时也不懂软件,但他们比我更不懂。还有些人选择软院是因为软院的广告,有个“爱尔兰”班,虽然我刚进大学的时候对其很有兴趣,但最终没能进去,因为我成绩太差。不过塞翁失马,我现在庆幸当初没进去,因为这个班就是一个名号,鸡肋而已,对绝大多数的人来说是没有意义的。
没进爱尔兰班也让我平时多了一些时间来学习我喜欢的东西,Java。软件学院的课程是以Java为主导的。刚进大学第一天,我们就拿到大学的第一门课的教材《Java How to Program》,一本厚厚的砖头书,1000多页,英文版。这对一个刚进大学的学生来说,实在是一个不小的挑战。我当时一直在想,我真的要看这本书吗?人的潜力是无穷的,我没想到短短两个月,我竟然把这本书的主要内容都看完了,那时学习的热情真是连我自己都感到惊讶!不过这本书确实也写的好,作者的语言和逻辑都很好,能让我有兴趣坚持看下去。我当时还很认真的把每章后面的习题都做了,现在硬盘里还能找到当时做题时建立的目录和文件。想起这些,我的嘴角总会露出一丝微笑,没想到我也这么认真过。
软院的特色是Project,这是区别于计算机系的最大的地方。还记得大一的Project是一个字母计算器,要支持多项式的加减乘除,这在当时绝对是一个非常大的挑战。高中学的编程都是面向过程,我的编程思路一时半会儿还无法转换成面向对象。但我的确用Java把这个Project完成了,我敢说当时能独立完成这个Project的人不足1/10。据说这个Project是Berkeley加州分校大二学生的Project,由此可见其难度对于一个以前不懂什么叫编程的人来说简直是Mission Impossible。回过头来看当时的代码,我还是有些佩服我自己的,把Java用的完全不像是OO的语言,我的思路完全是以前那套,只不过是Java的语法,有一个类2000多行,要知道,我当时的开发工具是EditPlus。除了TA要求的功能之外,我还做了很多额外的功能,包括支持无限层括号,出错检查,我还很有创意的设计了一个帮助系统。虽然在性能上面我的程序稍微慢了点,但我对自己的工作已经相当满意。我们的辅导员还安排时间请我和另外一个Project做的比较好的同学给其他同学讲这个Project是怎么做的。我并不觉得这个“讲座”有多大意义,因为没做出来的人不可能听懂我在讲什么,更多的我只是Show了一下自己的Project,让更多的人认识了我而已。不久前,我女朋友告诉我,她当时觉得我是一个非常乌糟糟的人,满脸痘痘,头发齐肩,看上去很脏……我有吗?看来我的自我感觉过于良好。
这个Project给我的记忆非常深刻,或许因为它是大学的第一个。我从这个Project开始学习Java,当时我还在抱怨为什么学院不教Pascal。应该说,当时老师教什么我就学什么,并没有什么目的性。我很有目的性的学习Java,差不多应该是一年以前的事情。自从我研究Eclipse开始,我便对Java产生了前所未有的兴趣,她的开源社区实在是太强大了,相比C#,我感觉Java更有活力。大学里面什么语言都学过Java,C/C++,C#,Delphi,我觉得要选择一门深入研究,我选择了Java,开始研究J2EE,那又是另外一片天地。
以后的Project,要说能和这个相提并论的,也就只有OS的Project,那是写一个操作系统内核,难度更大,不过那时我已经大三,水平也提高了不少,所以我觉得相对难度两个差不多。不仅难度上差不多,从收获的角度来讲也差不多。Java Project教会我做软件,而不仅是写程序,OS Project教会了我每个程序员都应该了解的,最最底层的编程。开始做OS的那段时间正好是我考TOEFL那段时间,虽然T考的很差,但我圆满了,至少我也尝试了一把。OS的Project分成5个lab,前两个为了考T都没时间做,一直处于第二集团,也就是消费者。软院的Project很有意思,第一集团是生产者,就是完全是自己查资料写代码,第二集团是消费者,利用生产者的劳动成果,加工成自己的东西,第三集团是分解者,这部分人根本不写代码,完全把别人的东西拿过来照抄。待到TOEFL结束,我开始无法忍受第二集团的感觉,我想要挤到第一集团去,并告诉自己,我最后一次拼全力把OS学好,看看自己的能力到底如何。功夫不负有心人,从第三个lab开始我已经在第一集团了,从问别人问题转变到回答别人问题了。在研究OS的过程中确实学到了很多,发现Intel的X86设计的是如此之烂,但说来奇怪,往往烂的东西容易流行,比如DOS,Windows(从XP开始已经进步了很多)。说实在的OS的课我没去几次,因为上课讲的东西没什么用,把Lab做好了,该学的就学到了。
其实在做OS那段时间我已经对编程产生了厌恶感,我开始讨厌软院的生活习惯,我羡慕对面电影学院的学生每天早上8点去吃早饭,上课。那段时间是我的低谷,我想要转行。我肚子上的肉也在那段时间长了出来,这让我很沮丧,所以我说OS的Project是我最后一次拼全力,我对学院的课程已经不感兴趣。我确实在OS上面花了很多时间,甚至熬夜Debug,那是我很久以前才干的事情。不过最后把TA的测试都跑通了,那种欣喜与优越感让我兴奋了好一阵。在做OS期间还有一个小插曲就是帮女友做OS,因为TA查抄袭很严格,我采用两种完全不同的方式来实现,这对我又是一个挑战,虽然最后她的那份不是很完整,不过已经没有更多的时间来完善了。
软院有一门课程与OS配套,ICS(Introduction to Computer System),这是软院的标志性课程之一,以区别于计算机系。虽然这门课讲的内容范围很广,也很有用,特别是讲CPU那一块,但这门课给我映像最深的是教材,包括书与Lab。首先书讲的通俗易懂,文字简洁明快,Lab与书中内容配套,而且设计相当精妙,看得出来作者是花了很大心思的。我曾经想仿照ICS Lab的形式设计一套DS的lab,和另外一位DS的TA有过一些讨论,但最终还是无疾而终。这又让我想到了国内计算机教育的落后,唉~
除了这些,还有Web,DS,OOP,DB,SE……这些课程都是作为一个计算机专业的学生必修的,但我感觉学院的这些课程在安排上面远没有上面我提到的那三门课那么吸引人,或者说在这些课程中学到的东西不多。
现在我已经是一只脚跨进了大四的人了,课程基本上都结束了。回过头来看这些曾经学过的课程,还是别有一番滋味。常常有人会拿软院和计算机系比,BBS上也经常为此发大水。就我个人的理解,从就业情况看软院要好于计算机系,因为软院血的东西和业界的关系比较大,而且软院的实践经验多一点。不过殊途同归,虽然有部分课程不一样,但都是学的计算机,很多东西相通的。要说软院好的话,可能软院是一个新兴的学院,比计算机系更有活力一些。
五、所谓的项目
除了课程,做项目也占据了我大部分的时间。软院有个比较有意思的团队,叫“维护组”。现在已经解散了,我当初进去的时候还像模像样的参加了面试。在我刚进大学的时候,上一届维护组的同学给新生讲过如何使用机房,如何用FTP,如何使用BBS。而维护组的主要工作就是保证机房机器的正常使用,包括拆机器,修机器,重装系统等等,这不禁又让我想起我初中的时候,感觉自己又要重操旧业。维护组经常出去聚餐,每个月还有工资,虽然只是象征性的100RMB,不过那也可以算是我拿的第一份工资了。
维护组除了平时装机器以外,还会做一些小项目,是自产自销的,也就是做了学院里面自己用,主要是机房管理方面的系统。目前还在用的有两个,一个是门禁系统,就是用来考勤的,另外一个是网上报修系统。后面那个是我做的,这个系统是我在大一暑假参加另外一个比较大的项目的空余时间搞出来的,用的是ASP.NET,极度的快速开发。其实我当时设计这个系统的时候还做了图书管理系统,教室管理系统,不过似乎学院没有这样的需求,最后真正用的也就只有那个网上报修系统。
除了维护组以外,学院还有一个项目组,也是一个学生团体,主要是在外面接一些小项目,或者做学院自己的项目。虽然是两个不同的组织,但参与的人有大都是一样的。我大一的暑假里,学院有个大的计划,想要做一个学院的信息化平台,说的简单一点就是一个可以高度自定义,高度可扩展的网站。采用的是ASP.NET,我就是在那时候开始学习的.NET。它的方便性一度吸引了我,但我现在又回到了Java的怀抱,因为我讨厌MS对.NET的垄断,并且Java的开源社区常常有让我兴奋的东西出现。那个项目真的搞的很大,总共大概有20人参与,分成三个组,一组负责需求和美工,一组负责数据库,另外一组负责业务逻辑,我参与的是最后一组。在开始做之前,大概花了半个月时间进行.NET的培训,流程和公司里面差不多。
做这个项目大家都很努力,学院也投入了很多,每个成员都有工资,虽然不多,由于是夏天,每天中午还有冷饮和水果,我们还经常出去吃饭,K歌。可能是开始的时候把目标定的太大,加上我们开发的人水平有限,最后这个项目还是搁浅了,最终没能上线运行。其实在我看来功能已经差不多了,关键就是稳定性欠缺一点,虽然后面也组织人修补过几次,但始终还是达不到要求,有些可惜。不管怎样,参与这个项目的人都学到了很多。这个项目让我第一次体会到了什么叫Teamwork,学会了使用CVS,了解了一个完整的项目开发过程。这对于一个大一的学生来说已经是难得的经验,这也使得我在以后的学习生活中看问题能比别的同学深入一些。在以后的项目中,这些经验都起了很大的作用。
不懂学院的老师是怎么看待这个项目的,可能感觉有些失望。项目组现在也不存在了,我觉得这对学院是个损失,少了一个可以让学生锻炼的地方。那个项目是学院的一个尝试,负责项目组的老师也想把项目组做做好,甚至能够盈利,但在学校里面做项目真的不容易,毕竟是学生,还要上课,也不能强制要求多少时间花在项目上,很难管理,水平也有限,软件工程那一套拿过来根本行不通。另外一个困难的地方是人员的更替,因为到了大三几乎就不可能有时间再参与这样的项目,而大三才是真正能够做点东西的时候,所以项目组里面始终是新兵,项目的质量自然没法保证。
不管怎样,失败是成功之母,这次获得了很多经验,如果以后再组建项目组的话,我想成功的概率会很大。从我个人的经验来看,学校里做项目,总共参与的人不能超过5个,过了这个数就很难管理了,分工过细以后往往导致交流的困难,开发进度缓慢。就我所看到的,几乎所有项目都是延期的。学校里开发,最重要的是兴趣,我感觉小规模团队的最佳模式就是两三个志同道合的人一起做一个大家都有兴趣的项目。
大一暑假是跟着高年级的同学做,到了大二,我就做Teamleader了。虽说是Teamleader,其实整个团队也就4个人,包括我在内,其中有一个人还中途退出了,所以就三个人在开发。不过虽然人少,但开发的质量却很高,包括美工在内。这次没有上个项目那么大,搞的也比较低调,虽然开发的过程和项目组没什么关系,但我们在最后项目署名的时候还是写了“软件学院项目组”,这个名字听上去不错。这次我们开发的学院的财务报销系统,并不复杂,我们按时完成了,而且经过大概一个月的测试期后,正式上线运行了,现在工作的很好。正是因为这个项目的成功,学院的领导想要开发这个系统的2.0版本,本来还是想原班人马进行开发,没想到领导变卦了,说“财务”系统让学生开发不好。他这么说的原因大概是因为我看过数据库里面的财务数据,其实我也不是有意要看的,那时我正在调试一个bug。不过这些数据还是让我感到有些“愤慨”,学院在某些地方的花费明显太高了,而给学生的工资却这么低。有一次吃饭的时候,我把我看到的跟一个我比较熟悉的老师讲了,没想到很快就到了领导的耳朵里,出于“安全”考虑,就不让我们学生开发了。真是以小人之心度君子之腹,我要看的话在系统里面留个后门谁知道!据说这个项目学院想包给外面的公司做,没想到对方报出的是天价,我和另外一个开发的同学都觉得学院在搞笑~
学计算机的学生在上学期间找的兼职90%都是做网站,因为这个工作门槛低,风险低。所以现在随便拉一个学计算机的都会做网站,而现在学计算机的又是满街跑,这就导致了做网站越来越不值钱。这也是我比较欠缺的地方,似乎在做网站上面花了太多的时间,很多没有意义的重复劳动。没有比学生更廉价的劳动力,在学院里面的报酬和工作是不成正比的,不过话要说回来,学院提供给我们锻炼的机会,可以容忍我们的失败与错误,到外面接项目是不可能这样的。权衡下来,在学校里面做点项目练练手是不错的选择。
学院负责学生做
项目做多了,翅膀硬了,一般的网站项目对我就没有吸引力了,除非给的钱特别具有吸引力。比较幸运的是,大二的下半年我参加了实验室的一个项目。那是和IBM合作的一个项目,不是网站,比较具有挑战性。说的简单一点是做一个BPEL的可视化编辑器,说得专业一点叫做基于WebService的可视化流程建模平台。参加这个项目也让我知道了传说中的“实验室”是什么样的,似乎它并没有我相象中那么神圣,更多的我看到的是失望。实验室里面真正做“实验”,搞研究,搞创新的人不多,更多的是在到处拉项目,拉赞助,维持实验室的生存与发展。不排除有人是真的在搞研究,但更多的是人混文凭的。所以我离开实验室了,我不读研,至少不在国内读研。很多东西你不去接触它是无法真正了解它的,外面的报道很多歪曲的,或者说你本来这个东西就不是你想像的那样。就像我回家跟父母说我在学校里做“项目”,他们感到很开心,觉得能在学校里就做“项目”很了不起,其实所谓的“项目”也就这样了。也许这就是理想与现实的差距吧。
刚开始做这个项目的时候,我有些受宠若惊的感觉,怎么能让我一个大二的学生来做如此“高深”的东西呢?说白了我们就是要做一个简化的IDE,是一个Eclipse的插件,而且BPEL这种东西目前市场上还没有应用,我感觉自己在做着世界领先的东西。这个项目的编码是由两个人完成的,另外一个是研究生,跟他合作很愉快。感觉他是一个编程功底扎实,学习快速,效率很高的人,我和他一个负责界面,一个负责模型,开发进度完全在控制之中。我很喜欢这样的Teamwork的方式,两个人也是team。我在实验室更像是一个临时工,没有座位,我就找没来的人的位子先坐着,等人来了我在搬到另外一个空的座位,打一枪换一个地方。由于拉我进实验室的是教我DS的老师,所以那个学期的DS Project就免了,我全心全力的做着这个在我看来有点“伟大”的项目。整个项目大概持续了一年,最后还是顺利的完成了,我不懂这个项目还会不会继续,估计IBM是不会在投钱了。很多时候我觉得那些公司和高校合作,也是一种做广告的方式,并不是真的寄希望你能为他做出点什么。我个人认为这个项目是值得继续深入下去的,这个领域在不久的将来一定会红火起来,但我还有很多事情要做,这个项目也不是我一个人能做的,版权也不是我的,我退出了,有点可惜。
不管怎样,从这个项目中我学到了很多,我学会了开发Eclipse插件,这在国内还是时髦货,更重要的是我学会了自己找资料学习新技术,学会了加入英文的新闻组,邮件列表,论坛,那里高手很多,跟国内的论坛的氛围完全不一样。在我开始学习Eclipse插件开发的时候,国内还没有教材讲这个的,英文也仅有一本,是Eclipse的开发者写的,我看过电子版,写的很精彩,后来国内有了翻译版,我买了一本,翻译的很烂。相比Eclipse插件而言,GEF(Graphical Editor Framework)的开发的资料就更缺了,连英文的教材都没有,只有一些零散的文章,剩下的只能看GEF的源代码,这给我上手造成了很大的困难。我当时几乎了找遍了网上能找到的所有关于GEF的文章,现在硬盘里还保存着。最后真正引导我入门的还是在一个日本的网站上面找到的一个Step by Step的GEF示例,这个例子做的很好,我跟着做了一遍,明白了个大概。虽然我比较讨厌日本,不过技术无国界,不得不承认日本的技术比我们先进很多,值得我们学习。经过了这一过程的磨练,我懂得了怎么在网上寻找资料,也习惯了看英文的技术资料, 这为我后来学习Hibernate+Spring+JSF提供了很大的帮助。
我在软院算是做项目比较多的了,从大一就开始帮学院里面做,然后是实验室。学到了很多东西,但也渐渐感觉到没啥意思,有时候觉得心有余而力不足,学校里的东西也就这样了,我想去公司里面混。
六、面试
TO BE CONTINUED...
不想当将军的士兵不是好士兵,我现在还是一个小兵,但总有一天我会成为将军。
心情: 挺好
