优秀程序员 分析提高能力 程序进阶

时间:2021-02-16 17:40:46
我出生在南方的一个农村。还记得小时候家里是很穷的,那时候上学也很便宜,我已记不清初中以前的学费是多少了。反正从小在家里玩泥巴,有一日村里两个女孩去上学,看到我就说一起去上学吧。当时一想,玩泥巴也厌烦了,不知道上学好不好玩,就一起去吧。从此走上上学之路(我的上学起由就如此之简单,可能各位的上学之路还会更曲折一些吧)。

    说是上学,其实就是在村里的一座小庙,庙里面似乎就剩个大菩萨。摆几张桌子椅子就是教室了。记得我刚进去时是六岁半,所以还上了半年幼儿园。结果就这半年幼儿园还整了个三好学生(没办法,谁叫咱自幼聪明呢,别嫉妒啊)。那时候啊,因为这个庙里只有一二年级,人少,因此比我高几届的学生,一年级都会上两年,然后再去大队的小学里上三年级。巧的是,刚等我一年级要结束,改革的春风来了,庙里的小学撤了,所有学生自动编入大队的小学,所以我新学期自动成了二年级学生了。

    小学阶段,我属于聪明但不用功的学生,因此老师对我都是又爱又恨的。结果考初中的时候考砸了。我们那一届,包括我们小学在内的几个大队小学,一共有120名毕业生,我只排在24名。进入初中后,分成三个班,我在一班。然后根据成绩排名,分派班*,我排名第八,所以只轮到一个历史课代表。教历史的老师是一个年纪大,驼背,走路两腿不连惯的家住的很近的老头。一到空闲时间就拽我去帮他干活。

    初中阶段我的成绩还可以,班里基本上是前两名,年级里是前十名(我们那个班实在不怎么样)。照说还不错,可是大家可能不知道,农村的学校,升学率是很低的。一届学生常有全部考不上高中和中专的,因为教育水平相对落后,而且城里的学校在录取分数线上是向城市倾斜的,我们必须比城里的学生多考十分才能有希望(不知道现在有没有改善)。

    本来升学的希望就不是很高,当中考还有一个月即将来临时,我还得了一场重病,差点要了命。那时候都是从家里带上饭盒,放上米和水,到学校的大锅里蒸饭吃。那段时间我天天剩饭,每顿就吃上一两口,回家睡觉只能朝右卧,向左卧时就不停的咳嗽。我父亲带我去镇医院看病,一个年轻医生说我是消化不良,给开了消食片。结果还是没有好转。刚好我自己看生理卫生书(初三的教科书,因为中考不考,老师都不教,自己看),看到其中一章讲肺结核的,我觉得自己的症状很像,因此又去医院看,我对医生说,我觉得自己得的可能是肺结核。结果把医院院长找来帮我检查,检查完后,院长很严肃的对我父亲说,怎么到现在才来。拍片的效果看到我的整个左胸已经不透明了,全是黑影。我得的是肺结核中的一种,叫做胸膜炎。

    此后我在医院里呆了半个月。做了两次抽水,一次抽出一痰盂水,用那种直径大概有四公分左右的大管子,一次抽十几管子。但我很幸运,两次后基本上就没有水了,住了半个月就好了。医生都说一般半个月好不了。半个月下来,我的右胳膊比左胳膊细了一圈。因为我坚持打吊瓶用右胳膊,因为我是左撇子,还是希望左胳膊更强一些。

    原本希望能够留级,来年再进行中考。可是最后没有成功。我们那边管的比较严,要留级只能在初二,初三不允许留级。而且我生病距中考只有一个月时间了,学校都已经完成报名工作了。在医院填报志愿时,第一志愿填了师范,第二志愿是中专,第三志愿是市高中。在那个年代,对农村人来说,能够将农村户口改为城市户口,那是相当荣耀的事情。因此大多选择师范和中专,高中是无奈的选择。

    对于我来说,对未来已经不抱希望。我想我也有足够的理由来安慰自己,谁叫自己时运不济呢。中考的时候,我感觉自己没有任何的压力,可以说是潇洒的考完。然后就呆在家里看电视(很遗憾,我的近视眼就是这个期间造成的)。直到有一天,我们村里的女孩(前文提到的叫我一起去上学的两位女孩之一)跑到我家来告诉我,我考上了高中。

    那一年,我们学校总共就考上了三个(指中专,师范和重点高中),而我居然是其中之一。要知道,平时我根本考不到年级前三。而且分数也不高不低,正好和市高中的录取分数线一样。天啊,难道注定我要走学习之路。

    高中是我最充实,最得意也最辉煌的一段岁月。也许到进入高中开始,我自己才对自己有了一个完全的改变,简单来说,是自己“懂事”了。从进入高中的第一天,我就告诫自己,我是整个学校中最差的学生,因为我刚达到分数线。因此我付出了前所未有的努力,在一个学期后,我已经是班里的第二名了(全年级四个班)。从此我的高中生涯相当的顺利。直至高考前获得了保送西安交通大学的名额。

    在选专业的时候,共有10多个专业可选。那时,我最好的科目是数学和化学,最差的是物理。结果我发现10多个专业中,有自动化,轮机,热能等等专业,除此之外,还有一个计算机。没有我期望的数学和化学,再去掉我不希望的和物理相关的专业,我发现只剩下一个计算机了。至于为什么没有把计算机专业也算在物理方面,是因为我在高中时的课外实践课中有过一堂计算机课,当时用五笔输入《登鹳雀楼》这首诗,结果一节课下来就输入了第一句。因此知道计算机不是物理专业,而且“计算”这个词怎么说和数学沾边,因此最终选择了这个专业。

    冥冥之中似有天意。也许上天注定我要做个程序员,让我有个程序人生。因为这实在是我学习生涯中的唯一选择。不选它,我还能选择什么?



第二章 我的大学

    大学这四年,可说是我人生中最无为的一段时光,和高中可以说是截然相反的两个阶段。当然,也可以说是最轻松的一段时光,因为不像高中一样那么有压力,有目标。

我在大学生涯很是中庸。何以为证?第一,就是我的成绩一直在班级中处于中游,即没有得过任何奖学金,也没有补考或者重修过任何一门课程,基本上我的成绩就代表了班级的平均分;第二,直到大学毕业那年,当了我们班四年班主任的老师不知道我是谁。说明我即不是优等生,也不是劣等生,一般这两类学生对老师都有着深刻的印象(很遗憾,我连浅浅的印象都没有给老师留下)。

    大学这四年,就这么庸庸碌碌的过了。当然,这其中也有一些有意思的片断,也许有一些也在您的身边发生过。

   第一段:键盘上的舞蹈家

    大一的上半年,计算机专业有个课程,就是指法课.作为程序员,键盘上的舞蹈家,键盘输入的指法是基本功.因此有这么一个独立的课程.当时看到城里的同学那么轻松自如的输入英文字母,简直是太羡慕了,这时候我还处于满键盘找字母的状态,别说是盲打了.

    经过三个月的特训,我终于学会了盲打,而且速度一点不比城里的同学差。不过由于练习的时候只练了字母,所以至今输入数字还不是太好。不过,现在看着不少同事还在很蹩脚的敲键盘,觉得自己还是挺庆幸的。

   第二段:叶利钦和叶玉卿

    不太清楚计算机系和物理有多大关系。反正大学的第一年还开了物理课。这是我最头疼的东西。物理老师是个糟老头(之所以这么说,并不是对老师的不敬,而是确实有些不修边幅)。记得第一节课时,老师先进行了自我介绍,说他叫叶应钦。不过这个老师好像是四川那边的人,普通话实在是不太好。所以我们大多听成了叶利钦或者叶玉钦。结果这个雅号就一直伴随着这个老师一生。

    物理是我最不好的课程,从初中开始对物理就特恐惧。因为不知道为什么,在做应用题的时候我分析成功的概率很低。由此,在物理期中考试的时候,我的所有的应用题全部答错,最终得了58分。这是我在大学期间唯一的一次不及格。

    叶老师把我训了一顿,甚是语重心长。结果期末考试我居然神奇了一把,考了我在物理史上的最高分,92分。没有想到物理课我居然有善终。

    很遗憾的是,我们的叶老师由于不修边幅,不懂养生之道,在第二年就因病去世了。

   第三段:军训

   我不知道大家在大学期间的军训是在什么时候进行的。就我现在所在的附近的几所大学,都是新生刚入校的9月份进行。而西安交通大学则不是。军训都是安排在一年级结束后的暑假进行,也就是七月份。

   可以想象一下场景:在古城西安,灰黄色的天空下,没有寸草的操场上,阵阵热风卷起灰尘,形成着小型的沙尘暴;太阳火辣辣的直射这地面。在地面温度起码40度的环境下,一队可怜的学生,穿着古朴的军装,皮带周围和背部都是白花花的盐的结晶体,排着队伍进行着匍匐前进的训练;卧倒了进行射击训练,可那枪上的把手已经被太阳晒的滚烫了……

   至今这个场景让我后怕。更可恨的是,到七月份的时候,学校居然把道路两旁那些梧桐树的树枝全部修剪掉了。想躲太阳都没有地方。

   但是,就在这么恶劣的条件下,我还是完成了一个自己觉得比较愉快的军训。说愉快是因为我过的还不错,并且还有些有意思的事情发生。

   我们系四个班,每个班大约5名女生,被独立成一个女生排了。剩余的男生编成三个排,三个排合成一个连。连长和二排长是我老乡(都是一个省的,其实在我眼里,不是我们一个县的都不算老乡);一排长和我一个也在西安上学的高中同学是熟人,他们的父亲是战友,并且我这个同学居然托一排长关照我;我自己在三排,排长不知何故,对我非常友好。所以总的来说,我就是比较容易混的了。

   好混体现在几个方面,一是可以偷工减料。在训练侧高姿前进时,每次该轮到我时,排长总会说,先到这里吧,大家休息;二是可以开后门。每个连都要抽出一个班的人,成为连队的军姿班,结果我也顺利入选。

   那时候天热,训练一些时间就会休息一会。一休息大家都会去小店买冰水喝,就是那种塑料袋装糖水,然后放冰箱里冻起来的那种。我们喝了都没有事。本来我们是也给连长他们买的,不过不知道是不是有纪律,一直不喝。直到又一次可能太渴了,就喝了一袋。结果第二天就没有看到连长,原来是拉肚子了,挺惨。

   军训结束的时候需要进行汇演。其中有一个晚会,每个连都要有节目。我们连节目是大合唱一首红歌(记不清名字了,好像歌词开始时“雪皑皑”什么的),同时还要编排舞蹈,结果我又被“照顾”了。进行了人生第一次也是唯一一次的文艺演出。

   军训的最后一个科目是射击,结果我的射击实在是太差,就打中一枪九环,打完后发现我是第一个站起来的。后来连长沉痛的告诉我,由于我射击实在太差,没法照顾我成为军训标兵了,本来都内定的。不过好在最后把我的射击成绩从九环改成三十九环,顺利的结束了军训生涯。


第四段:少年班

    当年西安交通大学还有少年班,也不清楚怎么选上来的,但肯定是那个年龄段中的佼佼者。少年班的在经过一段时间学习后,会插班到各个正常班中。在我们大二的时候,有五六个少年班的插入了我们系,年级平均要比我们小四岁的样子。

    他们初进班的时候,有一次上课,听说这些娃娃要考英语六级了。当时很是惊讶,小孩子都这么厉害啊,我那是才在上学校的二级英语课啊。而且听说有些已经考过一次六级了,五十多分,没过。

    当我大三的时候,通过六级英语考试时,发现那些小孩还在参加考试。而且听说最后才考了三十多分。我很无语啊。考了那么多次,居然还越来越低。

    总觉得把一些好苗子,过早的进行强化教育,到头来很容易拔苗助长,非常可惜。也许按照他们的正常轨迹发展,应该会有一个更好的前景。

    我们系那几个小孩子,最终的结果是只有一个考上研究生,其他几个都毕业了事。而且,从他们插入我们系开始,基本上每次考试都会好几门大红灯笼高高挂。

   第五段:老师,你没有走错门

   以前听人讲过大学里老师进了教室后,发现人多,以为走错教室,接着就走出教室的故事。我以为在我身边不会发生,结果还真让我经历了一次。

   大学里最无聊的课程,可说是那些政治课了。因此,经常没有几个人去听,老师也心知肚明,有一个人也照常讲课。我们的哲学课就是这样,平时机会只有十几个人去听。到了期末考试前的倒数第二堂课时,老师说,下一节课划重点,基本上考试范围就在这其中。结果回去后大家都通知了那些没有去上课的。到最后一节课的时候,教室里几乎座无虚席啊,120多人都到齐了。

   上课铃响,只见哲学老师夹着书本匆匆进门,到讲台前放下书本,抬头一看乌压压一片人,惊慌之下夹起书本又朝门口走去。我们高喊老师没有走错。老师到门口后,抬头又仔细的看了看门牌,确认是没有走错门后,又走了进来。老师说,没有想到,今天有这么多人。

   第六段:游戏中毒

    在上大学之前,我还不知道游戏是什么东西。进入大学后,第一学期就开始接触了游戏。那时候还是使用五寸的软盘。计算机还是DOS系统,噼里啪啦一阵DOS指令,将软盘中的文件复制到计算机,然后进行解压,安装。我的DOS指令的学习全是通过玩游戏学来的。

    那时候还没有很多游戏,记得当时玩的主要是《太阁立志传一》和《元朝秘史》。主键的又增加了《三国志英杰传》。当然,主要是我自己比较喜欢玩这种风格的游戏。

    我的大学四年,计算机的升级速度很快,几乎就是一年升一级,从286,386,486直到毕业设计用586。因此游戏的发展也是很迅速,五寸的软盘很快退出了舞台。游戏也从C&C,红警,大富翁,魔法门英雄无敌,一直到暗黑破坏神。

    当时在学校内有一个游戏房,当时的游戏房还不能和现在的网吧相提并论。但对学生的吸引力那是相当大的,尤其是计算机系的学生。整个机房里,几乎都是我们系的。当时和老板是很熟,课余时间我们去的话,如果有空闲的机器,老板是随便我们玩的,不收钱。因为我们都是他那里的VIP用户了。

    玩物丧志在这时候得到了良好的体现。我们这些人像中毒一样。这个机房就像有无穷的吸引力。我们宿舍最要好的三个人,到后来,只能从另一条道绕一大圈去自习室,因为如果走机房旁边的路,那么我们的终点肯定是机房。那种感觉就是不由自主。有一次一门专业课第二天就要考试,可前一天晚上我实在扛不住了,扔了书本去机房玩了几个小时,整个人才精神起来。

    中毒了,这的确是中毒了。

   第七段:四大杀手

在我们学校的计算机系,历来有四大杀手之称。这个称呼在进校时,就从高年级的老乡那里听到。所谓四大杀手,就是教四门专业课的老师;为什么称之为杀手,就是有两个特点:一是卷面分如果是59.5分,那么也是不及格,补考;二是补考通过率比正常考试还低。一般的大学考试都有一个默认原则,就是老师会根据考试的情况,酌情调整分数,保证不通过的人数就是那么几个。因此诸如开根号乘十的公式常常会得到应用。但是在四大杀手面前,没有这个原则。

四大杀手之下,冤魂甚多。据说有人补考了六次还没有过,大四毕业了拿不到学位证书,因此在最后一次补考时,铤而走险,结果因为作弊被学校开除。杯具啊。

在四大杀手的威名下,我们是谨小慎微,如履薄冰。考试前,做了充分的准备。比如我,就找到高年级的老乡,拿到上一年的试卷,从头到尾一字不拉的反复背诵了N遍,最终得以通过考试。我的成绩是七十分。要知道,我们考试的试卷,与上一年试卷的重合率是百分之八十。回想一下,汗流浃背,如果我没用这一招,肯定是逃不过黑手。可怜我那高年级的老乡,由于没有做好准备,该科目补考了两次。顺便说一下,这门课,就是《编译原理》。


  第八段:考前突击队

       我想可能很多人都有考前突击队的经历。我在大一的时候,还是比较用功的,也是沿袭了高中的一些习惯;到大二时,已经开始逃课了,到大三就更不用说了,能每天一课就不错了。不只是我一个人这样,除了学习成绩好的外,大多如此。我曾经总结过,七点半就往教室走的,那肯定是一年级的;八点钟在往教室走的,那一般是二年级的;九点在往教室走的,除了直接上第二节课的以外,那是三年级的。对不起,路上没有四年级的,因为要么不在学校,要么还在睡觉。

   不上课怎么应付考试呢?那只有做考前突击队员了。很多课程都是考前一周才开始拿起书看的。当然,不会傻到从头到尾看,而是会拿起两类圣经:一是往年的试卷;二是题库。大学的专业课,一般都有题库的,老师也没有这么勤奋,每年出新题。因此试卷都是从题库中抽样出来的。而且专业课的题库量是相当有限的。因此如果得到题库,那要过专业课考试,简直易如反掌;其次就是多拿点往届的考题,综合下来基本上也覆盖大半个题库了。

   第九段:玩物丧志

   在大学里,除了游戏害人外,还有一个东西,也是误人子弟,而且颇有风险,那就是赌博。赌博是个高风险的活动,因为一旦被抓,立马开除。然而我们就是这么顶风作业,而且很是盛行。一来我们宿舍在顶楼,来往的人少;二来班主任和辅导员实在是见面太少,而且都是女的,到男生楼估计也不方便。

   开始的时候,是玩红四,一般一把牌是一张饭票。那时候大学生还享受每个月三十元左右的补贴;学校就发饭票(当时还没有饭卡),一张饭票价值五角。惨的时候,一小时能输掉一本饭票,把当月的伙食费给输光了。

   后来就玩起麻将,把书桌拼起来,铺上厚厚的毛毯(不然声音太大),赌注也更大了,一元钱一把。顺的时候,一小时能赢好几十。有一次玩的投入,连班主任来都不知道。还在没有进我们打麻将的房间。真是惊险啊。

   打麻将对我的影响,更体现在大四的时候找工作。有天晚上,正在兴头时,一个同学进来告诉我们,有个惠州的单位招人,只要投简历就要。当时我们宿舍三个最要好的都在玩,就商量着第二天再去。结果第二天,那个单位看到人多,就开始挑剔了,由于我的成绩只是班里的平均分,所以把我一个人刷下来了。此后也没有找到像样的工作。现在看到他们现在腰缠万贯,真是悔啊。

 

在大学这四年,通过一些事,也有了一些人生感悟,到现在还影响着自己。

   动力论

    学习成绩不好,是因为进了大学后,动力全无,感觉所有的劲在高中就全用光了。这使我对一些东西又有所感悟。比如有些人,小学的时候成绩挺好的,可到初中就落下了;然后有些人初中也相当优秀,可到高中就倒下了;然后就是像我这样,高中还不错,大学就不行了,甚至还有毕业不了的,更惨的是沦落到作弊导致被开除的。我想,这些人在小学,初中,甚至高中都可能是佼佼者,作弊对他们来说因该是很遥远的事情。这个规律也在我高中的其他同学身上印证,比我成绩更好的同学,也就是大学毕业了事,而高中时成绩中等的两个同学,最终一个医学博士,一个化学博士,最终都到美国发展了。

    这个现象的原因,在我看来归结于动力和兴趣。当面对新的环境时,如果对于外界的诱惑和干扰你无法战胜自己,那么就会被吞噬,被俘获。如果未来对于工作,对于人生也都是如此,那真是莫大的悲哀。也许最终你会问自己:我为什么活着?

   这山望着那山高

    进大学没到一个月,收到我高中同学的来信,他在上海的一所大学。他说对自己的学校很失望,本以为会是一个崭新的环境,没想到学校破破烂烂的。还认为我们学校一定很漂亮(估计是看了高考前的招生广告了)。可他哪里知道,西安是一个什么样的地方。真是无风三尺灰啊。晾在窗外的衣服,一天下来能给你沾一层灰;他哪里知道,西安的房子外墙根本是不刷石灰的,更别说瓷砖了。因为即使这么做了,过不了多久,墙都会变成统一的灰色;他哪里知道,西安交通大学是一座建在坟堆上的大学,搞不好你挖地三尺就能掘出个古墓来。就我所知,我在大学的这几年,至少挖出三个古墓。

    造成我的同学这种思想的原因,就在于他没有实地的考察,只是凭一些资料图片,就简单的认为那个地方是好地方。从此我也明白一个道理,不要这山望着那山高.当你不亲身体验之前,不要妄自下结论。这个特别体现在程序员们对待工作上,在跳槽这个问题上,还需要自己更慎重的考虑。一个错误的决定可能让你后悔莫已。


 学习英语,对许多人来说,是一件痛苦的事情,最终的结果可能还是一知半解,更多人在读,写,听,说中也就能达到读的境界。

对于大学学习来说,不少人头痛的就是英语的国家四级考试了。四级考试过于不过,直接影响到毕业时能不能得到学位证书。因此往往压力较大,要是第一次没有通过,很容易越考越差。而我的四六级考试,却又充满了戏剧性……

第一段:初中英语

刚上初中时,成绩不是很理想,作为小学里名列前茅,总是三好学生的我来说,是件丢人的事情。然而初一的英文老师是个年轻而没有经验的女老师。对于我们这些桀骜不训的农村学子来说,缺乏威信。结果是每次上课,都是哭着下课,原因是学生都用纸团等垃圾砸她,只要她一回头面向黑板板书时。整个初一就这么度过了。可想而知,全班的英语成绩会怎么样,绝大部分人红灯高挂,我比较幸运,也只是勉强过关而已。最大的弊病是,英语音标没学好,以至于将来的我英语发音永远是个痛,至今不敢说英语。

初二时,学校派了一位颇具威信的女教师,大家都比较信服(也不知道为什么会这样,只是在小学的时候听我哥说,这个老师比较厉害。至于怎么个厉害法,就不知道了)。而这个英语老师对我非常关心,我的每一点进步她都表扬。在她的关心和帮助下,我的英语有所提高,基本上能够保持80分左右的成绩,这对我来说,已经是着实不易了(我也不知道老师为什么这么关心我,难道她看出来我以后能考上大学?反正她是我这辈子最感激的老师了)。

初三那年,临近中考时,我不幸得了重病,这在第一章已有介绍。由于心理放松,居然中考成绩考出了自己我最高水平,英文也有90分之多。这大概是我迄今为止英语的最高分了。

第二段:高中英语

高中生活虽然我比较满意,但英语并没有什么提高。

高一时的英文老师的英文水平相当厉害。据他自己介绍,参加全国的一个什么英文考试(忘了哪个,好像是托福之类的),得了省内第一名。确实,从教课中我们也感受到了他渊博的英文知识。板书非常漂亮。书上的任何一个英文单词,他都能写上几黑板的板书,不能用举一反三来形容了,简直是举一反十都不止。这样的结果是,我们每个人每堂课都忙于记录板书,居然他说什么都没有记住。一个学期下来得有几本笔记本。最后,大家的英文成绩都比较差。但我这却有考试运。对,是考试运。这个词将贯彻我以后的学习生活。平时测验60来分,总是被批,可每次期末考试我都是80分以上,算不算运气呢。

高二那年,那个英文老师下海了,专门给人翻译文章。我觉得他这么做是对了,挣的钱多不说,关键是适合他。教书是在是个浪费。新任的英语老师是学校的英语教研组组长。板书一塌糊涂,得仔细分辨才能搞清楚。一堂课写不了几个字,但大家的英语成绩却普遍有所提高。这也许是个教育界的问题,有渊博的知识,如何传授?有是现在的我困扰的问题,如何带好年轻人,是他迅速成长?

第三段:大学英语

我们学校规定,必须过了学校的三级考试,才能参加国家四级考试。刚入学时,进行分班考试,总分120,我考了72分。结果75分以上为A班,60分以上为B班。其他C班。A班直接从二级开始学起,其他班从一级开始学。这就意味着我差了三分,却要晚半年才能参加四级考试。晕哪。由于不好好学习,光吃老本,所以前三级的考试成绩有点成等差数列,分别是85,74,63。

四级考试我很认真,因为通不过没有学位啊。紧张,这个感觉一直缠绕着我。导致最后连作文的时间都没有了。考完后脑子有点空白,完了,我完了。但命运并没有和我过不去,最后终于以62分过关。哇,好险啊!!!

最有意思的是六级考试。能够看到这里的朋友,我非常感谢你,看完前面那么一堆垃圾。四级过关后,我心情非常好。先前A班的几个同学参加了六级考试,结果没有过关的,有的考了58分,唉,可怜啊。本来我不准备报考六级,因为实在水平不到。但考虑到只要17元报名费,而且他们邀我一起。因此我也报了下一期的六级考试。但直到六级考试前,我没有看过一次六级的参考书,也没有背过六级的单词,更没有听过六级的磁带。因为这时的我,整天呆在机房里玩游戏啊。

六级考试我吸取了四级的教训。因为四级考试时,在听力上花了不少时间啊,导致最后时间紧张,连作文都没来得及。所以这次六级考试,一发下试卷,我就开始做听力题。看到这里,众位看官要问了,磁带还没放呢,怎么做听力啊。^_^,这就是我的过人之处了(自夸一下)。考试的经验就在这里(这个经验不值得推广)。我发现,听力题目一般不会太难,四个选项一般有一个离题千里,一个稍远,剩下两个比较接近。这就容易了,一比较就找到这两个接近的,然后嘛,就是二选一,接近50%的正确率。跟着感觉走吧。而对于听力的短文来说,就更好办了,根据三个问题的12个选择项,基本上就能知道这个短文要说什么了。因此,我很快就将听力做完了。我记得当时开始播放听力时,我已经开始做单选了。

结论就是:如果你听力不行,干脆别听。否则有两大坏处,一是干扰你的选择,使你无法根据感觉走,有时候第一选择往往是正确的;二是耽误你做其它题的时间啊。

单选也有麻烦,因为40个选择项,我没几个认识的单词啊。不过做起来也不难。遵循两个原则:认识的优先,剩下的则第一印象优先。所以单选也很快做完了。

关键的关键是阅读理解啊。40%的分数在这里。我已经想不起当时怎么做的了,因为不认识的单词太多了,根本看不明白短文要说什么。

作文还不错。我还记得当时的作文是要写“欲速则不达”。我就举了个拔苗助长的例子,来证明“欲速则不达”。可惜的是,我居然想不起“苗”用英文怎么写了。唉。最后用“草”代替了。

答完试卷后,还有很多时间,我又悠哉悠哉的复看了一遍(其实看了也是白看),记得我还提前交卷了。呵呵。考完后唯一感觉是:得100分我也不奇怪,得0分我也觉得很正常。因为我都答了,但没有一题肯定正确的。

最终我的六级考试成绩为62.5,比四级还高0.5呢。而和我一起参加考试的那些二进宫的同学还是只有50多分。我当时有一个想法,如果我能看看我的试卷多好啊。不知道到底哪道题作对了啊。

我就这样过了英语六级。也许大家看了心里有点不平衡啊。我也是。因为这直接导致的后果是我的英语越来越差。因为我以后就更不看书了。记得有人说,60多分过关的人不如考59分没过关的人。因为考59分的人还会继续努力学习英语,而考60分的人,以后可能都不会再看了。我认为确实如此。因此大家不用不平衡。我的损失比你们大啊。


九八年七月,终于结束了大学生活。进入了山东潍坊的一家老牌的以排版软件起家的一个集团上班了,正式开始了我的程序员生涯。

    正是由于大学末年没有好好找工作,错误了最佳时期,因此只能在第二轮招聘中选择这家似乎听说过名号的单位了。当然,和现在的大学毕业生相比,当年的大学生找份工作还是比较容易的。可就是这个选择,还造成了我的家人的强烈的反对,他们希望我能够回到南方工作,只要离家近就可以。但我这人目光比较短浅,在我眼里,挣钱多的地方工作一定很累,所以我选择小城市。

    九八年刚好是一个改革年。从这一年开始,不再有任何福利待遇(不包括五险),所有的收入都体现在每个月的工资中。那一年,我的初始工资是一千元,而公司里比我们早一届的,工资单上只有四五百。

    潍坊虽然是个地级市,下辖近十个县,但其实城区很小,骑自行车就可以满城跑。单位新进的大学生有一百多人,都住在同一个宿舍楼。下班后,周末时,经常一起玩山东的扑克玩法:勾级和保皇,经常看的人比玩的人还多,热闹非凡,比大学的日子还火。

    刚走出校门的我,由于在学校里也没有什么实践,除了毕业设计用了Foxpro之外。所以说一切都是从零开始。我的新工作是开发新一代的杂志和报纸排版软件,因为上一个版本还是在window3.1上开发的。项目组成员包括一个项目经理,两个有经验的程序员,以及我们四个刚毕业的初哥。

    开始时,我们几个初哥连VC是什么都不清楚。所以第一件事,就是先做一个HELLO WORLD,熟悉工具。也是在那期间,我买了第一本VC方面的书籍,主要是关于界面开发的。其后我基本没有再买过什么VC方面的书籍,因为我实在是不爱看书。

    等我们学习一段时间后,就开始正式开始排版软件新版本的开发了。

    排版软件虽说是一个产品,但它本身是不直接体现价值的,因为光有排版软件是没有太多意义的,更大的价值体现在用户需要购买激光照排机。排版软件只不过是随机赠送的一个部件而已。而且,当时公司的产品重心在程控交换机的研发上。同一年毕业的,做程控交换机的,比我们做软件开发的,工资待遇要高出百分之五十。所以,就IT民工来说,程序员还是其中最低级的一种。

    不过,对于我来说,第一份工作是开发产品软件,我觉得是相当幸运的事情。因为产品的研发周期一般都比较长,在时间压力上比项目开发要轻一些;更重要的是遇到了这么一个开发团队,给予我这样的年轻人大量的实践机会。常看NBA的人知道,如果你新加入了一支成熟的球队,那么新人一般很难得到很多机会,一旦你犯错误,那么机会将更加稀少;反之,如果到一支重建型球队,那么年轻人将得到很多锻炼机会,只要你能够展示出你的天赋和潜力。我正好加入了这么一个团队,以我们四个年轻人为主,另外还有有经验的师傅在一旁辅助。如此的环境让我们迅速成长起来。

    我在整个产品开发中的职责是图形绘制、图像处理和界面开发。当然,图像处理只是皮毛,和大家常见的图像编辑工具不是一个概念,主要是将图片按照设定的区域进行裁剪;其他人分别负责文字排版,文字处理,PS文件打印(排版软件特殊的打印方式,其实就是输出成特殊文件,为后续的处理做准备)等。

    这段岁月对于我来说,印象是非常深刻的。我记得当时新产品软件的名称都是我起的,叫做易捷,取英文单词easy的谐音。若干年后,碰到当年的项目经理(当时已是这家公司的副总),说起往事,他还告诉我,现在我的名号还挺响亮,因为我的代码还在使用,其中很多注释处都写着我的名字。

    这段岁月对于我的另一个记忆就是勤奋。很少有人下班时间到就走人的。毕竟软件开发和机器加工不同,机器停电了就只能休息,但软件开发即使下班了大脑还在运转。在手头的工作没有告一段落时,都不会立即下班走人。为什么我对这段有深刻记忆,是因为现在周围的同事,绝大多数人只要一到下班时间就都走了。

项目起初的进度非常快,因为随着每个人对工具的熟悉和对业务的深入了解,很快就构建了一个几万行代码的程序,一些基础功能也初见成效,大家都非常有信心。但毕竟是初出茅庐,对面向对象的概念,软件的整个过程以及质量和版本管理方面都没有深刻的体会,因此大家都不知道一场危机正向我们逼近。


没有良好设计和管理的产品,必然会遇到困境。也许这个困境只需要简单办法就能够通过,也许这个困境将使你不得不从起点重新开始。

    我们的排版软件,在中期阶段正是遇到了很大的困境。当前期开发很是顺利,甚至已经有版本在用户处实施,使用后,这个困境就像开快车时进入了一个死胡同,让我有崩溃的感觉,也直接导致我产生了退却之意。

    那么我到底碰到了哪些困境呢?

   困境一:版本和配置管理

    首先遇到的是版本和配置管理的困境。也许我们的项目经理也是新手,在软件开始发布版本后,当用户提出某个问题后,项目经理会在解决这个问题后就向用户发布更新的程序。但是,却没有做任何记录。当时并没有使用任何配置管理工具(连VSS都是这之后才开始采用的)。要知道,排版软件并不使用数据库,所有用户编辑的信息,都如同WORD一样,是使用数据文件形式存储的,而糟糕的是,这个数据文件形式就是VC中的序列化产生的文件。

    由于数据结构经常性的变动,导致数据文件的序列化函数经常性的变动,也导致了不同版本数据文件不能向下兼容,因为本身就没有充分考虑版本问题。

    因此,当上海的某用户电话告知新的程序无法读取先前制作的排版文件,而先前的版本已经都被替换掉后,我们两个程序员被紧急的调往上海进行解决,也促成了我第一次的飞机之旅。虽然我们连夜一直奋战到天亮,但还是由于水平有限,没有能够解决这个问题(实在是形成的版本太多,根本就不知道用户的排版文件中的数据结构了)。

    通过这件事,我想以后作为一个项目管理者,或者作为一个程序员,对于你负责的一个项目,或者是一段代码,时刻要意识到版本的重要性。也许,从现在看来,有很多方法可以避免这种困境的产生。

    比如,产品版本发布不能随意,每次发布都需要有唯一的版本号。

    比如,对于用户,也要有版本的管理,对于一个用户使用的版本历史,都要可回溯;

    比如,对数据结构的版本管理。对应与其它系统,可能就是数据库版本的管理。当然,不同的是,数据库毕竟还是可以打开进行查看数据项。

    比如,还有很多其它更多更好的办法。

    通过这个困境,对我的影响是,在以后的项目开发中,使用VSS,CVS和SVN等多种工具进行版本的管理,包括源代码,设计文档,安装程序等等;另外,学会了在工程中的Readme.txt中记录版本的变迁及What’s new;在Version中定义程序的版本号和时间;在源代码中增加更多的代码更新标签;以及在安装程序中定义安装程序的版本信息。

 

   困境二:面向对象设计和编码

    对于程序员来说,更关注的是自己的代码。作为很多计算机系毕业的大学生来说,对于面向对象这个概念早已是滚瓜烂熟,甚至于《设计模式》等书都已是熟读千遍。而实际,大多是纸上谈兵,对这个词并没有充分的理解,往往一开始编码时,会不知所措。

    这个我并不是危言耸听。就我的经历,曾经指导过几个新人,初用VC时(其实都是自称使用过VC的),我都会出几个作业给他们做。因为我认为光看书本不练习是无法深入的。其中有个题就是画图形,我只要求是直线和矩形。结果所有人都是直接在视图类的OnDraw和鼠标事件中直接进行所有的操作,根本就没有考虑,是否要进行一定的封装,使得代码更加独立和易扩展;也没有考虑到程序运行的效率。

    很不幸,大学刚毕业时,我也是属于这个群体,甚至于更差,因为我还没有用过VC,对面向对象也没有什么个人的理解。因此,随之而来的代价也是不小。由于开始时比较顺手,代码模块也不大,几乎所有的操作都在视图类完成,虽然也写了一些类,但实际上,从现在看来,只是一些数据类,并没有封装其动作,而所有的动作都在视图类完成了。这么做的结果,是导致视图类无限制的膨胀。到我碰到困境时的情况是,我们四个新人,每人写的视图类的部分各有一个cpp文件,另外还包括一个主文件,放置鼠标事件等公共部分,整个视图类代码行数有三万行左右。

    也许就算这样,很多的软件也能扛下去,但我很不幸,遇到困境了。用户要求对所有图形都增加旋转功能。于是,我乱了。由于整个类结构没有进行很好的设计,甚至于一个鼠标点击事件都有上千行代码,要增加一个旋转功能简直是工程量浩大,因为我无法确定对多少代码有影响,很容易出现东堵西漏的局面。

    这个困境对我来说非常致命,导致我的心情极差,兴趣降到了最低点,对自己的能力也是更加的怀疑。

    当然,若干年以后,这个困境对我来说却是一笔很大的财富,使我对面向对象有了自己的理解,对于模块开发形成了自己的一套思路。这感觉就像不会骑自行车时,觉得人能在自行车上不倒下来,真是神奇;而从不会骑自行车到会骑自行车,那其实就是一刹那的感觉,那个感觉很美妙。但为了收获这一刹那的感觉,你可能要付出的是很多次的摔倒。区别是,有些人摔倒一次,就找到了这种感觉,而有些人,也许摔倒一次,就不再碰自行车了;也许摔倒了不计其数次,却一直没有找到那种感觉。

    我觉得面向对象这个东西,也是这样。不是老师在课堂上讲一讲,你就算会的。必须亲自去体验,甚至于付出一些代价,你才能真正的驾驭它。

    在CSDN回复问题时,经常看到有些网友告知别人用全局变量等方法去解决问题。但其实很多都是缺乏面向对象的概念,只注重解决眼前的一个小问题,其实这些都是你实践的好机会,但却都被你放弃了。

 

困境三:变更管理

    这个困境,导致了我对整个软件失去了信心。其实事情说起来很简单,在排版软件中,有个环境常量,表示数值的精度。由于先前确定的精度到后来发现不够,因此就乘以了10。但问题正是由此而来。

    自从改了数值以后,软件总是出现奇奇怪怪的错误,原先没有问题的地方,都会莫名其妙的出BUG,郁闷之极,进行调试,发现问题居然出在整型溢出。原来有些算法中,用到了诸如三角形的平方和开根号等,在开根号之前的平方和出现了溢出。因为之前的环境常量使用的是整数,比如把最小精度0.01毫米计为1,那么所有整型的长度值记录的就是0.01的倍数值。原来没有乘10时,所有计算量都在有效范围内(因为排版的杂志也好,报纸也好,大小都不会超出32位整型);但乘以10后,由于有些进行的是平方和,因此等于扩大了100倍,所以会出现溢出现象。

    数值的溢出可以说是很难通过阅读代码来查出的,因为很多溢出都是在算法中的一些中间变量产生的。更为担心的是,很可能很多溢出会潜藏起来,也许一天,也许一年都不会暴露,因为它是需要一定的条件才会触发的;而且即时出现问题,也是很难进行调试的,因为溢出大多是在算法中的中间过程产生的临时变量,而且程序也不会出现崩溃,只是最终的运算结果不正确。因此要定位很困难。

    所以,在做一些变更前,一定要自己推敲会有哪些影响,或者哪些模块会被涉及到。所有涉及到的地方都应该进行评估,以及在完成后进行必要的测试。

    可以说,这个困境,使我对这个软件失去了信心。也对我第一次跳槽产生了很大影响。当然,我第一次跳槽并不是完全因为它,而是由一个更重要的原因。

   

也许,大家还有其它更多更多的方法,都可以避免困境,走出困境,但重要的是,我们不要等到困境发生时才想起这些。希望大家都能够找到属于自己的方法来避免困境。我也会在后续的章节中给大家介绍我的方法,也许不是最好的,但却是我自己的。


九十年代初,我们这个公司还是相当的强盛。如果这种状态能够一直保持下去,那么也许我们当年那几批大学生很多人会长期留下来。但事实总是悲剧。

由于潍坊是个穷市,很多企业入不敷出。难得有这么一个还说得过去,并且是一个上市的企业,自然不能放过,因此形成了集团。可实际只有科技这一部分是挣钱的,其它全是赤字。再加上公司的一些错误决策,比如跟风进行程控交换机的研发。可以说是使企业加速走向衰败。

终于,在二十一世纪的第一道曙光来临时,公司被转让给了北大青鸟。原以为新的变化能带来新的生机,如同一个足球队战绩不好时换了一个新主教练一样,大家都充满了期待。但等待我们的,却是一场更大的悲剧。

当时公司的企业文化还是相当的好。即使发生了公司转卖这么重大的事件,当时跳槽的员工人数反而比之前还少,也许大家都有所期待吧。北大青鸟到来后的第一条政策就是,所有员工的工资下降百分之五十,说是公司要准备新的策略,等新策略制定后,将重新确定工资待遇。因此,这期间,我没月只有七百多元。可就算如此,跳槽的人依然很少。

随着时间的推移,大家逐渐明白了北大青鸟的真面目。三个月时间内,没有任何新的策略诞生,也没有看到过任何一个新的领导看望过研发部门。原来,北大青鸟的真正目的只是为了炒股。大家的失望之情溢于言表。于是,之后的几个月,大批的新青年们选择了跳槽。而与之对应的是,这几个月的工资却开始增长。到后来,机会每个月增长一千元。但越是涨的快,人也越是走的快。因为大家看到的是一个世界的末日,如同死囚临刑前给吃的那顿饭,虽然香,但却意味着灭亡。到我跳槽走人时,月薪已经达到四千元,这之间总共大约是八个月。

原先热闹非凡的宿舍,也是日渐稀落,几乎每天都要送走同事。原先打勾级人满为患,逐渐的就凑不齐一桌,只能打打升级。再后来升级也不够人数了,再后来几乎就剩我一个了。

我原本是打算在公司长期干下去的,因为在潍坊我认识了我现在的妻子。我为她放弃了去华为工作的机会。但公司的现状使我无法坚持,而潍坊实在没有其它像样的软件企业。因此最终也只能是走人。

我的第一次跳槽和许多人是不一样的。因为我们是集体跳槽。整个产品研发团队,包括三个项目组:排版软件,照排输出和新闻采编,有一大半人,大约二十多个,一起跳槽到了大连的一家单位,从此开始了在大连的新生活。

    后记:公司在随后进行了配股,北大青鸟如愿的大赚一笔。此后北大青鸟撒手不管,公司剩余的人员重新组成新的单位,继续着原有产品的研发和销售。若干年后回到潍坊,发现公司原来的地方已经成为商业区,当年的记忆彻底不存在了。

新的单位,新的开始。我们集体来到新的单位,初始目标就是实现新的排版软件。为了体现与原有的软件不同,增加了网络解决方案,因此软件也定义为网络组版软件。

    随后的一年时间,我们一批人一直在对网络组版软件进行重新的需求定义,设计规划和编码实现。但最终明白一个道理,行业性的软件,水是挺深的。没有积累,很难成功。这个行业的用户,基本上就是用两家公司的产品,都已经有几十年了,一个新的软件,很难打开这个市场,因为难以得到信任。

    最后,网络组版软件无疾而终。我们这批人,也进行了重新打乱分组,有的去干日本活了,有的去做欧美活了。我们剩下几个留下来,继续在国内部门。而这时,正好是我现在所在的公司合并到我们公司,合并后作为国内部的一个分部门,称为国内二部。我这个没有其它部门要的(惨啊),就被分到新的部门了,因此也认识了现在的公司的领导和同事。

    新的部门主要从事航运领域的系统研发。包括船舶管理,船队管理,船舶跟踪和电子海图。由于我做过组版软件,因此参与了电子海图系统的开发。可以说,这是我人生的一个大转折点,至少一直延续到现在,决定了我此后近十年的方向。

    当时项目经理安排我实现航线设计模块,按他的计划我能在两三周完成就行。结果我用了五天就完成了功能。这让项目经理对我刮目相看。此后电子海图系统基本上都由我来完成,一直延续到今天。

    在做电子海图系统的过程中,我终于形成了我自己的开发模式。如同我之前说的骑自行车的例子一样,突然之间发现自己已经到了一个崭新的高度,豁然开朗的感觉。至少到目前来说,我的这些方法还是行之有效的。但如同让你描述突然会骑自行车是怎么个感觉时,你可能很难描述清楚原因。只有自己反复努力尝试后才会体会到。因此,当在CSDN上看到有些人帮助解决问题,动不动就用全局变量,静态变量等方法时,我就很不赞成。也许这些方法能解决他一时之需,但却让他失去了更好的实践机会。

    很可惜,由于公司合并的最初目的是为了能够上市。但随着上市希望的渺茫,以及公司对国内二部不重视,最终在一年后,两个公司又分解了。国内二部不存在了,但我却未能跟着新公司离开,开始了在国内部颠沛流离的生活。

    由于我个人坚持使用VC,不愿意改变,而部门却基本上没有VC的项目,因此我再次被下放到日本部。开始了长达八个月的PG生活。但也让我体验了一个大连最为热门的外包生活。对此我有以下几点体会:

1.    日本人编码不行

我们当时做的是一个日本人编写的建筑支援系统。从VB升级到VB.NET。整个工程,出现了大量的全局变量,统计下来超过2000个。很多全局变量不知道在何处被修改的。这是这个项目最大的难点。

另外,日本人对封装有一定的思考,但却用不对地方,不该封装的地方进行了封装,该封装的地方却重复写了几十遍。

2.    日本人管理一流

日本人的管理,绝对是没的说。甚至可以说到死板的程度,这也使得国内的程序员们完完全全沦为技术工人。可以说,日本人不需要他们的创造力,必须完全按照日本人的设计进行实现。

我们在开发过程中,发现程序每次运行后,主界面出来的越来越慢,最后要一分钟左右。对开发造成了严重影响,因此我和从国际部调来的一个同事对这部分进行了检查(说句实话,日本部的PG没有能力解决这个问题),发现是由于日本人代码中的非法封装(我对于第一点体会中乱封装的定义),先从一个表中读取记录数,然后在一个循环中,反复调用数据库查询语句来获取记录,结果当记录数越来越大时,这个循环的效率无法用语言来表达。改造也很简单,只需先完成联合查询就可以了。

修改之后,程序启动从先前的一分钟提高到一秒。当我们兴冲冲的告知日方时,却得到他们的抱怨,认为我们未经他们同意就进行修改。

日本人对任何一项修改,都会出式样书,哪怕界面中某个标签的位置,大小,颜色等等的微小变化。在国内的项目,是绝对不可能做到这样的。

3.    外包项目在国内基本没有技术含量

我不知道是否所有外包项目都是和我做过的这个项目类似。一般中国企业接外包项目,都在日本有个机构,比如当时公司在日本就有个分公司,负责项目洽谈,以及一些前端的分析设计,然后到国内进行开发。

国内开发的人员,就是完全按照预定的式样书进行开发。不需要你进行任何发挥,任何创意,必须严格按照要求完成,哪怕是错误的。因为当日本人发现确实错误时,他会重新发式样书,重新完成。而与国内项目不同的是,日本人会承担这个责任,承认这部分工作量,因此会额外给费用。

所以,做日本项目,对个人来说,根本就是个工人,随便找个人就能短时间内把你替换掉。你的价值根本无法体现。

4.    外包项目很辛苦

日本项目的另一个特点,是工期要求非常的严格。要求哪天完成,那么你绝对不能延期,否则就会付出金钱的代价。因此往往是劳动密集型开发。我们这个项目,当时就集中了五十人,并且由于公司人手不够,还借调几家外公司的人员。几乎就是没日没夜的干。没有周末,平时必须到最后一班公交车到之前才能下班。

然而就算这样,你还得不到应有的待遇。薪水比国内部和国际部低很多。每个人实际的工时居然还要打六折。也许,很多人员只有一个目的,那就是能够有机会出国,因此一直忍耐。

我想,如果我稍微学点日语,做个外包项目的Leader或者Manager都不是问题。但我不想过这样的生活。

    总之,站着程序员的角度,做外包项目实在是痛苦,对自己的未来也很难产生竞争力;站着管理者的角度,却又有许多值得我们学习的地方。


持续写了几章,得到了许多网友的支持,在这里非常感谢。

    新的一年里,首先祝大家新年快乐,希望在新的一年里,各位学有所成,财源广进。

    在这里,再次申明,所写文章不是小说,我更愿意称之为纪实文学。当然,个人不能保证记忆的完整,可能部分内容与历史有些许出入。但一来并非求财,二来无意诋毁任何个人和集体,三来并非用于指导年轻人,只是记录个人的经历和经验。因此,如有不实或不良影响,在此表示歉意并敬请指正。

    很多网友对我所写内容给与了积极的评论,本人也很受感动和鼓励。比如网友waxx_112233给我留言“我觉得顶的人好多啊,期待你的下文,你的文章给了很多程序员以希望,您做的是一件公益事件,前7章我已经有几点收获了,由衷的谢谢您”。如果我的文章真的能够对大家有所帮助,那真是太值了。为此我将坚持写下去,为了这些支持我的网友。

       当然,文章中的部分观点也会有网友持反对意见或者存在疑问,我想这都是很正常的。条条道路通罗马,我的经历并不是最佳经历。任何一种方法,只要你能够充分的驾驭它,那么它对你来说,就可以称之为一种好的方法。比如指针和全局变量,再比如封装甚至于面向对象等。有网友反驳我的“尽量避免使用全局变量”的观点,称“尽量避免使用全局变量”是误人子弟的老师教出来的!我想这位网友一定是位高手,已经能够充分将全局变量玩弄于股掌之间了。但对于大多数新人来说,是很难达到这种境界的。因此,在新人进阶过程中,往往会按照一定的标准和规范进行学习,只有在充分掌握这些标准之后,再在此基础上进行自我的扩展和发挥,这应该属于一个比较常规的过程。

    当然,程序员是非常有个性的群体,不乏天才和奇才,能够另辟捷径,进行速成或者巧夺天工。由于本人并不属于该群体,因此无从评价,唯存敬仰之心,如滔滔江水,连绵不绝。

    再次欢迎大家热心的评论。您的评论对于我来说也是一种学习。集思广益,大家有益。有效的争论更能够将问题探讨深入,但还请大家务必注意风度,陈述自己的观点即可。

虽然在新的单位里,我并没有获得新生,但还是接触了几项以前没有接触过的东西。绩效考核就是其中之一。

    软件行业有其特殊性,不像工厂生产零件那么简单,通过计件等办法就可以对工人的工作量进行考量。

    要考核绩效,首先就需要评估一个项目的工作量,然后将工作量分配给具体的人员,无论这个人实际用多长时间去完成这个工作量,他在这段时间的绩效就是所分配的工作量。

    在我进入新单位的第三年,公司开始执行绩效考核。公司所有的技术人员都有内部的等级,包括SE1,SE2,SE3和PG四个等级。其中前三个等级又分成若干个更细的级别,用A,B,C等划分,其中A最高。SE1是*别,主要负责需求分析,SE2主要负责概要设计,SE3主要负责详细设计,主要是这么个概念。

    为了比较准确的评估工作量,公司专门组织了若干名SE1A级的技术人员以及市场人员共同进行工作量的评估。然后由项目经理负责项目的开发以及工作量的分配。每周向部门经理提交每个组员的工作量完成数据,然后每月按工作量及任务等级发放绩效工资。其中需求分析25元/小时,概要设计20元/小时,详细设计15元/小时,编码10元/小时。

    看到这里,大家也许觉得如此的绩效考核比较有道理。但实际执行却是千差万别。从我的角度来看,绩效考核在国内企业中实施,有点类似于乌托邦,理想而不现实。

    首先在工作量的评估就存在问题。在评估一个模块的工作量时,如何才能正确的做出需要一个小时,二个小时还是五个小时呢?它必须有参考基础。这个基础是技术人员的平均劳动能力。而一个公司的技术人员的平均劳动能力是多少?实在是难以计算。至少应该经过一个时间段的数据统计,才可能有一个粗略的数值。比如使用PSP等方法,积累每个技术人员完成某些模块所需的时间。

    而实际上,公司根本就没有这么做。那么,评估出来的工作量,只能是那些SE1A级人员拍脑袋想出来的数据了,或者就是根据项目的合同额,扣除一定的利润后,转换为工作量。然后根据软件工程中需求分析,概要设计,详细设计和编码阶段的百分比,将工作量分配到不同的阶段。

    其次是项目经理分配工作量存在问题。由于项目经理可以分配工作量,而工作量就等同于绩效工资,因此项目经理相当有权(有钱就有权嘛)。但很多项目经理都是技术出身,管理水平本身就不高,另外,如前面所说,由于根本不知道技术人员的平均劳动能力,因此具体将某个模块交给哪位来完成,并且工作量计算也不可能详细划分到细节,因此项目经理需要将模块再划分后进行任务分配时,又存在分配不均的局面。由于项目经理掌握分配权,但又不能合理分配,很容易造成组员的不满和消极。因此,导致项目经理最终的策略都是大家都好的策略,工作量都是多安排,这样每个人都多分到钱,其乐融融。

    虽然似乎组员满意了,可恶果是工作量用完了,项目还没有完成。因为已经提前透支了。一旦没有了工作量,那么剩余的任务组员都不愿意去干。当然了,没有钱谁愿意去干呢?就算去干,也肯定是很差。这导致了恶性循环。我经历的一个大项目,其中有两个项目组最后都由于质量太差,用户不满意,最终不得不重新开发,代价不可谓不惨重啊。

    由于我现在的单位也考虑实行绩效考核,因此个人相当的忧虑。没有任何数据积累就实施绩效考核,实在是很难有好的期待。也希望各位网友对绩效考核提出自己的建议和经验,当然,前提是必须考虑国内企业的实际环境,毕竟和对日和欧美的企业有所不同。


结束八个月的日本部生涯后,我又回到国内部了。我还是没有任务可做,这个时间长达三个月。而这三个月,正好是2004年初,是我开始接触CSDN的时候。这三个月,我几乎天天泡在CSDN上,回复网友们的问题,根本不过问公司的事情,部门领导也从来不过来找我谈话。几乎就是我想干啥就干啥,就是拿钱少。

刚进CSDN的时候,第一个熟悉的人就是薄荷,当时他是VC/MFC版块的大版主。我记得当时我在他的一个帖子中,对他和他的观点进行了抨击,甚至吵了起来,很有初生牛犊不怕虎的感觉。后来我们又互相交换MSN后私下进行了交流解决,直至成为了朋友。有点不打不相识的意思。

薄荷对我很照顾,甚至将他参加CSDN活动得到的奖品都邮寄给了我。那是一件纪念T恤,虽然大的我实在穿不了,不过我还是非常感激,一直以后成为其铁杆。

由于公司实在是没有工作给我干,所以我三个月中挣得了许多分数。很快就两颗星了。现在的大部分勋章都得益于那段时间。后来申请界面版版主也是水到渠成,包括随后转到基础版版主和成为大版主。当然,成为版主和大版主并不是这三个月的事情了。

    记得当时VC/MFC版块的大版主是薄荷,蒋晟,朱长德和空谷清音。蒋晟是个标志性的人物。平时似乎话很少,管理帖子也都是后台操作,从来没有见过他发布什么公告贴,有点游离于诸位大版主之外。当然,这和他身在M国有关。

    朱长德是除了薄荷外,比较熟的一位了。后来申请MVP也得到了他的支持。后来来的少了,好像是因为自己下海当老板去了。不过,似乎老板当的并不顺利啊。

    空谷清音不是很熟,交流很少。记得是和我同一批申请成功的MVP,随后就辞去大版主,销声匿迹了,似乎算是功成身退吧。

    到现在,就剩蒋晟还在持之以恒,其他的诸位都属于历史人物了。

    CSDN让我怀念的还有《编程高手》杂志。我刚成为版主的时候,向CSDN索要了12个月的《编程高手》和部分《程序员》杂志。对我来说,《编程高手》很贴近我实际的需要,并且我从中学到了很多东西;而《程序员》杂志对普通程序员来说,实在是有些遥远。可惜的是,《编程高手》还是停刊了,可能是其中的很多内容网络上都能够找到,没有人愿意掏钱来买。很是遗憾。

    我在CSDN是犯过错误的,曾经为此辞掉了大版主。事情的经过我就不再多讲了,主要是和水源区有些冲突。因为这个事情,当时作为CSDN技术区总版主的薄荷和我一起下岗了。不过后来我“悔改自新”,又恢复了岗位。

    很多人说,CSDN的高手不多。确实也是如此。真正的高手哪能整天闲着在CSDN上回答问题呢。我的水平很有限,自己的C++基本功简直可以忽略不计,只不过项目做多了,自然积累了一些经验而已。只是实际工作中混的不好,无所事事,到CSDN滥竽充数,混点分数来自我满足一下而已。

    当然,真正的高手还是有的,至少CSDN版块中后来的laiyiling和cnzdgs都属于这样的人物。不过和空谷清音类似,都属于功成身退的人物。

    对于CSDN的记忆不是美好的,因为我在CSDN出现的越频繁,越代表着我这些时间混的很差。也许,我得希望我在CSDN出现的时间越短越好。