第一篇:一个老程序员的十年回顾
目录
上篇艰难人生
一、第一次考研的失败
二、“土包子”的北京之行
下篇学习人生:主要是我学习计算机技术的经历与感触,时间跨度大约是从1994~1996年;中篇实践人生:主要是我的技术实践经历:在公司打工,开发软件,毕业求职与教书生涯,时间跨度是1999~2003。
上篇艰难人生
从此(决定考研)迈上了一条对我来说到目前为止最难走的路,是一个人生的炼狱。
一、第一次考研的失败
决定考研之后,我就去买了相关资料,取出尘封己久差点当废纸卖掉的大学课本,又开始了学生生涯。
考哪儿的大学?是我首先要考虑的问题。当时还有另一个高中同学也准备考研,也是计算机,他报了广西师范大学的研究生。
父母则劝我也考广西师大或我的母校广西大学的研究生,说那好考得多,也可以托人走走关系。但我这人很犟,我在西大混了4年,什么也没学到,我还去那儿干什么?我想起了高中时的梦想,决定直接考北京的高校。当然,北大清华是想都不敢想的,社会上工作几年,我毕竟清楚自己几斤几两,但北京几十所高校,难道一所也不行?我不能再听父母的话了,我要走自己的路,自己的命运自己负责,于是我坚持要考北京的学校。
知道这件事的朋友都对我表示惊奇,工作了4年,学校里的知识都忘得差不多了,还想直接考北京的学校,难度之大,相信不少人都认为我成功的希望很渺茫。事实证明,他们的看法是对的,但不全对,因为世上本就没有绝对的事情。
这时,我还在一家私营公司里打工,于是,白天上班,晚上就挑灯夜战,每晚不到12点不休息。
经过半年的复习,我参加了1997年元月的全国研究生入学考试,成绩出来,我专业课没问题,但数学才得了44分,毫无疑问,名落孙山。
这是一个打击,但对我并没有太大的影响。
这时,我小时候住在隔壁的阿姨来到桂林,她说她女儿(我小时的玩伴,也姓杨)去年就考研了,但也同样没过,她原先在北京服装学院读本科,毕业分回广西柳州一个国企里,工作一年之后考研,没考上之后,她就把工作给辞了,专门跑到北京同学家中复习一年。97年考研她成功了。
得知这个消息,对我是个很大的鼓励。我想,她一个比我小的女孩都能成功,我为什么不行?我想办法与她联系上了,在后来的考研岁月中,她给了我极大的帮助,帮我买资料,帮我问成绩,写信给我,鼓励我坚持下去„„
受人滴水之恩,当涌泉以报。
世上的人大都只会“锦上添花”,但只有“雪中送炭”才是最宝贵的。她就是我的“雪中送炭”人,她研究生毕业后嫁到青岛去了,断了音讯,但我心中永远记住了她的帮助。我决定,从今往后,如果我有能力帮助别人的,就一定要帮助人。这世界充满了太多不好的东西,我应该努力往其中添一点好的东西,哪怕显得多么微不足道。
二、“土包子”的北京之行
1.中关村印象
刚好,1997年我大哥在北京中央美院进修美术,我决定明年继续考研,于是辞去了在一家私营电脑公司的工作,于6月底来到了北京,住进了大哥的宿舍。6月到7月,我在北航学计算机维修,7月参加陈文灯老师的考研班,一直呆到9月中旬,我才回到桂林。
中央美院当时搬到了北京西北角的西八间房,我和大哥一起住在学生宿舍中。认识了不少来自全国各地的搞美术的大哥同学,我很喜欢和他们这些搞艺术的人在一起,看他们色彩斑斓,形象逼真的油画,和设计精巧的一些手工作品,是一种美的体验。与我们工科人相比,他们是另一种思维方式。
7月份,大哥要回桂林了。在回桂林前,我帮他和他的同学们去中关村电子市场一口气买了三台电脑,当时最红火的电子市场是中关村电子市场,就是现在北大太平洋电脑商场所在的地方。那时电子市场里熙熙攘攘,如此的红火,是我在广西所从未见到的也从未想到的。在大街上随处可见抱着台打印机,拎着个扫描仪的人,把电脑配件当成白菜一样卖,这就是我对闻名全国的“中关村电子一条街”的最初印象。
我到了中关村,见到了那些我非常熟悉的公司:北大方正,金山WPS,江民科技„„,见到了北京书堆积如山的书店,感叹这里真是一个知识的海洋,觉得亲身感受到了中国IT业的脉博。
大哥回去后,我一个人留在北京,骑着辆破自行车逛了中国最有名的大学:北大和清华,北大风景如画的未名湖上处处荷叶飘香,清华平平展展的草坪展示一种平实坦荡的心胸。一墙之隔,校园内外,就是两种不同气氛,无名无状,却让我这个二十多岁没出过广西的土包子感受深刻。
2.“疯狂”的考研班
我参加的是暑期文登学校的考研班。中央财经大学那栋破败不堪的学四楼里,住满了来自全国各地的学生,和我住在一起的,一个是湖北的,一个是东北的,一个四川的,为了同一个目的,大家从天南地北聚到了一起,我当时真感到了一种“家”的感觉,原来这世界有这么多同路人,我不过是中国十几万考生中一名不起眼的“老生”罢了,但还不算是“范进”。
考研班的日子是“疯狂学习”的日子。
记得我们需要到北方交通大学的大礼堂去听人大老师索爱群的政治课,一千多人的大礼堂被挤得满满的,连过道上都坐了人。在老师的讲台前堆满了各式各样的录音机,足有一百多部,来自全国各地的莘荠学子拿着一瓶矿泉水,在北京最热的7月,挥汗如雨地在记笔记!这段日子,我用去了7个笔记本!这种气氛,我以前在广西是从未见过的。我本来以为我已经够努力勤奋的了,到北京考研班一看,根本就不算什么。
陈文灯老师教的数学给我留下了最为深刻的印象,他上课不用讲稿,所有的例题全都记在他的脑里,随手就可以写出来,丝毫不差,还总结出一整套解题方法,让我大开眼界。我是见着了,原来一个人对本职工作可以精熟到这种地步!后面我还会谈到另一位老教授对职业可贵可敬的敬业精神,不敬业,就不是一个合格的劳动者。
我一直呆到身上没钱了才离开北京。这三个月花完了我工作几年的所有积蓄,却对我的影响是巨大的,中国什么地方最适合学习?最适合学计算机?在我看来,只有北京!
我下定决心,一定要到北京来学习计算机技术。
3.差点跳楼的致命打击
9月中旬我回到了桂林,开始准备第二年的考研。
但生活是不讲情面的,我想当然地认为经过了北京名师的指点,我去年就是数学没过,今年应该没问题了,但事实并不如此。
1998年的数学试题,突然有了一次很大的变动,这次数学考试特别难,题量还特别大,全国及格率仅7%,平均分为30多分。我现在将这次考试试题称之为“变态”的题目,出题的那帮呆在空调房里的教授们挖空心思出出来的题目,可把我给害惨了。我自认为心理素质够强了,但因为这场考试关系命运太大,在考场上我的手都是抖的,几乎晕倒,一道道的大题空在那儿做不出来,都象是在不断地讥笑我不自量力,又象是一张张面无血色的血盆大口,一张口就把我给吞下去了,连骨头渣子都不吐。
考完数学,我就知道我今年没戏了。原来一个考场有几十位考生,考完数学之后只剩下不到三分之一的人。我坚持着把后面的课目考完。在那种明知无望但仅凭一种信念支撑着要坚持到底的时刻,我真不知道当时是怎么挨完后面的专业课考试的。
3月,成绩下来了,我的数学成绩让我差点去跳漓江了---13分!我从小学习勤奋努力,从没拿过这么低的分数。真是破纪录!当时真是灰心到了极点,准备放弃考研,到广东打工,找个地方浪迹天涯,自生自灭去,实在没脸在家呆了。
这个时候,我大哥劝住了我:你都考了两次了,我看来你就是数学差,其它课你都过线了,专业课还都是80多分,为什么不继续努力?集中精力把数学搞好就可以了。你现在放弃,就前功尽弃!
我这人笨,从小学学东西就慢,这是一大弱点。但上天是公平的,他给你一个弱点的同时,也一定提供了让你克服这个弱点的方法。
我笨,但我好强,但我勤奋,但我坚持,人一之,我十之,笨鸟先飞,古已有之,古人可以做到,我为什么就不能做到?这事就这么收场?我不服,不甘心!于是,我下定决心再拼一次。
我现在没有工作,也不想再去找工作了,住在家中,就与堆积如山的书干上了。在关键时刻,年迈的父母无条件地支持了我,他们默默地承担了一切,让我有饭吃,给我一个安静的环境,让我去实现我的梦想。
我深深感受到父母的爱是多么的无条件!我一个二十五六的大小伙子,呆在家中吃闲饭,还让父母为我的前途操心,那种心灵的煎熬,现在想起来都有种想哭的感觉。男儿有泪不轻弹,只因未到伤心处!在此,我要深情地对我的父母说:儿子绝不会忘记你们的恩情,唯望两老保重身体,一定要等到看到我过上好日子的时光。
4.反思,走自己的路!
考研失败,我反复想,为什么我听了陈文灯传授的做题秘诀,反而考得更差了?别人为什么用陈老师的方法考出了好成绩?看来,每个人的具体情况不同,不存在可以让人暴长功力的“武林密笈”,从这件事中我学到,决不能迷信权威,迷信理论。后来我对许多现象与潮流如CMM热、设计模式、软件工程等理论都持有不同的看法,认为把西方的东西原样照搬是行不通的,不经过自己的大脑独立地思索,不经过实践的检验,不要相信任何东西!
从98年到99年1月,我断绝了一切外部联系,把自己关在了家中。我父母的工作单位是一个疗养院,全院加起来也就一两百号人,后山就是一个森林公园,空气清新,林木繁茂,大院里还有一个小山(是真山,不是假山,桂林的这样象竹笋似的山多了),山上修了个亭子,平时少有人来,真是一个闭门修行的好地方。
我每天到小山亭子上去学英语、背政治,桂林四季长青,我周围是青山绿竹,微风一过,树叶沙沙做响,我就在这里学起了战国时的苏秦。从春学到夏,再从夏学到冬,苦苦学了一年,这一年里,使我的心志得到了极大的锻炼,困难更加难以击倒我。后来我境况转好,生活中很多人觉得受不了的挫折,在我看来都不过是小菜一碟罢了。
桂林多奇山,秀美苍翠,风景四季如画。每当我学累的时候,总是看着这美丽的风景,赞叹祖国江山如画,感触人生之渺小,命运之无常!
大哥从北京带回了一台电脑,奔腾166、4.2G的昆腾大脚硬盘,当时不错的配置,把它送给了我用。我渴望了多久的东西终于到手了,我终于可以无限制地使用计算机了!我把电脑放在床前,伴它入眠。
我有时半夜会突然惊醒,想着目前的困境,浑身会出一身冷汗。电脑沉默不语,在一旁安静地陪着我。我看着那蓝幽幽的屏幕,心情非常复杂。
有了电脑也难过,我得抑制住自己强烈地想探索软件技术的欲望,强制自己把主要精力放在考研上。
整个考研英语大纲有5300多个单词,为了背下它们,我用VB编了一个背单词的小软件,每次可以分别显示中文或英文,并可以区分哪些单词没记住,下次复习。所有单词我都是用键盘一个字母一个字母地敲入的,每天早上一起床,先对着电脑背它半个小时。到考研结束,我一看,数据库中已有了两千多个单词。
这一年以来,我真是玩命,什么考研理论我都不信了,我就托人买了国家教委出的几本考试分析,就专门研究考研试题,我要找出适合我自己的方法来。
考研数学考试分析500多页的书,被我翻来覆去地将历年考试试题做了三遍。党的十五大报告我至少背了一百多遍,我称之为背“语录”,真称得上是“倒背如流”,考政治时我把大段大段的十五大报告文字抄上去,居然得了75分!
发黄的本科高等数学和概率与数理统计,以及蓝色封皮的线性代数课本,都被我翻得不成样子。我觉得我就是基础太差,在这种基础之上,讲什么做题方法都是空中楼阁,一定要抓住“三基”(基本知识、基本方法与基本原理)。但我不得不悲哀地指出,我这些努力并未使我的数学能力有所提高,数学并不是这样学的,数学思维绝不是这样培养的。怎样学数学?得去问华罗庚与陈景润等数学大师!我至今数学还是不行。也希望有这方面经验的人能够教我,让我补上数学这一课。
生活总算给了我一次微笑。1999年考研,我数学得了60分,终于迈进了大学的门槛,可以打起背包上北京了。
我这人比较笨,不善于找到达到目标的最佳路线,但凭着牛劲钻下去,硬给我钻出了一条路。这条路能走通还带有一些侥幸的色彩,大家想必比我聪明得多,一定能找到更好的路,用更经济更聪明的办法达到目的,这是一种大智慧,是我所没有的。
这段经历对我个人的思想品质的影响是深远的。为什么这么说?为了考政治,我深入全面地了解了中国近现代史,我去盗版碟市场买了不少存有历史资料的光盘,从多方面来看中国历史,凡电视中有关历史的节目,我必看。我在这里尤其想说的是一个巨著——《毛泽东选集》!经历过文革的每个家庭,哪家没有毛选?我家就有不止一套。毛泽东选集一到四卷,发黄的书被我在这段时间通读了一遍。其中的经典文章更是被我看了一遍又一遍,赶上金庸的《射雕英雄传》了。越读越觉得毛泽东之人真是数百年才出一人的大牛人,他的《湖南农**动考察报告》、《论持久战》等著作,其中体现出来的深刻洞察力与对中国国情的深入把握,其博大的心胸,为国为民的精神真叫我震撼!最终夺了天下,实在是中国社会的必然,当时她集中了多少中国最出色最优秀的人才,再加上毛泽东这种不世出的大牛人领导,老蒋真与他不是一个水准的,想与老毛逐鹿中原,必败无疑!我成了毛泽东的崇拜者,但绝不是盲从者。
说起来大家可能不信,我从毛选中得到了许多精神上的营养,更加乐观了。毛选,真是中国人巨大的精神财富!近年来有不少愤青指着毛泽东晚年的失误全盘否定毛泽东,在我看来真是狂妄无知,他们有几个真正了解毛泽东?有几个真正客观地看过毛选?有几个有资格对毛泽东做出评价? 把他们放回毛泽东生存的那个民族危亡的时代,他们还会有这么多屁放?!说不定最先当汉奸的就是他们。呵呵,不好意思,说粗话了。
闲话少说,回到正题。
回顾这段经历,我只能说是“具有中国特色的考研之路”。我感叹,中国的考试就是扼杀人性的东西,高考与考研尤其如此。我要是用这种精力去学计算机,一年半的时间,还有什么技术学不到手?但我没办法,现实逼着我去考这种我并不想考的试。中国考试之难我看全世界也不多见,我想,每年全国还有那么多的学生要参加这种考试,大量的人力物力与年青人的精力和时间都耗费在考试上了,而考试的内容与实际脱离那么远,真的有助于人才的脱颖而出?我看反倒是形成了一种应试教育,扼杀了年青人本来所具有的创造性,中国现在为什么出不了大师级的人物,应该反思中国的教育制度。
下篇-实践人生
一、希特勒地堡与CIH病毒
1999年4月,我来到北京参加研究生复试。复试完了之后就不回去了,我拿着一张光盘,里面刻着我用VB和Authorware 3.5编的一个Cool 3D的教学软件,到处参加招聘会,开始了在北京的打工生涯。
说句实话,我心中真是一点底也没有。北京人才济济,我一个三流大学的毕业生,又不是计算机专业的,有人要我吗?
我在北京无依无靠,没有任何一个亲戚在北京,住成了大问题。北京这地方,钱太不经花,生活费用太高,我四处寻找便宜的地方住。后来,我在北京化工大学对面的招待所中租了个床位,每晚20元,地下室。这个招待所的地下室非常大,每天回去的时候,都要走过长长的曲曲折折的通道,加上那昏黄的灯泡,每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗,不见天日。地下室里人员很杂,什么人都有,永远没有一种安全的感觉,所幸的是我也是个穷光蛋,光脚的还怕穿鞋的?别人能呆我也能呆,唯一让我担心的是钱,没钱,在北京连流落街头都不够格,立马被收容去昌平筛沙。呵呵,我没这种经历,这是当时住一块的一个外地要考北京中医药大学的博士生说的(我俩居然住到了一个屋里,大家都没钱,只能挤地下室,只是他老兄晚上打呼,我可真受了不少罪)。
日子一天天过去,袋里的钱一天天少了,但工作还是没着落,心中越来越慌,除去学费,来京时父母给我2000元,大哥资助我的1000元就是我当时的全部资金(3000元在北京能呆多久?!)。我当时订了个计划,留下500元保底,打死都不能动,要靠它作路费回家的。我当时说,一定得找到一家公司,再少的钱都干,只要有口饭吃,有张床让我睡我就满足了。
我一共应聘了四五家公司,最具传奇色彩的是到西单附近一家公司的应聘经历。那时,我带去了我的作品,公司项目经理要看,于是我给他们演示,很奇怪,程序一打开就死机,一连两台电脑都一样,末了,两台电脑都启动不起来了。用瑞星一查,CIH病毒——那天正是4月26日!于是,CIH破坏了电脑主板的同时,也无情地摧毁了我的就业机会。还算老板可怜我,没要我赔。其实我当时快到山穷水尽的地步了,真要我出钱,我可能连家都回不了啦。陈盈豪(CIH病毒的作者),你小子这么的聪明做什么不行,偏要去做病毒,害人害已,弄得我连个饭碗也找不到,晚上回“希特勒地堡”,把这小子骂了无数次!
总算天无绝人之路,在我数着最后还剩余600元钱的时候,终于有一家公司要我了,做中小学教育软件,月薪1600。干了两星期,又给我在公司的仓库挪开货物,搭了个床位,我就在那住下了,庆幸再也不用到“希特勒地堡”里当冲锋队员了。每天下班后,我就睡在林立的大纸箱之中,如果来个地震,呵呵,我就埋在纸箱中了,休想爬得出来!
我干得非常努力,第一个月工资开出来,扣掉个人所得税,我拿了1500多元。你们不知道我拿到第一笔工资的感觉!这钱在很多人眼里简直不算钱,但对于一个没工作近两年,工作也一个月收入不到200的穷小子而言,就象陈佩斯小品中所演的:“我王老五活了一辈子,还从没见过这么多钱啊!”。好笑吗?我一点也不觉得好笑。我只是心酸,我到了28岁才可以用自己的知识与技能养活自己,再不用依靠父母和兄长的资助,才真正完全用自己的力量在社会上站起来,一个没有经济自立能力的人,只能是个不成熟的人,一个躺在父母身上的人,不是一个真正的男子汉!我当这样的孬种当了28年!
我找到工作后向家里写过一封长信,信中讲了我对父母平时不好意思说的很多心里话,当时,我父亲说,母亲接到信都哭了。我刚拿到工资,马上打了个电话回家里告诉母亲,以缓解他们的焦虑,毕竟儿行千里母担心啊!父母有退休金,一再表示不需要我赡养,而我再这样不要脸下去,我还是人吗?我就是从那时候开始,下定决心,从今往后,再不向家中要一分钱!今后三年读书和生活的费用我一定要用自己的劳动来获取。
金钱带给我的激动就是在那段时间,温饱问题解决之后,金钱对我的诱惑就再没有了,哪怕让我一个月赚一万,给套房子给我,也不可能再给我带来幸福的感觉了,钱是重要的,但不能成为它的奴隶,家中不需要我负担,我一个人有吃有喝,干着我喜欢的工作,足矣!
我在那公司一直干到九月学校开学为止。我走的那一天,公司居然还开了个欢送宴会,老板封了500元的封包给我。我真是感动。我大学毕业后在社会上挣扎求生,得到的大都是冷眼与蔑视,社会终于认可了我的价值,我不是一个只知道吃饭的废物!
1999年9月9日上午9点,在这个最多9字的时刻,我到学校报道来了,放下行李,我坐在分配给我的床上,心中终于踏实下来。
现在,我在北京终于有一张属于我的床了,一张真正属于我的床了,终于有个地方可以让我安稳地睡觉了。没有这段经历,我怎么体验到“安居乐业”这一个词的真实含义!个人如此,国家要做到,中国要做到,更难!
二、编程生涯
读研两年半的时间,我四处打工,这两年半我至少在七八家公司做过,编了十几万行代码,为自己赚了一台电脑,两部手机(丢了一部),还有读研期间的所有费用,实现了我的目标:没向家里要一分钱。
我水平不高,但在打工过程中,发现许多中国软件公司的水平更菜!
2000年暑假,我参加一个商品软件的开发,搬到了北大燕北园的一个宿舍,在那儿搞封闭式开发。在这个项目采用VB6开发,主力程序员除我之处,还有一个华北电力大学的研究生。大家都没开发商品软件的经验,没经过正式的设计,就匆忙编码了。我曾经想采用分层的系统架构,但遭到另一位程序员的反对,争吵没有结果,老板也不能做决定,结果各行其是。现在看起来,那时真是太菜了,任何一本软件工程书都会指出这种做法是不对的。
我们直接就热火朝天的干了起来,那位华北电力大学的老兄,真让我佩服,他可以在一个sub过程中写上2000行代码!我觉得奇怪,为何他能写这么多的代码?一看,顿时我晕倒,他居然将每个控件的left, top, width等属性都用代码来设定!想想这样的程序,调试时光单步执行就需要按多少次F8键!
我们在电脑旁边搭了个行军床,每天都是干到早上6点才睡,12点吃中饭,然后又是一个通宵。当时整个工程只有一个类模块,被我用于封装访问数据库的ADO数据引擎,这是整个工程中唯一一处用到了最简单的面向对象技术的地方。然后,我写了近十个bas公用模块,每个模块代码规模都有一两千行,还有十几个窗体,每个窗体中都塞满了事件驱动的VB代码,整个软件应该有10万行代码,我一个人在此期间至少就写了3万多行VB代码。程序的主处理流程我甚至用ADO与DAO写了两套!
现在想起来,我们当时根本就不知道面向对象为何物,更不理解许多对软件开发至关重要的理论,就凭着一种热情。在这段痛苦的开发经历中,我不仅精熟了VB,而且从中学到了很多。现在再开发同样功能的东西。我至少可以砍掉2/3的代码。怎么学都不如从失败中学得多。
后来我总结VB程序员的三个境界:
(1)所有代码都只放在窗体文件中的,属于菜鸟级,他们只会从面板上拖控件,设置属性,然后再给事件编码。
(2)工程中有bas模块的,属于中间级,他们已意识到有大量的代码是重复出现的,应该将其抽取出来作为公用模块。
(3)工程中有cls模块的,属于高手,他们已掌握了面向对象的思想,并能应用这种思想来解决实际问题。
正是这次开发经历,促使我反思:到底如何开发软件?我个人可以用VB完成各种各样的功能,为什么凑在一起就会那么困难?更正一个bug为何那么难?为什么一个看似简单的软件,要拖半年的时间还看不到结束的日子?
九月,研究生要开题,我自拟了个课题:软件体系结构设计。我决心弄明白,好软件到底是怎么做出来的。
我放下了VB,开始研究C++,原来学过VC,但没学会,就直接从C++ Builder入手。Borland公司的VCL类库让我大为叹服,很快就迷上了它,为此连带学了Delphi,并参与了一个Delphi项目。给我真正震撼的是《设计模式》这本书,看了才知道,原来好软件是这么设计出来的!在此,我强烈推荐所有有一定编程经验的程序员一定要看这本书!
一边学习理论,一边可没忘记我没经济来源,于是又四处打工,接一些小项目与小模块来赚些生活费,国内一家横跨家电与软件的著名公司是我打工期间去过的最大的公司。但无论什么公司,都给我一种感觉——烂!公司中充满了对员工的剥削与不尊重,对软件开发这一事物的错误认识,管理混乱。
我没机会去外企,技术水平不到,别人不要我 ?,但我所见到的软件公司,我敢说没一家能做出世界一流的软件!
我上的研究生课程也让我失望,整个就是本科教育的再版。经过高考与考研两次重大考试,我对考试已是深恶痛绝,但读研期间仍要考试,而且是闭卷!我就不知道我去背那些条文对我的研究与学习有何帮助?2000年7月当我考完最后一门,终于大松一口气,我终于摆脱了考试的压迫,可以在剩余的一年半中真正搜索我渴望已久的软件技术了。这年,我29岁。
悲哀吗?一个中国的程序员要到29岁才可以真正自由地学习想学的东西!
我开始研究面向对象理论,看了大量的书,每天都在实验室学习到深夜12点,天天上网,CSDN成了我最常去的网站。
随着我对软件技术的了解越多,就越深刻地感到国内与国外技术水平的差异是如此的巨大,巨大得甚至有让人绝望的感觉。同时,在北京这个中国软件人才最集中的地方,我也见到了许多牛人,一个清华的本科学生,做程序员可以拿到一个月12000元的工资,一个北大的计算机系研究生,一毕业就到外企,一个月一万多收入,每年发16个月工资!干了两年就开了自己的公司。我看到了一个北方交大的本科生作品,在半年的业余时间里,用Delphi写了十几万行代码,他甚至在代码中嵌入汇编,自行编写数据存取引擎读写Foxpro,速度超快!软件中有一个计算公式解析模块,他用编译原理理论居然做了一个小型的公式解析器,就象C++编译器检查C++程序一样,不仅可以判断是否公式正确,而且给出的出错信息还相当准确!其基本功之扎实,水平之高让我望尘莫及!中国优秀的人才真还是不少的!在精英集聚的北京,面对着博大精深的软件科学,我深感自身的渺小。
但我毕竟是靠自己奋斗出来的,我并不自卑,这世界需要牛人,同样需要大批合格的劳动者,我成为不了牛人,但我作一名程序员是合格的。
时间过得飞快,一年半根本就不算时间,马上就要毕业了,学习的成绩如何,要到社会上去竞争了,让社会考场来决定你是否及格。
三、毕业求职
98级的研究生是IT业最后辉煌的回光反照。当时,各大公司都发了疯似的要人,象华为,当时是来者不拒。计算机专业的研究生是一抢而光,本科生也供不应求。2001年毕业的我的师兄师姐们,平均每个人手头都至少有两三个offer,谈的工资没有低于每月6000的,许多人去了外企,工资在8000~10000每月的也有。真是毕业生的黄金时间。
但好景不常在,911事件我看来好象成了分水岭,911之后,整个IT业急刹车,就业形势急转直下,各大公司都在消化去年吃得过饱的胃口,我形容是大家都吃坏了胃,再也不可能有我师兄师姐们的风光了。虽然时间相隔仅大半年。
从10月开始,11月和12月,我几乎是在招聘会与公共汽车上渡过的,北京东南西北地去面试,上午在上地,下午可能就要跑到朝阳区,疲于奔命。
在找工作过程中,我良好的心理素质与丰富的编程经验起到了很大的作用,并没有遇到很大的困难,就先后有几家公司表示要我。
其中我想说的有两家公司。
一家是中国台湾公司,应该说他们做得是不错的,但我非常反感他们那种自认为高于大陆人的那种优越感,而且待遇也不高。面试之后,回来感觉很不好。
我想:我们大陆确实是不如中国台湾发达,难怪别人看不起我们,这世界势利得很,社会如此,国家亦然。但我中华960万平方公里的国土,13亿人口,难道要依靠一个小小的岛屿来撑门面?难道除了中国台湾公司,我就无处可去了?虽然改变不了什么,但我决定绝不去台资和日资的公司工作(日本人我更不喜欢,但我认为他们做事实在优秀,我们一定要向日本人学习)!在这种公司呆着,不爽!同时,我们的确也得争气些,这世界只尊重强者。
另一家是个很不错的民族软件企业,想要我,其老总专门找我去面谈了一次,希望我能到他的公司工作。这位老总白手起家,能在五六年的时间内由几个人发展到300多人,当时,是中国这个领域软件市场占有率最高的公司,我非常佩服,他为人也很好,并表示可以给我每月比其他研究生多加1000元工资,而且希望锻炼一两年之后我能够带领一个团队来开发产品,并负担我毕业所需交纳的各种费用。在就业不景气的2002年,对我一个30岁的技术水平有限的老程序员如此看重,真叫我感动。虽然我最后还是没去,但我仍然对这个公司充满了好感。一个软件企业最重要的是什么?是对人的尊重,没有这点,可以断定,这个公司长不大。
我为什么没去软件公司?放弃有可能在几年之后年薪突破10万的收入?是因为我已有了更想做的事,我想当老师!
我自己是从自学的路上走过来的,其中的艰辛历历在目,无人指点,我走了多少弯路?中国还有多少是象我这样的年轻人无人指点的?我幸运能爬出来了,因为我至少还能有饭吃,比我条件更差的,比如农村的孩子,可能就被生活的压力所淹没了。我个人的力量很微弱,技术也有限,但我自认为至少是一名合格的程序员,如果能培养出一大批达到我的水平的学生,他们毕业后成为合格的程序员,中国软件的根基就会更扎实,如果更能有一批远远超过我水平的学生出来,中国软件就有希望了。软件是什么?软件以人为本!
人生追求什么?金钱?我很缺钱,但不可能把金钱作为我的目标,我希望我能够成为一个对社会有所贡献的人,能够获得心灵的充实,于是,我选择了留校。
四、对教育的反思与教书生涯
2002年下半年,我参加了北京高校青年教师岗前培训。一位杜教授的两堂课让我印象深刻,其中两句话让我深深震动:
第一句话:我是一个教书匠,教书匠好啊,好就好在“匠心独运”!
第二句话:做什么工作都要达到变魔术的境界!
是的,作为一名教师,就必须起到一个传声筒与放大器的作用,将人类最聪明的人探索世界所得到的知识予以拓宽发展,以便让更多的人能够掌握这些知识并进而应用于实践,从而推动人类的不断进步。
作为一名计算机专业的教师,就要努力把先进的计算机技术以尽可能高的效率传授给广大的学生,引导他们直接面对真实的软件世界,而不是向他们硬灌各种各样的理论知识,强迫他们去死记硬背以应付考试。
我是一个小人物,才低学浅,但我真的认为高校计算机教育存在严重的问题。我在打工期间的开发经历,以及阅读国外相关资料的时候,发现学校中教的和社会上用的差得太远!都已经是什么时代了,许多大学还设立Foxpro课程,难道就不能直接用现代主流的数据库如Oracle,SQL Server,哪怕是Access也好,来讲授数据库知识?还有所谓的计算机等级考试,呵呵,过了三级学生的我见过不少,但他们真正对软件,对计算机又理解多少?
在中国甚至于升职称也要考计算机,我看了一本职称计算机考试教材,里面几乎原样照搬计算机原理课程中的相关章节,弄得我给搞艺术的大嫂讲了一个小时的二进制与八进制、十六进制的转换方法,她还是弄不太清。我都泄气了,对啊,他们搞艺术的,有必要去分清二进制的10与十进制的2有何分别吗?他们八辈子也用不上。但是考试用得上,呵呵,又是中国特色。
拿C++来说,我讲过C++课,许多的国内教材对C++语法下了大功夫,却对体现了C++精华的STL只字不提,对代码背后所体现的软件开发思想与方法更是视而不见,我用C++也编过不少程序了,说句实话,我用到的特性不到C++的三分之一!于是就出现了这种怪现象,许多学生考试可以拿八九十分,给他一个简单的实际问题他却不知如何下手!
还有UML,现在好象很火的样子,我们读研时就开了这门课,讲句实话,当时这门课我就没听懂,可后来我尝试着用C++用面向对象的方法来编程序,然后,由代码倒推回UML类图,一下子就明白了,原来UML只不过是一种描述面向对象系统的符号罢了,如果学生没进行过真正的OOP,那就是为了学UML而学UML,根本就本末倒置。
还有软件工程,我的感觉,一个人如果没写过一万行以上的程序,他看软件工程书就同看政治书差不多,每句都对,呵呵,就不知道为什么对。我完成了那个几万行的VB程序之后,再回过头看看理论,真是句句是真理!每个理论背后都是大量实践经验的总结。
回想我做软件的体会,我发现所有的知识都是一个完整的体系,根本就无法区分哪些知识是本科的,哪些知识是研究生课程。于是,一种想法产生了,我主讲程序语言类的课程,那我就直接以真实的软件开发过程为主线,实践中需要什么我就讲什么。讲C++,我就抛开了指定的教材,C++我讲了STL,我讲了OOAD,两者我都讲了用Rose进行双向工程,引导学生去学UML,一开始就用UML去描述自己开发的程序,何必浪费大量的时间去学结构化的编程方法?
我现在简直成了面向对象技术的布道者,我下学期即将开设OOAD基础选修课,从实际项目中抽取典型的案例,讲UML,讲Rose,讲设计模式,讲软件体系结构,例子代码横跨C++和.NET下的开发语言(C#和VB.NET),这对于我一个技术水平有限公司的董事长而言,实在有点不自量力,我鼻子上才插上几根葱,就想装大象?但我想,如果我能成功地激发出哪怕1%的学生的兴趣,能引导他们走向我认为是正确的方向,能启发他们思考,能直接面向真实的软件开发活动而不是学校的考试,就是我的成绩。我现在正在看引进的原版书籍——《设计模式解析》,时时击节赞叹!《设计模式》经典但难懂难用,而《解析》一书的两位作者既有丰富的从业经验,又对OOAD进行了深入的思索,真知灼见时时展露于书中,我现在刚看了这本书的80%,基本上可以用一个成语来描述这部书:深入浅出!
要做到深入浅出谈何容易!只有同时具备技术专家与文学作家素质的人才能做到!
反观我们国内的大量教材,还有大量的垃圾论文(包括硕士、博士的,本科的就算了,我看绝大部分根本不能称之为论文),全都是“浅入深出”,作者自己都未必明白,就东拼西凑,摆出个样子吓人。本来完全可以用大白话三言两语讲清楚让人明白的道理,有人专门要绕一大圈,专挑用高深的数学公式来表达,唯恐别人容易理解,显得他水平不高!呵呵,什么东西一沾上“数学”,立马身价百倍。我就听过一个北师大的一个在读博士说过:如果一篇博士论文中没有一个数学公式,根本就不算是博士论文。这句话对不对,大家可以多思索。我数学不好,没资格讨论数学,我的直觉:数学是工具,但如果为了发表论文等目的而故弄玄虚,为数学而数学,是不合道理的。中国的学术水平与现状,大家都心知肚明,不用我废话了。
现在每年都毕业大批的计算机专业学生,可其中真正具备扎实根基的可以很快胜任工作的我看只有5%(95%的学生不要扁我,不同意就当我在说胡话,我很瘦的,一扁就没了?)。多年以来,我国高校计算机教育是按照计算机科学研究者来培养的,可事实上,有多少学生能从事计算机方面研究的能力?我看应分流,80%的学生按工程师方向来培养,20%的学生按研究者方向来培养,而且应大幅减少必修课的数量,计算机领域太深太广,样样都想教给学生,反而成了夹生饭,一个想从事硬件设计的学生和一个想从事软件开发的学生,能给他们一样的饭吃吗?学校应提供各种条件和资源去引导学生,激发学生的创造性与主动探索性,让他们去尝试,去发现自己的长处,最终找到最适合自己的发展方向。不这样做,中国软件后继乏人,没希望。
五、实践第一
2002年下半年,我和一个朋友去了北京郊区的一家杂志社,看到的情形让我震惊:在信息产业最发达的北京,这家杂志社还用人工查对杂志订单和款单,看着那按省来登记的几大本厚厚的客户登记本,工作人员需要手工来在其中查找相应的信息。这样的工作效率,这样的行业信息化水平!北京如此,全国又如何?
从这件事上,我看到了中国软件业的另一方面。一方面我们没有核心技术,另一方面,已有的技术又根本没推广没用好。追踪世界先进水平,对于我等这种水平的人来说,确实勉为其难,但将已有的技术用于解决实际问题,却是我们可以做的。如果中国各行各业都真正能通过进行信息化而提高生产效益,那中国不就从根本上强大起来了吗(象印度,IT一枝独秀,其他行业没有起色,我称之为跛足的国家,绝不能成为世界强国)?在扎实的社会基础之上,软件业不就有了更大的市场与发展潜力?中国许多行业的信息化水平非常低,而且中国地域广大,发展非常不平衡,有些地方信息化水平甚至为0!努力推动行业信息化,是我们这一代软件开发者的责任!而追赶国外先进水平,恐怕就不是一代两代程序员可以达到目标的,需要长期的努力。作为一名软件开发者,只能脚踏实地,哪怕你只做一个小小的MIS产品,也要尽力把它做好来。
于是,我开始了期刊发行系统的开发,这完全是自发的,没有任何资金投入,只有一种热情在支撑。我开始选择C++ Builder开发,做了几个月,完成了第一个版本,但我发现,我找不到足够水平的C++程序员进行合作开发,而且整个一个exe文件,在体系结构设计上虽采用了分层分块的设计方案,但却是源代码级别的,要拆分成COM组件难度太大,不是一个人能完成的,于是中途流产。
2003年3月,我开始系统地学习.NET,我吃惊地发现,我原来想在C++中实现的许多功能,比如对象串行化为XML,在.NET中已有现成的类可用,.NET更把OO的功用发挥到了极致,它的混合语言开发,它的反射机制,它的新的自识别的软件组件,以及强大好用的开发环境Visual Studio,都让我惊叹微软对开发者遇到的困难的深入把握,相比用C++开发,至少可以提高1/3的开发效率。于是一个新的想法产生了,我要把以前的产品用.NET重写,利用.NET强大的组件模型,将设计模式理论推广应用到组件级别,通过XML和反射机制建立一套可动态装配的软件生产流水线,实现象Dell直销PC那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构,配以对业务领域的深入分析,逐步建立功能强大的业务组件仓库,就可以实现软件系统的动态装配。说干就干,我用VB.NET重写了原先用C++编写的系统,将原先的一个exe变为十几个dll,而且这些dll还会随着发展而不断地分裂,也有可能重新组合,利用refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做软件关键因素是变化,只有适应变化的系统才是有生命力的。
我用两个月的时间大体上弄清了.NET平台下的主要类库,然后又用两个月的时间再次重新实现了期刊发行系统的C++版本的全部功能,到8月份我写这篇文章之时,第一个产品里程碑已经完成。同样的,除了需求是由另一个合作者去搜集的之外,几乎又是全部由我一个人包揽了所有的系统设计及编码工作!
毫无疑问,我自觉得新系统要比老系统可维护性强得多,真正实现了彻底的全组件化系统开发,计划再有一个月的界面美化,改正bug,引用多线程提高运行效率,优化系统结构,就可以提供给用户试用了。市场如何,难说难测。
在开发过程中,我再次感到巨大的挑战,不光是技术上的,更是管理上的。人才是我最头痛的问题,没有一流的人才,哪来一流的产品?我们找不到足够水平的程序员一起合作(牛人哪屑于做这样一个小儿科的产品?)我们要走的路还很长。也许我们开发的产品是失败的,但我从来就没指望能用这赚钱,我只是尽一个软件开发者的责任而己,成败已不重要!人生不尝试,怎能体现人活着的价值?
刚好我编的程序告一段落。于是就crazy地敲键盘,一鼓作气地把下篇写完了。心中有好多话一次就说个痛快。
看得越多,想得越多,我就越困惑,人啊,你活着到底是为了什么?又整天忙忙碌碌地追求些什么?我这十年,„„我都不知道怎么说了!
大家自己看吧!
结束语 永无止境的软件之路
一、辛酸与苦辣
做软件开发很苦的,技术进步如此神速,每个软件开发者都得不断地学习以跟上发展的步伐。有时我常想,何苦呢?我现在在大学中混,怎么样不能混下去?为什么要做这些吃力不讨好的事?我投了十年的时间去学习电脑,却最终发现自己不过中人之资,离顶峰远之又远。古语云:三十而立。我今年32了,仍是孤身一人,看看周围的同学,他们的小孩都差不多上小学了!许多都有了自己的房子和车子,而我到现在才开始申报中级职称,还挤在集体宿舍中,望着北京高昂的房价而叹息。现在社会越来越功利了,看着象我这样的穷光蛋,看着由于长期面对电脑缺少锻炼而瘦弱的身躯,又有哪个女孩愿意嫁过来受苦?
软件人的生活很苦,压力很大,我认为是拿青春赌明天。就是在这种恶劣的开发环境中,还有许多业外人士指手划脚说程序员如何如何,还有太多的公司只顾压榨程序员的劳动,缺乏对程序员基本的尊重,怎不叫人寒心?
“三十而衰”,这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀!
二、无止境的追求
人类已进入信息时代,计算机技术几乎每隔半年就有一次大的变化,我现在又面临着这样的抉择:今后的路如何走?
北大的教师聘任制度的改革一石激起千层浪,说明了中国高校的改革势在必行。我是欢迎这种变化的,虽然到时我可能会下岗。但人生中总会遇到各种各样的挑战,只要你不倒下爬不起来,就有希望。
我想我必须再次让自己有个提升,要从小事做起,但做小事则绝不能成为最终的目标,也许,不远的将来,我会走出国门,到世界软件技术最发达的地区去汲取丰富的养份。今后的路怎么走,我还在摸索之中。
三、人生无悔
人生年华如水,时光无情。在过去的岁月中,我尽了自己的力,回顾往事,我可以说:过去的事只有遗憾,却没有后悔。如果给我再一次选择职业的机会,我还会再次选择软件!
再过10年,到2013年的时候,我也许会再次写一篇人生的十年回顾,到那时中国的软件会如何?中国软件的明天靠你我这些普通人去扎扎实实地去工作来支撑!少发些牢骚,多做些实事,中国软件才会有光辉的明天。你我共勉!
一个老程序员的心理话
完成于 2003-8-3 北京
2003-8-3中午14:33,在我的弹指神功之下,我写完了这近两三万字的个人自诉。一点也不累,回想过去的种种感触,仍然身在其中。
楼上一位兄弟说想看我的爱情故事,但人生不是小说,没有什么浪漫的,我只能让你失望了,我是孤单地在人生之路上走着,我就是这样的一个带着点悲剧色彩的人。
如果有人能有这上中下三篇文章耐心看完,我会谢谢你。如果有人能指点我,我感激你。
好了,我去休息了,生活是一天天过的,不是吗?
第二篇:一个老程序员的十年回顾
一个老程序员的十年回顾
发布时间: 2012-02-05 18:30 阅读: 3149 次 全屏阅读 [收藏]
目录
上篇艰难人生
一、第一次考研的失败
二、“土包子”的北京之行
下篇学习人生:主要是我学习计算机技术的经历与感触,时间跨度大约是从1994~1996年;中篇实践人生:主要是我的技术实践经历:在公司打工,开发软件,毕业求职与教书生涯,时间跨度是1999~2003。
上篇艰难人生
从此(决定考研)迈上了一条对我来说到目前为止最难走的路,是一个人生的炼狱。
一、第一次考研的失败
决定考研之后,我就去买了相关资料,取出尘封己久差点当废纸卖掉的大学课本,又开始了学生生涯。
考哪儿的大学?是我首先要考虑的问题。当时还有另一个高中同学也准备考研,也是计算机,他报了广西师范大学的研究生。
父母则劝我也考广西师大或我的母校广西大学的研究生,说那好考得多,也可以托人走走关系。但我这人很犟,我在西大混了4年,什么也没学到,我还去那儿干什么?我想起了高中时的梦想,决定直接考北京的高校。当然,北大清华是想都不敢想的,社会上工作几年,我毕竟清楚自己几斤几两,但北京几十所高校,难道一所也不行?我不能再听父母的话了,我要走自己的路,自己的命运自己负责,于是我坚持要考北京的学校。
知道这件事的朋友都对我表示惊奇,工作了4年,学校里的知识都忘得差不多了,还想直接考北京的学校,难度之大,相信不少人都认为我成功的希望很渺茫。事实证明,他们的看法是对的,但不全对,因为世上本就没有绝对的事情。
这时,我还在一家私营公司里打工,于是,白天上班,晚上就挑灯夜战,每晚不到12点不休息。
经过半年的复习,我参加了1997年元月的全国研究生入学考试,成绩出来,我专业课没问题,但数学才得了44分,毫无疑问,名落孙山。
这是一个打击,但对我并没有太大的影响。
这时,我小时候住在隔壁的阿姨来到桂林,她说她女儿(我小时的玩伴,也姓杨)去年就考研了,但也同样没过,她原先在北京服装学院读本科,毕业分回广西柳州一个国企里,工作一年之后考研,没考上之后,她就把工作给辞了,专门跑到北京同学家中复习一年。97年考研她成功了。
得知这个消息,对我是个很大的鼓励。我想,她一个比我小的女孩都能成功,我为什么不行?我想办法与她联系上了,在后来的考研岁月中,她给了我极大的帮助,帮我买资料,帮我问成绩,写信给我,鼓励我坚持下去……
受人滴水之恩,当涌泉以报。
世上的人大都只会“锦上添花”,但只有“雪中送炭”才是最宝贵的。她就是我的“雪中送炭”人,她研究生毕业后嫁到青岛去了,断了音讯,但我心中永远记住了她的帮助。我决定,从今往后,如果我有能力帮助别人的,就一定要帮助人。这世界充满了太多不好的东西,我应该努力往其中添一点好的东西,哪怕显得多么微不足道。
二、“土包子”的北京之行
1.中关村印象
刚好,1997年我大哥在北京中央美院进修美术,我决定明年继续考研,于是辞去了在一家私营电脑公司的工作,于6月底来到了北京,住进了大哥的宿舍。6月到7月,我在北航学计算机维修,7月参加陈文灯老师的考研班,一直呆到9月中旬,我才回到桂林。
中央美院当时搬到了北京西北角的西八间房,我和大哥一起住在学生宿舍中。认识了不少来自全国各地的搞美术的大哥同学,我很喜欢和他们这些搞艺术的人在一起,看他们色彩斑斓,形象逼真的油画,和设计精巧的一些手工作品,是一种美的体验。与我们工科人相比,他们是另一种思维方式。
7月份,大哥要回桂林了。在回桂林前,我帮他和他的同学们去中关村电子市场一口气买了三台电脑,当时最红火的电子市场是中关村电子市场,就是现在北大太平洋电脑商场所在的地方。那时电子市场里熙熙攘攘,如此的红火,是我在广西所从未见到的也从未想到的。在大街上随处可见抱着台打印机,拎着个扫描仪的人,把电脑配件当成白菜一样卖,这就是我对闻名全国的“中关村电子一条街”的最初印象。
我到了中关村,见到了那些我非常熟悉的公司:北大方正,金山WPS,江民科技……,见到了北京书堆积如山的书店,感叹这里真是一个知识的海洋,觉得亲身感受到了中国IT业的脉博。
大哥回去后,我一个人留在北京,骑着辆破自行车逛了中国最有名的大学:北大和清华,北大风景如画的未名湖上处处荷叶飘香,清华平平展展的草坪展示一种平实坦荡的心胸。一墙之隔,校园内外,就是两种不同气氛,无名无状,却让我这个二十多岁没出过广西的土包子感受深刻。
2.“疯狂”的考研班
我参加的是暑期文登学校的考研班。中央财经大学那栋破败不堪的学四楼里,住满了来自全国各地的学生,和我住在一起的,一个是湖北的,一个是东北的,一个四川的,为了同一个目的,大家从天南地北聚到了一起,我当时真感到了一种“家”的感觉,原来这世界有这么多同路人,我不过是中国十几万考生中一名不起眼的“老生”罢了,但还不算是“范进”。
考研班的日子是“疯狂学习”的日子。
记得我们需要到北方交通大学的大礼堂去听人大老师索爱群的政治课,一千多人的大礼堂被挤得满满的,连过道上都坐了人。在老师的讲台前堆满了各式各样的录音机,足有一百多部,来自全国各地的莘荠学子拿着一瓶矿泉水,在北京最热的7月,挥汗如雨地在记笔记!这段日子,我用去了7个笔记本!这种气氛,我以前在广西是从未见过的。我本来以为我已经够努力勤奋的了,到北京考研班一看,根本就不算什么。
陈文灯老师教的数学给我留下了最为深刻的印象,他上课不用讲稿,所有的例题全都记在他的脑里,随手就可以写出来,丝毫不差,还总结出一整套解题方法,让我大开眼界。我是见着了,原来一个人对本职工作可以精熟到这种地步!后面我还会谈到另一位老教授对职业可贵可敬的敬业精神,不敬业,就不是一个合格的劳动者。
我一直呆到身上没钱了才离开北京。这三个月花完了我工作几年的所有积蓄,却对我的影响是巨大的,中国什么地方最适合学习?最适合学计算机?在我看来,只有北京!
我下定决心,一定要到北京来学习计算机技术。
3.差点跳楼的致命打击
9月中旬我回到了桂林,开始准备第二年的考研。
但生活是不讲情面的,我想当然地认为经过了北京名师的指点,我去年就是数学没过,今年应该没问题了,但事实并不如此。
1998年的数学试题,突然有了一次很大的变动,这次数学考试特别难,题量还特别大,全国及格率仅7%,平均分为30多分。我现在将这次考试试题称之为“变态”的题目,出题的那帮呆在空调房里的教授们挖空心思出出来的题目,可把我给害惨了。我自认为心理素质够强了,但因为这场考试关系命运太大,在考场上我的手都是抖的,几乎晕倒,一道道的大题空在那儿做不出来,都象是在不断地讥笑我不自量力,又象是一张张面无血色的血盆大口,一张口就把我给吞下去了,连骨头渣子都不吐。
考完数学,我就知道我今年没戏了。原来一个考场有几十位考生,考完数学之后只剩下不到三分之一的人。我坚持着把后面的课目考完。在那种明知无望但仅凭一种信念支撑着要坚持到底的时刻,我真不知道当时是怎么挨完后面的专业课考试的。
3月,成绩下来了,我的数学成绩让我差点去跳漓江了---13分!我从小学习勤奋努力,从没拿过这么低的分数。真是破纪录!当时真是灰心到了极点,准备放弃考研,到广东打工,找个地方浪迹天涯,自生自灭去,实在没脸在家呆了。
这个时候,我大哥劝住了我:你都考了两次了,我看来你就是数学差,其它课你都过线了,专业课还都是80多分,为什么不继续努力?集中精力把数学搞好就可以了。你现在放弃,就前功尽弃!
我这人笨,从小学学东西就慢,这是一大弱点。但上天是公平的,他给你一个弱点的同时,也一定提供了让你克服这个弱点的方法。
我笨,但我好强,但我勤奋,但我坚持,人一之,我十之,笨鸟先飞,古已有之,古人可以做到,我为什么就不能做到?这事就这么收场?我不服,不甘心!于是,我下定决心再拼一次。
我现在没有工作,也不想再去找工作了,住在家中,就与堆积如山的书干上了。在关键时刻,年迈的父母无条件地支持了我,他们默默地承担了一切,让我有饭吃,给我一个安静的环境,让我去实现我的梦想。
我深深感受到父母的爱是多么的无条件!我一个二十五六的大小伙子,呆在家中吃闲饭,还让父母为我的前途操心,那种心灵的煎熬,现在想起来都有种想哭的感觉。男儿有泪不轻弹,只因未到伤心处!在此,我要深情地对我的父母说:儿子绝不会忘记你们的恩情,唯望两老保重身体,一定要等到看到我过上好日子的时光。
4.反思,走自己的路!
考研失败,我反复想,为什么我听了陈文灯传授的做题秘诀,反而考得更差了?别人为什么用陈老师的方法考出了好成绩?看来,每个人的具体情况不同,不存在可以让人暴长功力的“武林密笈”,从这件事中我学到,决不能迷信权威,迷信理论。后来我对许多现象与潮流如CMM热、设计模式、软件工程等理论都持有不同的看法,认为把西方的东西原样照搬是行不通的,不经过自己的大脑独立地思索,不经过实践的检验,不要相信任何东西!
从98年到99年1月,我断绝了一切外部联系,把自己关在了家中。我父母的工作单位是一个疗养院,全院加起来也就一两百号人,后山就是一个森林公园,空气清新,林木繁茂,大院里还有一个小山(是真山,不是假山,桂林的这样象竹笋似的山多了),山上修了个亭子,平时少有人来,真是一个闭门修行的好地方。
我每天到小山亭子上去学英语、背政治,桂林四季长青,我周围是青山绿竹,微风一过,树叶沙沙做响,我就在这里学起了战国时的苏秦。从春学到夏,再从夏学到冬,苦苦学了一年,这一年里,使我的心志得到了极大的锻炼,困难更加难以击倒我。后来我境况转好,生活中很多人觉得受不了的挫折,在我看来都不过是小菜一碟罢了。
桂林多奇山,秀美苍翠,风景四季如画。每当我学累的时候,总是看着这美丽的风景,赞叹祖国江山如画,感触人生之渺小,命运之无常!
大哥从北京带回了一台电脑,奔腾166、4.2G的昆腾大脚硬盘,当时不错的配置,把它送给了我用。我渴望了多久的东西终于到手了,我终于可以无限制地使用计算机了!我把电脑放在床前,伴它入眠。
我有时半夜会突然惊醒,想着目前的困境,浑身会出一身冷汗。电脑沉默不语,在一旁安静地陪着我。我看着那蓝幽幽的屏幕,心情非常复杂。
有了电脑也难过,我得抑制住自己强烈地想探索软件技术的欲望,强制自己把主要精力放在考研上。
整个考研英语大纲有5300多个单词,为了背下它们,我用VB编了一个背单词的小软件,每次可以分别显示中文或英文,并可以区分哪些单词没记住,下次复习。所有单词我都是用键盘一个字母一个字母地敲入的,每天早上一起床,先对着电脑背它半个小时。到考研结束,我一看,数据库中已有了两千多个单词。
这一年以来,我真是玩命,什么考研理论我都不信了,我就托人买了国家教委出的几本考试分析,就专门研究考研试题,我要找出适合我自己的方法来。
考研数学考试分析500多页的书,被我翻来覆去地将历年考试试题做了三遍。党的十五大报告我至少背了一百多遍,我称之为背“语录”,真称得上是“倒背如流”,考政治时我把大段大段的十五大报告文字抄上去,居然得了75分!
发黄的本科高等数学和概率与数理统计,以及蓝色封皮的线性代数课本,都被我翻得不成样子。我觉得我就是基础太差,在这种基础之上,讲什么做题方法都是空中楼阁,一定要抓住“三基”(基本知识、基本方法与基本原理)。但我不得不悲哀地指出,我这些努力并未使我的数学能力有所提高,数学并不是这样学的,数学思维绝不是这样培养的。怎样学数学?得去问华罗庚与陈景润等数学大师!我至今数学还是不行。也希望有这方面经验的人能够教我,让我补上数学这一课。
生活总算给了我一次微笑。1999年考研,我数学得了60分,终于迈进了大学的门槛,可以打起背包上北京了。
我这人比较笨,不善于找到达到目标的最佳路线,但凭着牛劲钻下去,硬给我钻出了一条路。这条路能走通还带有一些侥幸的色彩,大家想必比我聪明得多,一定能找到更好的路,用更经济更聪明的办法达到目的,这是一种大智慧,是我所没有的。
这段经历对我个人的思想品质的影响是深远的。为什么这么说?为了考政治,我深入全面地了解了中国近现代史,我去盗版碟市场买了不少存有历史资料的光盘,从多方面来看中国历史,凡电视中有关历史的节目,我必看。我在这里尤其想说的是一个巨著——《毛泽东选集》!经历过文革的每个家庭,哪家没有毛选?我家就有不止一套。毛泽东选集一到四卷,发黄的书被我在这段时间通读了一遍。其中的经典文章更是被我看了一遍又一遍,赶上金庸的《射雕英雄传》了。越读越觉得毛泽东之人真是数百年才出一人的大牛人,他的《湖南农**动考察报告》、《论持久战》等著作,其中体现出来的深刻洞察力与对中国国情的深入把握,其博大的心胸,为国为民的精神真叫我震撼!最终夺了天下,实在是中国社会的必然,当时她集中了多少中国最出色最优秀的人才,再加上毛泽东这种不世出的大牛人领导,老蒋真与他不是一个水准的,想与老毛逐鹿中原,必败无疑!我成了毛泽东的崇拜者,但绝不是盲从者。
说起来大家可能不信,我从毛选中得到了许多精神上的营养,更加乐观了。毛选,真是中国人巨大的精神财富!近年来有不少愤青指着毛泽东晚年的失误全盘否定毛泽东,在我看来真是狂妄无知,他们有几个真正了解毛泽东?有几个真正客观地看过毛选?有几个有资格对毛泽东做出评价? 把他们放回毛泽东生存的那个民族危亡的时代,他们还会有这么多屁放?!说不定最先当汉奸的就是他们。呵呵,不好意思,说粗话了。
闲话少说,回到正题。
回顾这段经历,我只能说是“具有中国特色的考研之路”。我感叹,中国的考试就是扼杀人性的东西,高考与考研尤其如此。我要是用这种精力去学计算机,一年半的时间,还有什么技术学不到手?但我没办法,现实逼着我去考这种我并不想考的试。中国考试之难我看全世界也不多见,我想,每年全国还有那么多的学生要参加这种考试,大量的人力物力与年青人的精力和时间都耗费在考试上了,而考试的内容与实际脱离那么远,真的有助于人才的脱颖而出?我看反倒是形成了一种应试教育,扼杀了年青人本来所具有的创造性,中国现在为什么出不了大师级的人物,应该反思中国的教育制度。
下篇-实践人生
一、希特勒地堡与CIH病毒
1999年4月,我来到北京参加研究生复试。复试完了之后就不回去了,我拿着一张光盘,里面刻着我用VB和Authorware 3.5编的一个Cool 3D的教学软件,到处参加招聘会,开始了在北京的打工生涯。
说句实话,我心中真是一点底也没有。北京人才济济,我一个三流大学的毕业生,又不是计算机专业的,有人要我吗?
我在北京无依无靠,没有任何一个亲戚在北京,住成了大问题。北京这地方,钱太不经花,生活费用太高,我四处寻找便宜的地方住。后来,我在北京化工大学对面的招待所中租了个床位,每晚20元,地下室。这个招待所的地下室非常大,每天回去的时候,都要走过长长的曲曲折折的通道,加上那昏黄的灯泡,每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗,不见天日。地下室里人员很杂,什么人都有,永远没有一种安全的感觉,所幸的是我也是个穷光蛋,光脚的还怕穿鞋的?别人能呆我也能呆,唯一让我担心的是钱,没钱,在北京连流落街头都不够格,立马被收容去昌平筛沙。呵呵,我没这种经历,这是当时住一块的一个外地要考北京中医药大学的博士生说的(我俩居然住到了一个屋里,大家都没钱,只能挤地下室,只是他老兄晚上打呼,我可真受了不少罪)。
日子一天天过去,袋里的钱一天天少了,但工作还是没着落,心中越来越慌,除去学费,来京时父母给我2000元,大哥资助我的1000元就是我当时的全部资金(3000元在北京能呆多久?!)。我当时订了个计划,留下500元保底,打死都不能动,要靠它作路费回家的。我当时说,一定得找到一家公司,再少的钱都干,只要有口饭吃,有张床让我睡我就满足了。
我一共应聘了四五家公司,最具传奇色彩的是到西单附近一家公司的应聘经历。那时,我带去了我的作品,公司项目经理要看,于是我给他们演示,很奇怪,程序一打开就死机,一连两台电脑都一样,末了,两台电脑都启动不起来了。用瑞星一查,CIH病毒——那天正是4月26日!于是,CIH破坏了电脑主板的同时,也无情地摧毁了我的就业机会。还算老板可怜我,没要我赔。其实我当时快到山穷水尽的地步了,真要我出钱,我可能连家都回不了啦。陈盈豪(CIH病毒的作者),你小子这么的聪明做什么不行,偏要去做病毒,害人害已,弄得我连个饭碗也找不到,晚上回“希特勒地堡”,把这小子骂了无数次!
总算天无绝人之路,在我数着最后还剩余600元钱的时候,终于有一家公司要我了,做中小学教育软件,月薪1600。干了两星期,又给我在公司的仓库挪开货物,搭了个床位,我就在那住下了,庆幸再也不用到“希特勒地堡”里当冲锋队员了。每天下班后,我就睡在林立的大纸箱之中,如果来个地震,呵呵,我就埋在纸箱中了,休想爬得出来!
我干得非常努力,第一个月工资开出来,扣掉个人所得税,我拿了1500多元。你们不知道我拿到第一笔工资的感觉!这钱在很多人眼里简直不算钱,但对于一个没工作近两年,工作也一个月收入不到200的穷小子而言,就象陈佩斯小品中所演的:“我王老五活了一辈子,还从没见过这么多钱啊!”。好笑吗?我一点也不觉得好笑。我只是心酸,我到了28岁才可以用自己的知识与技能养活自己,再不用依靠父母和兄长的资助,才真正完全用自己的力量在社会上站起来,一个没有经济自立能力的人,只能是个不成熟的人,一个躺在父母身上的人,不是一个真正的男子汉!我当这样的孬种当了28年!
我找到工作后向家里写过一封长信,信中讲了我对父母平时不好意思说的很多心里话,当时,我父亲说,母亲接到信都哭了。我刚拿到工资,马上打了个电话回家里告诉母亲,以缓解他们的焦虑,毕竟儿行千里母担心啊!父母有退休金,一再表示不需要我赡养,而我再这样不要脸下去,我还是人吗?我就是从那时候开始,下定决心,从今往后,再不向家中要一分钱!今后三年读书和生活的费用我一定要用自己的劳动来获取。
金钱带给我的激动就是在那段时间,温饱问题解决之后,金钱对我的诱惑就再没有了,哪怕让我一个月赚一万,给套房子给我,也不可能再给我带来幸福的感觉了,钱是重要的,但不能成为它的奴隶,家中不需要我负担,我一个人有吃有喝,干着我喜欢的工作,足矣!
我在那公司一直干到九月学校开学为止。我走的那一天,公司居然还开了个欢送宴会,老板封了500元的封包给我。我真是感动。我大学毕业后在社会上挣扎求生,得到的大都是冷眼与蔑视,社会终于认可了我的价值,我不是一个只知道吃饭的废物!
1999年9月9日上午9点,在这个最多9字的时刻,我到学校报道来了,放下行李,我坐在分配给我的床上,心中终于踏实下来。
现在,我在北京终于有一张属于我的床了,一张真正属于我的床了,终于有个地方可以让我安稳地睡觉了。没有这段经历,我怎么体验到“安居乐业”这一个词的真实含义!个人如此,国家要做到,中国要做到,更难!
二、编程生涯
读研两年半的时间,我四处打工,这两年半我至少在七八家公司做过,编了十几万行代码,为自己赚了一台电脑,两部手机(丢了一部),还有读研期间的所有费用,实现了我的目标:没向家里要一分钱。
我水平不高,但在打工过程中,发现许多中国软件公司的水平更菜!
2000年暑假,我参加一个商品软件的开发,搬到了北大燕北园的一个宿舍,在那儿搞封闭式开发。在这个项目采用VB6开发,主力程序员除我之处,还有一个华北电力大学的研究生。大家都没开发商品软件的经验,没经过正式的设计,就匆忙编码了。我曾经想采用分层的系统架构,但遭到另一位程序员的反对,争吵没有结果,老板也不能做决定,结果各行其是。现在看起来,那时真是太菜了,任何一本软件工程书都会指出这种做法是不对的。
我们直接就热火朝天的干了起来,那位华北电力大学的老兄,真让我佩服,他可以在一个sub过程中写上2000行代码!我觉得奇怪,为何他能写这么多的代码?一看,顿时我晕倒,他居然将每个控件的left, top, width等属性都用代码来设定!想想这样的程序,调试时光单步执行就需要按多少次F8键!
我们在电脑旁边搭了个行军床,每天都是干到早上6点才睡,12点吃中饭,然后又是一个通宵。当时整个工程只有一个类模块,被我用于封装访问数据库的ADO数据引擎,这是整个工程中唯一一处用到了最简单的面向对象技术的地方。然后,我写了近十个bas公用模块,每个模块代码规模都有一两千行,还有十几个窗体,每个窗体中都塞满了事件驱动的VB代码,整个软件应该有10万行代码,我一个人在此期间至少就写了3万多行VB代码。程序的主处理流程我甚至用ADO与DAO写了两套!
现在想起来,我们当时根本就不知道面向对象为何物,更不理解许多对软件开发至关重要的理论,就凭着一种热情。在这段痛苦的开发经历中,我不仅精熟了VB,而且从中学到了很多。现在再开发同样功能的东西。我至少可以砍掉2/3的代码。怎么学都不如从失败中学得多。
后来我总结VB程序员的三个境界:
(1)所有代码都只放在窗体文件中的,属于菜鸟级,他们只会从面板上拖控件,设置属性,然后再给事件编码。
(2)工程中有bas模块的,属于中间级,他们已意识到有大量的代码是重复出现的,应该将其抽取出来作为公用模块。
(3)工程中有cls模块的,属于高手,他们已掌握了面向对象的思想,并能应用这种思想来解决实际问题。
正是这次开发经历,促使我反思:到底如何开发软件?我个人可以用VB完成各种各样的功能,为什么凑在一起就会那么困难?更正一个bug为何那么难?为什么一个看似简单的软件,要拖半年的时间还看不到结束的日子?
九月,研究生要开题,我自拟了个课题:软件体系结构设计。我决心弄明白,好软件到底是怎么做出来的。
我放下了VB,开始研究C++,原来学过VC,但没学会,就直接从C++ Builder入手。Borland公司的VCL类库让我大为叹服,很快就迷上了它,为此连带学了Delphi,并参与了一个Delphi项目。给我真正震撼的是《设计模式》这本书,看了才知道,原来好软件是这么设计出来的!在此,我强烈推荐所有有一定编程经验的程序员一定要看这本书!
一边学习理论,一边可没忘记我没经济来源,于是又四处打工,接一些小项目与小模块来赚些生活费,国内一家横跨家电与软件的著名公司是我打工期间去过的最大的公司。但无论什么公司,都给我一种感觉——烂!公司中充满了对员工的剥削与不尊重,对软件开发这一事物的错误认识,管理混乱。
我没机会去外企,技术水平不到,别人不要我 ?,但我所见到的软件公司,我敢说没一家能做出世界一流的软件!
我上的研究生课程也让我失望,整个就是本科教育的再版。经过高考与考研两次重大考试,我对考试已是深恶痛绝,但读研期间仍要考试,而且是闭卷!我就不知道我去背那些条文对我的研究与学习有何帮助?2000年7月当我考完最后一门,终于大松一口气,我终于摆脱了考试的压迫,可以在剩余的一年半中真正搜索我渴望已久的软件技术了。这年,我29岁。
悲哀吗?一个中国的程序员要到29岁才可以真正自由地学习想学的东西!
我开始研究面向对象理论,看了大量的书,每天都在实验室学习到深夜12点,天天上网,CSDN成了我最常去的网站。
随着我对软件技术的了解越多,就越深刻地感到国内与国外技术水平的差异是如此的巨大,巨大得甚至有让人绝望的感觉。同时,在北京这个中国软件人才最集中的地方,我也见到了许多牛人,一个清华的本科学生,做程序员可以拿到一个月12000元的工资,一个北大的计算机系研究生,一毕业就到外企,一个月一万多收入,每年发16个月工资!干了两年就开了自己的公司。我看到了一个北方交大的本科生作品,在半年的业余时间里,用Delphi写了十几万行代码,他甚至在代码中嵌入汇编,自行编写数据存取引擎读写Foxpro,速度超快!软件中有一个计算公式解析模块,他用编译原理理论居然做了一个小型的公式解析器,就象C++编译器检查C++程序一样,不仅可以判断是否公式正确,而且给出的出错信息还相当准确!其基本功之扎实,水平之高让我望尘莫及!中国优秀的人才真还是不少的!在精英集聚的北京,面对着博大精深的软件科学,我深感自身的渺小。
但我毕竟是靠自己奋斗出来的,我并不自卑,这世界需要牛人,同样需要大批合格的劳动者,我成为不了牛人,但我作一名程序员是合格的。
时间过得飞快,一年半根本就不算时间,马上就要毕业了,学习的成绩如何,要到社会上去竞争了,让社会考场来决定你是否及格。
三、毕业求职
98级的研究生是IT业最后辉煌的回光反照。当时,各大公司都发了疯似的要人,象华为,当时是来者不拒。计算机专业的研究生是一抢而光,本科生也供不应求。2001年毕业的我的师兄师姐们,平均每个人手头都至少有两三个offer,谈的工资没有低于每月6000的,许多人去了外企,工资在8000~10000每月的也有。真是毕业生的黄金时间。
但好景不常在,911事件我看来好象成了分水岭,911之后,整个IT业急刹车,就业形势急转直下,各大公司都在消化去年吃得过饱的胃口,我形容是大家都吃坏了胃,再也不可能有我师兄师姐们的风光了。虽然时间相隔仅大半年。
从10月开始,11月和12月,我几乎是在招聘会与公共汽车上渡过的,北京东南西北地去面试,上午在上地,下午可能就要跑到朝阳区,疲于奔命。
在找工作过程中,我良好的心理素质与丰富的编程经验起到了很大的作用,并没有遇到很大的困难,就先后有几家公司表示要我。
其中我想说的有两家公司。
一家是中国台湾公司,应该说他们做得是不错的,但我非常反感他们那种自认为高于大陆人的那种优越感,而且待遇也不高。面试之后,回来感觉很不好。
我想:我们大陆确实是不如中国台湾发达,难怪别人看不起我们,这世界势利得很,社会如此,国家亦然。但我中华960万平方公里的国土,13亿人口,难道要依靠一个小小的岛屿来撑门面?难道除了中国台湾公司,我就无处可去了?虽然改变不了什么,但我决定绝不去台资和日资的公司工作(日本人我更不喜欢,但我认为他们做事实在优秀,我们一定要向日本人学习)!在这种公司呆着,不爽!同时,我们的确也得争气些,这世界只尊重强者。
另一家是个很不错的民族软件企业,想要我,其老总专门找我去面谈了一次,希望我能到他的公司工作。这位老总白手起家,能在五六年的时间内由几个人发展到300多人,当时,是中国这个领域软件市场占有率最高的公司,我非常佩服,他为人也很好,并表示可以给我每月比其他研究生多加1000元工资,而且希望锻炼一两年之后我能够带领一个团队来开发产品,并负担我毕业所需交纳的各种费用。在就业不景气的2002年,对我一个30岁的技术水平有限的老程序员如此看重,真叫我感动。虽然我最后还是没去,但我仍然对这个公司充满了好感。一个软件企业最重要的是什么?是对人的尊重,没有这点,可以断定,这个公司长不大。
我为什么没去软件公司?放弃有可能在几年之后年薪突破10万的收入?是因为我已有了更想做的事,我想当老师!
我自己是从自学的路上走过来的,其中的艰辛历历在目,无人指点,我走了多少弯路?中国还有多少是象我这样的年轻人无人指点的?我幸运能爬出来了,因为我至少还能有饭吃,比我条件更差的,比如农村的孩子,可能就被生活的压力所淹没了。我个人的力量很微弱,技术也有限,但我自认为至少是一名合格的程序员,如果能培养出一大批达到我的水平的学生,他们毕业后成为合格的程序员,中国软件的根基就会更扎实,如果更能有一批远远超过我水平的学生出来,中国软件就有希望了。软件是什么?软件以人为本!
人生追求什么?金钱?我很缺钱,但不可能把金钱作为我的目标,我希望我能够成为一个对社会有所贡献的人,能够获得心灵的充实,于是,我选择了留校。
四、对教育的反思与教书生涯
2002年下半年,我参加了北京高校青年教师岗前培训。一位杜教授的两堂课让我印象深刻,其中两句话让我深深震动:
第一句话:我是一个教书匠,教书匠好啊,好就好在“匠心独运”!
第二句话:做什么工作都要达到变魔术的境界!
是的,作为一名教师,就必须起到一个传声筒与放大器的作用,将人类最聪明的人探索世界所得到的知识予以拓宽发展,以便让更多的人能够掌握这些知识并进而应用于实践,从而推动人类的不断进步。
作为一名计算机专业的教师,就要努力把先进的计算机技术以尽可能高的效率传授给广大的学生,引导他们直接面对真实的软件世界,而不是向他们硬灌各种各样的理论知识,强迫他们去死记硬背以应付考试。
我是一个小人物,才低学浅,但我真的认为高校计算机教育存在严重的问题。我在打工期间的开发经历,以及阅读国外相关资料的时候,发现学校中教的和社会上用的差得太远!都已经是什么时代了,许多大学还设立Foxpro课程,难道就不能直接用现代主流的数据库如Oracle,SQL Server,哪怕是Access也好,来讲授数据库知识?还有所谓的计算机等级考试,呵呵,过了三级学生的我见过不少,但他们真正对软件,对计算机又理解多少?
在中国甚至于升职称也要考计算机,我看了一本职称计算机考试教材,里面几乎原样照搬计算机原理课程中的相关章节,弄得我给搞艺术的大嫂讲了一个小时的二进制与八进制、十六进制的转换方法,她还是弄不太清。我都泄气了,对啊,他们搞艺术的,有必要去分清二进制的10与十进制的2有何分别吗?他们八辈子也用不上。但是考试用得上,呵呵,又是中国特色。
拿C++来说,我讲过C++课,许多的国内教材对C++语法下了大功夫,却对体现了C++精华的STL只字不提,对代码背后所体现的软件开发思想与方法更是视而不见,我用C++也编过不少程序了,说句实话,我用到的特性不到C++的三分之一!于是就出现了这种怪现象,许多学生考试可以拿八九十分,给他一个简单的实际问题他却不知如何下手!
还有UML,现在好象很火的样子,我们读研时就开了这门课,讲句实话,当时这门课我就没听懂,可后来我尝试着用C++用面向对象的方法来编程序,然后,由代码倒推回UML类图,一下子就明白了,原来UML只不过是一种描述面向对象系统的符号罢了,如果学生没进行过真正的OOP,那就是为了学UML而学UML,根本就本末倒置。
还有软件工程,我的感觉,一个人如果没写过一万行以上的程序,他看软件工程书就同看政治书差不多,每句都对,呵呵,就不知道为什么对。我完成了那个几万行的VB程序之后,再回过头看看理论,真是句句是真理!每个理论背后都是大量实践经验的总结。
回想我做软件的体会,我发现所有的知识都是一个完整的体系,根本就无法区分哪些知识是本科的,哪些知识是研究生课程。于是,一种想法产生了,我主讲程序语言类的课程,那我就直接以真实的软件开发过程为主线,实践中需要什么我就讲什么。讲C++,我就抛开了指定的教材,C++我讲了STL,我讲了OOAD,两者我都讲了用Rose进行双向工程,引导学生去学UML,一开始就用UML去描述自己开发的程序,何必浪费大量的时间去学结构化的编程方法?
我现在简直成了面向对象技术的布道者,我下学期即将开设OOAD基础选修课,从实际项目中抽取典型的案例,讲UML,讲Rose,讲设计模式,讲软件体系结构,例子代码横跨C++和.NET下的开发语言(C#和VB.NET),这对于我一个技术水平有限公司的董事长而言,实在有点不自量力,我鼻子上才插上几根葱,就想装大象?但我想,如果我能成功地激发出哪怕1%的学生的兴趣,能引导他们走向我认为是正确的方向,能启发他们思考,能直接面向真实的软件开发活动而不是学校的考试,就是我的成绩。我现在正在看引进的原版书籍——《设计模式解析》,时时击节赞叹!《设计模式》经典但难懂难用,而《解析》一书的两位作者既有丰富的从业经验,又对OOAD进行了深入的思索,真知灼见时时展露于书中,我现在刚看了这本书的80%,基本上可以用一个成语来描述这部书:深入浅出!
要做到深入浅出谈何容易!只有同时具备技术专家与文学作家素质的人才能做到!
反观我们国内的大量教材,还有大量的垃圾论文(包括硕士、博士的,本科的就算了,我看绝大部分根本不能称之为论文),全都是“浅入深出”,作者自己都未必明白,就东拼西凑,摆出个样子吓人。本来完全可以用大白话三言两语讲清楚让人明白的道理,有人专门要绕一大圈,专挑用高深的数学公式来表达,唯恐别人容易理解,显得他水平不高!呵呵,什么东西一沾上“数学”,立马身价百倍。我就听过一个北师大的一个在读博士说过:如果一篇博士论文中没有一个数学公式,根本就不算是博士论文。这句话对不对,大家可以多思索。我数学不好,没资格讨论数学,我的直觉:数学是工具,但如果为了发表论文等目的而故弄玄虚,为数学而数学,是不合道理的。中国的学术水平与现状,大家都心知肚明,不用我废话了。
现在每年都毕业大批的计算机专业学生,可其中真正具备扎实根基的可以很快胜任工作的我看只有5%(95%的学生不要扁我,不同意就当我在说胡话,我很瘦的,一扁就没了?)。多年以来,我国高校计算机教育是按照计算机科学研究者来培养的,可事实上,有多少学生能从事计算机方面研究的能力?我看应分流,80%的学生按工程师方向来培养,20%的学生按研究者方向来培养,而且应大幅减少必修课的数量,计算机领域太深太广,样样都想教给学生,反而成了夹生饭,一个想从事硬件设计的学生和一个想从事软件开发的学生,能给他们一样的饭吃吗?学校应提供各种条件和资源去引导学生,激发学生的创造性与主动探索性,让他们去尝试,去发现自己的长处,最终找到最适合自己的发展方向。不这样做,中国软件后继乏人,没希望。
五、实践第一
2002年下半年,我和一个朋友去了北京郊区的一家杂志社,看到的情形让我震惊:在信息产业最发达的北京,这家杂志社还用人工查对杂志订单和款单,看着那按省来登记的几大本厚厚的客户登记本,工作人员需要手工来在其中查找相应的信息。这样的工作效率,这样的行业信息化水平!北京如此,全国又如何?
从这件事上,我看到了中国软件业的另一方面。一方面我们没有核心技术,另一方面,已有的技术又根本没推广没用好。追踪世界先进水平,对于我等这种水平的人来说,确实勉为其难,但将已有的技术用于解决实际问题,却是我们可以做的。如果中国各行各业都真正能通过进行信息化而提高生产效益,那中国不就从根本上强大起来了吗(象印度,IT一枝独秀,其他行业没有起色,我称之为跛足的国家,绝不能成为世界强国)?在扎实的社会基础之上,软件业不就有了更大的市场与发展潜力?中国许多行业的信息化水平非常低,而且中国地域广大,发展非常不平衡,有些地方信息化水平甚至为0!努力推动行业信息化,是我们这一代软件开发者的责任!而追赶国外先进水平,恐怕就不是一代两代程序员可以达到目标的,需要长期的努力。作为一名软件开发者,只能脚踏实地,哪怕你只做一个小小的MIS产品,也要尽力把它做好来。
于是,我开始了期刊发行系统的开发,这完全是自发的,没有任何资金投入,只有一种热情在支撑。我开始选择C++ Builder开发,做了几个月,完成了第一个版本,但我发现,我找不到足够水平的C++程序员进行合作开发,而且整个一个exe文件,在体系结构设计上虽采用了分层分块的设计方案,但却是源代码级别的,要拆分成COM组件难度太大,不是一个人能完成的,于是中途流产。
2003年3月,我开始系统地学习.NET,我吃惊地发现,我原来想在C++中实现的许多功能,比如对象串行化为XML,在.NET中已有现成的类可用,.NET更把OO的功用发挥到了极致,它的混合语言开发,它的反射机制,它的新的自识别的软件组件,以及强大好用的开发环境Visual Studio,都让我惊叹微软对开发者遇到的困难的深入把握,相比用C++开发,至少可以提高1/3的开发效率。于是一个新的想法产生了,我要把以前的产品用.NET重写,利用.NET强大的组件模型,将设计模式理论推广应用到组件级别,通过XML和反射机制建立一套可动态装配的软件生产流水线,实现象Dell直销PC那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构,配以对业务领域的深入分析,逐步建立功能强大的业务组件仓库,就可以实现软件系统的动态装配。说干就干,我用VB.NET重写了原先用C++编写的系统,将原先的一个exe变为十几个dll,而且这些dll还会随着发展而不断地分裂,也有可能重新组合,利用refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做软件关键因素是变化,只有适应变化的系统才是有生命力的。
我用两个月的时间大体上弄清了.NET平台下的主要类库,然后又用两个月的时间再次重新实现了期刊发行系统的C++版本的全部功能,到8月份我写这篇文章之时,第一个产品里程碑已经完成。同样的,除了需求是由另一个合作者去搜集的之外,几乎又是全部由我一个人包揽了所有的系统设计及编码工作!
毫无疑问,我自觉得新系统要比老系统可维护性强得多,真正实现了彻底的全组件化系统开发,计划再有一个月的界面美化,改正bug,引用多线程提高运行效率,优化系统结构,就可以提供给用户试用了。市场如何,难说难测。
在开发过程中,我再次感到巨大的挑战,不光是技术上的,更是管理上的。人才是我最头痛的问题,没有一流的人才,哪来一流的产品?我们找不到足够水平的程序员一起合作(牛人哪屑于做这样一个小儿科的产品?)我们要走的路还很长。也许我们开发的产品是失败的,但我从来就没指望能用这赚钱,我只是尽一个软件开发者的责任而己,成败已不重要!人生不尝试,怎能体现人活着的价值?
刚好我编的程序告一段落。于是就crazy地敲键盘,一鼓作气地把下篇写完了。心中有好多话一次就说个痛快。
看得越多,想得越多,我就越困惑,人啊,你活着到底是为了什么?又整天忙忙碌碌地追求些什么?我这十年,……我都不知道怎么说了!
大家自己看吧!
结束语 永无止境的软件之路
一、辛酸与苦辣
做软件开发很苦的,技术进步如此神速,每个软件开发者都得不断地学习以跟上发展的步伐。有时我常想,何苦呢?我现在在大学中混,怎么样不能混下去?为什么要做这些吃力不讨好的事?我投了十年的时间去学习电脑,却最终发现自己不过中人之资,离顶峰远之又远。古语云:三十而立。我今年32了,仍是孤身一人,看看周围的同学,他们的小孩都差不多上小学了!许多都有了自己的房子和车子,而我到现在才开始申报中级职称,还挤在集体宿舍中,望着北京高昂的房价而叹息。现在社会越来越功利了,看着象我这样的穷光蛋,看着由于长期面对电脑缺少锻炼而瘦弱的身躯,又有哪个女孩愿意嫁过来受苦?
软件人的生活很苦,压力很大,我认为是拿青春赌明天。就是在这种恶劣的开发环境中,还有许多业外人士指手划脚说程序员如何如何,还有太多的公司只顾压榨程序员的劳动,缺乏对程序员基本的尊重,怎不叫人寒心?
“三十而衰”,这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀!
二、无止境的追求
人类已进入信息时代,计算机技术几乎每隔半年就有一次大的变化,我现在又面临着这样的抉择:今后的路如何走?
北大的教师聘任制度的改革一石激起千层浪,说明了中国高校的改革势在必行。我是欢迎这种变化的,虽然到时我可能会下岗。但人生中总会遇到各种各样的挑战,只要你不倒下爬不起来,就有希望。
我想我必须再次让自己有个提升,要从小事做起,但做小事则绝不能成为最终的目标,也许,不远的将来,我会走出国门,到世界软件技术最发达的地区去汲取丰富的养份。今后的路怎么走,我还在摸索之中。
三、人生无悔
人生年华如水,时光无情。在过去的岁月中,我尽了自己的力,回顾往事,我可以说:过去的事只有遗憾,却没有后悔。如果给我再一次选择职业的机会,我还会再次选择软件!
再过10年,到2013年的时候,我也许会再次写一篇人生的十年回顾,到那时中国的软件会如何?中国软件的明天靠你我这些普通人去扎扎实实地去工作来支撑!少发些牢骚,多做些实事,中国软件才会有光辉的明天。你我共勉!
一个老程序员的心理话
完成于 2003-8-3 北京
2003-8-3中午14:33,在我的弹指神功之下,我写完了这近两三万字的个人自诉。一点也不累,回想过去的种种感触,仍然身在其中。
楼上一位兄弟说想看我的爱情故事,但人生不是小说,没有什么浪漫的,我只能让你失望了,我是孤单地在人生之路上走着,我就是这样的一个带着点悲剧色彩的人。
如果有人能有这上中下三篇文章耐心看完,我会谢谢你。如果有人能指点我,我感激你。
好了,我去休息了,生活是一天天过的,不是吗?
第三篇:一个老程序员的心得
1个老程序员的心得
[size=4]不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1.扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2.丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3.最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4.不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5.对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6.多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8.韧性和毅力。这也许是“高手”和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助 做了快三年的程序员了,有一点小体会和大家分享一下.1.好钢是由铁炼成的.一名好的程序员必须经过千锤百炼才行, 挫折是程序员最大的宝,要能承受挫折,战胜挫折,只有不断经受挫折,从挫折中吸取经验,教训,这样你才能成为真正的程序员.2.手是好汉,眼是懒汉.看会不是目的,要会写,勤动手,熟练书写各种常用代码,在学习之初 可以不借助IDE来书写代码,反复练习,熟能成巧,毋庸置疑.3.稳中求胜,小心使得万年船.程序员最忌讳毛躁.代码多,项目大的时候,错误是在所难免的,但低级错误一定不能犯,尽量把错误压到最低,这就要求我们程序员养成稳重,多思维的方式,切忌浮躁,养成良好的书写习惯和正确的思维方式.4.做就做程序员,不要做高级打字员.每个程序员都是从基础学起的,在学的时候一定要把握好方向不要被众多的语言,概念所迷惑,学的是语言,学的是编程思想不要在IDE上下功夫,研究哪个好,哪个坏,要敢于创新,程序是死的人是活的,在活人手里,也要让程序活起来.多学多看数据结构等书多看别人的成型代码,学习别人的思想,使自己成为真正的程序员.5.敢想敢做,持之以恒,一切皆有可能!
一点薄思庸见送给赛迪网java版的初学者们,仅代表本人个人意见,如有任何各位大虾有好的方法或意见可以跟帖提出.java开发八荣八耻
以动手实践为荣,以只看不练为耻。以打印日志为荣,以出错不报为耻。以局部变量为荣,以全局变量为耻。以单元测试为荣,以手工测试为耻。以代码重用为荣,以复制粘贴为耻。以多态应用为荣,以分支判断为耻。以定义常量为荣,以魔法数字为耻。以总结思考为荣,以不求甚解为耻。
从大学开始到现在,学习编程已经四年了,在过去的四年里学了不少的东西,总感觉自已还行吧。怎么着也能找个好的工作。加上在学校表现良好,大专一毕业就顺利应聘上一个政府机构的工作。虽然工资不算多,但也稳定。但总觉得自己有点屈才.一天,见到本市的一家知名软件企业的招聘信息,就把自己从大学三年到现在写过的一些东西简单地写了一份求职信过去(不是想跳槽,只是想测试一下我现在这份工作丢了,在社会上我能够达到什么程度)。
没想到,第二天,那家公司就叫我过去应聘了。感觉很突然,总觉得一些软件公司在人才网站上打一些招聘信息总是借此做大做广告,并不是想招聘人,就是要招聘人,可能因为这种因素的机率都很小吧。(这是我一直以来对人才网站上某些软件公司的招聘信息的看法),不过却增加了几分信心,于是我便兴冲冲的去了。
到了公司,首先就让我填写一张表格,填写完一张表格以后安排一个技术主管过来与我谈,谈的倒不是一些深入的技术问题,我基本上的都能应上来。接着就是上机测试。测试的题目是写一个人员信息的插入、修改、显示。主考官说只需要写一个功能就是,只是希望看看我的编程风格。于是我把数据操作写了一个类,然后在按钮的事件里得到输入框值,组合一个SQL,传到数据操作类里面去执行,然后返回插入结果就可以了。完了,很快搞定。马上叫主考官过来看吧。呵呵,小意思。
主考官过来了,首先就在姓名的地方输入好长的一串字符串,接着一阵乱输,完了,出问题。名字太长了,邮件没有限制,身份证没有限制,生日没有限制,完了,完了,我想,这么点东西,就出问题了,我心里好一阵紧张。还好就是主考官的态度还不错,说:“虽然你做了足够的注释,缩近也注意了,但是却没有对输入的值进行判断,我们这为合理的判断也是好的编程风格,再者,你虽然把数据操作写成了类,但也有很多的改进,一是。。二是。。”说完以后还鼓励我接着写刚才的代码。当时真是很是感动,但感动归感动,说老实话,这些判断平时还真的没有写过多少,都是写一个以后,COPY过去COPY过来的用,现在一时还觉得有些短路,不知道如何是好,然后,就是按钮的事件中写对数值的判断。终于完成了,再看看表,时间距刚开始测试已经快一个小时了。
主考官过来看了,觉得功能都实现了,就叫了公司的一个副经理(后来才知道的)来继续面试我。这个副总就到我到另外的一个会议室去,问了我一些技术概念的问题,结果我基本上都答不过来(我以前觉得我能够用就够了啥,没有太大的必有对这写概念的条款记得这么清楚啥),结果,那位副经理训斥了我一下,说:“你对这些概念都不清楚,怎么了解其间的性能呢,不了解性能如何开发高效率的程序呢?”(整个谈话这句最让我满意,其他的都是“我们是专业的软件公司,很注重软件的性能,编程风格等等如事云云”),最后问了我的薪水要求和能不能适应公司的开发等就叫我回家去等消息。
当然,由于后面没有过关当然也没有应聘得上。更当然,我吸取了这次应聘的经验,总结以下几条来做为以后学习的信条,写出来与大家共勉:
一,学习应该从基础抓起,注意学习的每个细节,争取学精,避免为了开发而开发。
二,在以一门语言为主功语言的同时,要学习一下与之相关的其它技术。
三,长常保持对新技术的关注,了解未来发展的方向,做到有的放矢。
四,多参与项目开发,在项目中发现问题,解决问题,才能更好的了解学习中的细节问题。
五,加强交流,多写文章,多发源码,多收取意见,在交流学习并提高,才能更快了解自已的不足。
六, 永远相信下一个作品是最好的....业余程序员最喜欢做的一件事就是对不同的语言进行比较。Java是否比C++好?C#是否会成为终极语言?凡此种种。从专业程序员的角度看来,这是最低级无趣的游戏。
其一,在项目诸元确定之后,通常并没有选择语言的余地;其二,语言的生存本身就是一个达尔文主义的问题:设若两种语言有明确的可比较性,其中较劣的那一种必定早已被淘汰出局,又何来比较的必要?所以,有“C++之父”美称的Bjarne Stroustrup博士常常声明自己不会拿C++与其他语言比较——偏偏每次接受采访时,必定有外行的记者或听众提出这一类最令他反感的问题,这是题外话,按下不表。
丢开实用主义的观点,从美学(或者说,计算机科学)的角度来看,语言的比较似乎并不像它通常所表现的那么低级。毕竟,既然维特根斯坦反复强调“语言制订游戏的规则”、“凡不可言说者必保持沉默”,可见语言并非仅仅是可通约的思想的映射,语言本身就决定思想的方式。使这个问题显得那么低级而业余的,往往是业余程序员讨论它的方式:仅仅凭着自己对几种语言一知半解的认识、仅仅凭着使用一种语言的习惯、甚至仅仅凭着一种宗教狂热来展开讨论,这样的讨论自然是不值一哂的。
我是不是已经提到了“宗教狂热”这个词?如果说对语言的喜爱(或者憎恶)可以成为一种宗教狂热,就有那么一些人可以凭着宗教般的狂热成为开发高手,Ian Joyner无疑属于这种人。1992年,在Unisys用C++开发UNIXX.500时,Joyner感到C++让他“不自在”,于是就写了一篇题为《C++批判》的报告,张贴在Unisys的内部新闻组上。到此为止,一切都没有什么不同。但Joyner与其他宗教狂热者的区别在于:他有着远为深厚的理论基础,以及锲而不舍的毅力。于是,《C++批判》有了第二版和在Internet上广为流传的第三版。到1998年,这篇典型的论坛文章终于变成了一本书,“批判”也彻底变成了语言之间的比较(参与比较的另外两种语言是Java和Eiffel),这就是我手上的《对象揭秘:Java、Eiffel和C++》(Object Unencapsulated:Java,Eiffeland C++,人民邮电出版社2003年7月)。
尽管宣称自己反对“宗教战争”,但显然Ian Joyner是深谙宗教战争之道的。从批评的方式来说,他与其他人并无不同:首先立论(“Eiffel是最好的语言”),然后不断变换角度批评对手——时而是数学理论的完备性、时而是使用的便利和可靠、时而是命名的清晰„„论据的选取完全只是为论点服务。也正因为此,这本《对象揭秘》足以让绝大多数的语言比较者感到羞赧,因为在同样的批评套路上,Joyner探索的深度和广度令他们望尘莫及。譬如说,任何一个负责的语言比较者都必然会提到“继承和类型系统”这一话题,但Joyner却把这个话题写成了长达63页的一章(第5章,“类型扩展:继承与虚拟”),并在后面的章节(第9章,“类型转换”)中继续讨论相关的问题。抛开篇幅不谈,单是Joyner习以为常的文法解读、Lamda演算法和签名变化理论,就足以使不够水准的批评者自惭形秽了。
因此,在我看来,这本《对象揭秘》完全有理由成为所有语言比较者的必读书目——也许说“入门书目”会更准确一些?因为你能想到的任何一条批评,Ian Joyner很可能早已做了鞭辟入里的阐述。如果在细读《对象揭秘》之前妄自作评,结果很可能是贻笑大方。另一方面,在批评的方法上,Joyner为后来者作出了表率:简单的反对与谩骂毫无意义,用钱钟书的话来说,“反其道以行也是一种模仿”;只有拿出充足的论据,再拿出合理的解决方案,才称得上一个高明的批评者。当然,这样的“入门书目”也许让门槛显得太高了一点。但对于“Java和C++谁更好”这样一个通常只会令人感到莫名烦躁的话题,门槛总是不厌其高的。
像我一样的Java人常常会抱怨“Java的经典书籍太少了”。C++的经典好书总是层出不穷,实在令人艳羡——当然真正拥有这些书的人也同时拥有不少的烦恼,我就有最深切的体会。在这本《对象揭秘》中,IanJoyner顺便也半开玩笑地揭开了这个秘密。也许,这句半开玩笑的话会成为Java人喜爱这本书的另一个理由:
“„„学习C++要花那么长时间„„,要比Eiffel和Java都长得多。花那么长时间还未必掌握编程或者面向对象设计技术。这也是为什么关于C++的书籍那么多而Eiffel和Java不需要那么多书的原因。”
我是初中时接触编程的。那时父亲厂里买了一台微电脑,而我父亲,当时正好可以接触到这台微机,于是,颇具战略眼光的父亲便开始帮我寻找各种书籍资料,让我学起了计算机。
第一眼看到它,我就被吸引住了。那是在当时也很差的一种名叫“R1”的微机,可是颜色实在漂亮,典雅的奶黄色,配着深绿的按键,按下不同的键还有不同音调的悦耳的声音。跟当时风行的大多数八位微电脑一样,整个机身实际就是一个键盘,比现在PC机通常的键盘还要小,显示器就用电视机。当我第一次把从书上抄下来的寥寥几句的一个Basic程序从嘀嘀作响的键盘上敲入,最后再打进了“RUN”,而屏幕上忠实地显示出了结果后,我就不可救药地迷上了编程。父亲的厂离家有五公里,每个星期天我都要自己一个人步行五公里,把一个星期里自己写下的一大堆Basic程序拿来调试,当然一大半都被它冷酷的拒绝了,所以每次有一个程序通过了,我都会兴奋的叫起来。那时我的体力不好,五公里走下来,相当累,还经常小腿抽筋,可是一坐到电脑前,听见打开时“嘀”的提示音,一切的痛和累都消失了。
渐渐地我的程序通过率越来越高了,程序的规模也在增长。但是,那台外表可爱的电脑却开始不堪重负了,运行速度本来就慢,又加上效率低下的解释性Basic语言,让我实在不可忍受。于是,父亲又到新华书店为我订下了一本《Z80汇编语言》的书。书一到,我就捧起这部大块头的书,开始用我初中的程度一点点地啃。边啃边实验,终于掌握了Z80汇编语言,又在电脑不具备输入汇编语言能力的情况下,手工翻译成机器语言,再通过Basic语言中的Poke语句把二进制代码输入内存,然后用Basic程序调用。在不懈的努力下,终于成功地做出了一个汇编语言的动画程序!在这次成功之后,我就开始相信,只要肯钻研,没有学不会的技术,没有克服不了的难题。
初中毕业后,我以全县第一的成绩进入了一所附近城市的省重点中学,从此我的眼界开始逐渐拓宽了,以后,我用到的电脑越来越高级,从高档八位机苹果电脑,到今天主频以G计,内存以M计的奔四电脑,当年那台主频内存都只能以K计的八位机已是进了历史博物馆。但是这台引领我进入编程领域,并且更驱使我深入钻研汇编语言的电脑,将是我记忆中最珍贵的收藏之一。
在重点中学,学业的压力是很重的,又是住校独立生活,对于体力已较大程度下降、行动已呈现出不少不便的我,平添了几许额外的困难。高中的第一年没有计算机课,我只能在假期回家后才能有机会继续学习编程,也以此来忘记一学期的压力和苦累。高二时,终于盼到了计算机课,也见到了当时相对高档的苹果电脑。而我此时已有的基础令老师吃惊,同学惊服。我加入了计算机兴趣小组,开始在性能远远好于原来那台电脑的苹果机上快乐的编程了。在高二的暑假我和计算机老师一起给学校做个工资管理软件。在学校里的一周时间内,由于宿舍已经锁掉不能住,我就睡在了办公室里。位于郊区的校园,蚊子格外多,咬的我一直睡不着。到了后半夜,我索性爬起来,打开了电脑干活。就这样,我帮着老师写程序、录入数据,并且在即将交货时找出了一个大BUG,又正确地判断出问题根源在内存不足,算是立下了一个小功劳。
由于高考发挥出色(尤其是物理的满分),我进入了北京大学物理系。在大学里,计算机上机条件就更好了。当时苹果的Macintosh刚刚推出,给我们系捐了好多台组建了计算机室。这个计算机室从此就成了我大学四年最常去的地方。一年级的时候有两门计算机课,一门是Fortran语言,一门是Pascal语言。而Pascal语言基本是我们自己学,每到晚上计算机室向我们开放。那是我第一次见识“窗口”形式的操作界面。第二年,计算机室的机器换成了386和Dos系统了,但是上机机时却被限制住了。不能满足的我到处找不喜欢计算机的同学借机时卡,好让我有足够的时间调试自己写的程序。到了第三年,北大招生更多,系计算机室天天爆满,所以上午只要没课,我就会起个大早到机房门口等待开门。在一个寒冷的冬晨,还因此着凉发烧而晕倒在机房门口。就这样,我熟练地掌握了Turbo Pascal和Turbo C++,也学习了好多相关的理论知识。
毕业后,我终于如愿以尝当上了程序员。我被分配的任务,起先是用Delphi做一些文字处理的工具,供编辑部和数据部使用。后来Internet开始兴起,又委派我写为网络版期刊使用的一些CGI程序。工作一直都很顺利,我的眼界与编程水平也在稳步成长。两年后,为了有更好的发展,我离开了我工作的第一家公司。这时,我把求职的阵地移到了网上。不久,就在某网站上看到了一家合资软件企业的招聘启事。尽管启事上说明不接受来访,我仍然勇敢地拿着简历于第二天赶到公司所在的翠宫饭店去求职了。幸运仍然在笼罩着我,这次我直接见到了经理,向他表达了自己对于编程的热爱。我说,我梦想着成为IT业的传奇英雄。也许是这句话感动了他,我成功的通过了面试。在这家公司,我第一次作为一个庞大项目组的一员,感受到了现代化的软件项目管理,接受了团队精神的洗礼。
在北京做了五年的程序员,这时候,我听到了来自深圳的召唤。早在99年,我就在网络上找到了一个位于深圳的名为“中华残疾人服务网”的残疾人网站。一天,我在这个网站的留言本上看到了站长的一席因残疾人网络事业缺少技术支持而发的感慨,不由心有所感,便留言说,愿投入残疾人网络事业,而不计待遇。从此,我的人生翻开了辉煌的一页。那是2002年的10月6日。
起初以为,这个网站会类似于仅仅出于兴趣的个人网站,走进去才真正发现,这是个志存高远的团队。而我真正感觉到了团结一致共创大业的团队精神。在同样因病致残的站长有力领导下,这里基本解决了残疾人在生活会有的种种不便,克服了许多社会上普遍存在的障碍,从而可以让我充分发挥聪明才智,全身心地去攀登IT技术的高峰。
加入网站之后,我完成的第一个任务是改进网站新闻系统,增加图片上传和自动图文排版功能。以前没有做过ASP程序的我在原有的ASP程序的基础上,通过学习和分析源代码,完成了这个任务,同时也掌握了基本的ASP编程技术。然后,我又独立完成了一套社区论坛程序,这套程序受到了全国以至海外残疾朋友的欢迎,成为了许多足不出户的残疾朋友与网友热烈交流的园地。也让我从中看到了自己的价值。后来,因为网站的网管不辞而别,我又接过了网管的重任,从此一面开发程序,一面又管理着我们自己的两台服务器。尽管压力和工作量成倍地增加了,却使我同时掌握了两个领域的技术,而这两方面的技术又互相促进,使我的知识结构更为全面。
由于我们没有外来资金的支持,要维持中华残疾人服务网这个福利公益网站的运转,必须走以网养网的道路,即为企业、政府提供信息化建设服务,以获得经济收入。所以,在给网站开发和升级程序之余,我又开始进行商业网站后台程序的开发。仅网站新闻系统,就在两年内从1.0版升级到了6.0版;还有大量为企业量身定做的功能程序。这些程序在网站原本就强大的前台设计的包装下,受到了市场的欢迎。网站也由此发展壮大。今天中华残疾人服务网在全球排名中稳步上扬,进入了三万以内的行列。
在承接网站建设工程的同时,一些客户也开始找我们开发应用软件。第一个应用软件项目是一家与广东移动通信有业务关系的公司,因为自身没有软件开发能力,便请我们合作为广东移动通信做一个《“测试卡”管理系统》。根据要求,我设计了使用条形码的输入方案,又使用SQL数据库作为局域网联网的后台数据库解决方案。由于是第一次全程的开发与服务,在进行以前没有接触过的安装过程中出现了大量问题,又没有充分做好应对的准备,造成了一些被动局面。但是最终我仍然想出了临时的解决方法,顺利地完成了测试版的交付。遗憾的是由于中介的公司人事调动,这个项目最终没有进行下去。
很快又一个重大考验落在了以我为首的网站开发队伍身上。这是一直从各方面扶持我们的深圳市信息化办公室交给我们的任务。要求是我们收集深圳市所有的网站,以PDF电子书的形式印刷在光盘上。同时要有一个完善的分类搜索系统。时间紧、数据量大,而且不允许出现任何差错。为了证明残疾人团队的开发能力,我和大伙都拼上了。而在送交初稿的前一天晚上,更是全民动员,站长第二天一大早要亲自带上光盘送去,但他也一起在熬夜。那个不眠之夜是我编程生涯中效率最高的一夜。不久后,这个项目终于完成,看着出自我们的头脑和双手的几千张光盘,我知道自己的努力没有白费,而自己的能力也提升到了一个新的境界。这个项目,在那些大公司看来也许是不值一提,可是对于一个核心成员仅五六人、而且全部是残疾人组成的一个项目组,是非常了不起的成就!
2003年12月,世界残疾人职业技能奥林匹克在印度新德里举行,我有幸代表中国的残疾人参加了其中编程项目的比赛。在中国,残疾人的就业问题是一个大问题,因此,这种残疾人的职业技能竞赛尤其有意义。2002年12月,我以广东省冠军的身份取得了2003年在上海参加全国比赛的资格。2003年8月,我在上海凭着多年的编程经验和创新精神,又取得了参加中国残疾人代表团出征印度的资格。遗憾的是,在赛场上,为了追求更好的界面效果,我耽误了一些时间,以至在最后因时间过于紧张,出现了一个致命的失误,将本来有希望得到的奖牌拱手相让。唯一的安慰,就是我的程序界面受到了印度裁判的称赞。
从国外回来,我又打开了.NET的大门,准备带领网站的几个做程序的残疾朋友进入.NET的开发。对未来,我充满了信心,而新的梦想,又开始浮现在我眼前!
现在我的身份,一半是软件工程师,一半是高级程序员。随着网站这个实体的发展,我也许会逐渐成长转型为软件架构师,但是我仍然会梦想着掌握最高的编程技术,仍然愿意承担基础性的编码工作。我相信,保持开放的心态,保持年轻的心态,再老也能做程序。当今的数字化时代给残疾人士尤其是肢残人士带来了新的机会和挑战。现在,纯粹脑力劳动的门槛,因为程序员门槛的大幅度降低而降低,给更多由于社会原因而教育程度相对偏低肢残人士提供了经过培训进入初级程序员行列的机会。但是,这些机会要想转化为现实,还需要更多更广泛的“无障碍”环境的支持。我的第二个梦想,就是梦想中国能够出现更多的“软件工厂”,而这些“工厂”又是向残疾人敞开大门的。
十年编程生涯,历经了风雨坎坷,而程序代码给我插上的翅膀在风雨中更加硬朗。今天,我喜欢在程序代码的世界中自由飞翔。让病魔去禁锢我的身躯吧,我的灵魂仍然在广阔的世界里翱翔„„
“我不是程序员”,杨过在电话那头淡淡的说。杨过是大学同学叫他的外号,因为他的气质和金庸造的杨过最像,连一些感情遭遇都像。
拒绝做程序员,虽然很火
杨过毕业那年软件公司很火,据说在中关村随便一个刚毕业的写C程序的毕业生月薪一不小心会上万。于是乎杨过不少的同学们毕业后纷纷改行编起了程序,跳进了大家现在也没说清楚的IT行业。说改行是因为杨过学的不是计算机专业,只是沾上边。
杨过那时根本不屑于做编程,虽然那时班里就他最喜欢打软件游戏。他觉得去编程不是什么“正经事”,所以毕业后他去了大连一家生产粮油的集团企业,杨过说是“一颗红心投入四化建设”。
由于不想拍马逢迎,杨过彻底打消了“磨豆油”的念头。不过他没有直接留在大连找工作,而是跑到偏远的老家和他青梅竹马的高中同学结婚去了。杨过的感情故事太有传奇色彩,跟金庸那个杨过有一拼。因为新婚的妻子在大连不好找工作,当时他留在家里,找了一个小公司用电脑给人设计零件图。
本来大多数人的工作就是混口饭吃,杨过也不嫌公司小,老老实实过日子吧。可让他接受不了是,公司的老板经常借口让他熟悉工作为名把他当民工使,一气之下杨过回了大连,几个月也是白干,工资没拿到一分钱,因为工资是三个月一发。杨过借口看病从老板那里借了几百块钱,老板也明白怎么回事,就给他了。直到现在,杨过还算是借着这个公司的几百块钱。
还得做程序员
杨过先自己回到大连,到人才市场一看,铺天盖地都是要程序员。“唉,不服气不行,社会发展趋势啊”。电话那头的杨过一直在叹气。
毕竟杨过是重点大学毕业的和计算机相关专业,那时还很吃香。他很快找到一家做寻呼台业务的软件公司。由于以前“没睡决时还看看计算机书”,他上手还挺快。干了一年,他跳到现在的这家公司,工资涨了一大截,在大连还算可以,老婆也接过来了。
杨过老婆刚开始在影楼做过一段,后来生病就没再做。杨过说现在工资也够两个人花的,也不逼她找了,也不好找。
我不是程序员,也不考虑明天
杨过现在的这家公司虽然也不算小,主要是做政府机构的一些单子,但为了生存业务还是比较杂。杨过感觉自己“天天这编一点、那写一点,从来没有好好从头做过一个正式的项目”。“我不是程序员,”他说,“可大家都这个样子。”
公司里只有杨过一个人结婚了,其它都是小伙子。“以前没睡觉还看看书,现在没心思了”,杨过调侃。
由于换了几个工作,杨过的国家基本保险也搞的乱七八糟。“我仔细研究过国家的一些文件,自己掏钱交那些基本保险没有什么用”,杨过现在和老婆都没有基本保险,自己存钱保险。
杨过无奈的笑笑,“也存了一些钱,前一段老婆病了都交给医院了。”
最近,看到论坛一贴子,主题是:我从校园出来的这几年。里面可热闹了,回复次数竟然达1425次,我读了几个钟都没看完,最后只能大概浏览一下了,不过里面大多数都说自己是程序员,并且出来工作都不容易,可谓是一部“千人辛酸史”了,从中多少反映出了中国不少程序员的生活状况,不知道打算做程序员或者现在正入门的程序员朋友看了作何感想?
说实在的,目前在中国的程序员大都过得不容易,而且普遍表现为“青春饭”状态,工作量大,导致对新知识的吸收能力随着年龄增大而降低,到了一定年龄(30后)后因为跟不上时代发展面临淘汰的厄运。虽然如此,但让我觉得欣慰的是的不少程序员或打算做程序员的朋友都表示坚持在程序员的路上走下去,因为我也是一名程序员,而且我对未来充满阳光,充满希望。
我记住了这样一个简单的道理:过去并不代表未来!相信没有人会不知道这个道理吧!大多程序员过去的辛酸大都可以归结于中国软件产业的发展的不成熟,而现在,中国政府制定政策大力扶持软件产业的发展,而且不少国际软件企业也看好中国的软件产业,纷纷把投资向中国倾斜,而且国内也开始有了不少比较成熟的软件企业,当然与国外的一些软件企业相比,还有一大段距离。但它表明中国的软件产业开始向规模化,规范化的方向发展了。
印度在软件方面,在我们看来是成功,印度政府在1991年就制定相关扶持政策,到现在也有10多年了,才取得成功,另一个在软件方面比较成功的亚洲国家——韩国,它也在1998年就制定了相关扶持政策,到现在也取得了一定的成功,用时不过4-5年,那么中国的软件产业呢?要多久才能成熟起来呢?引金山总裁雷军的话,3年左右有所成就,到全面成熟那就要比较长的时候了,但中国软件产业的成熟和前述国家成熟概念不一致:印度是定位于软件外包而取得成功,韩国定位于网络游戏取得一定成就,而中国呢?定位于什么呢?中国的定位是组合式的,不是某一方面,而是全面的。
可以相信:在未来,中国的软件产业无论在产业结构上,还是人才结构上都会具有优势。关于后者,你只要看看中国建立的50多所软件学院就可见一斑了,而且还有很多像印度的NIIT,北大青鸟(中外合资)等著名的国外软件开发教育机构进入中国,把先进成熟的教育模式带入了中国。
但是,以上的教育机构培养目标都不是精英程序员,而是最近大家抄的很热的“高级软件蓝领”,成熟模式中的软件开发团队中需要“金领”,“白领”,再到“蓝领”,而中国软件企业大多是小企业,最需要的是能独挡一面的“金领”,“白领”程序员,并不需要那么多只会Coding的“蓝领”程序员,我想很多混的不那么好的程序员,大概你是属于“蓝领”程序员吧!
任何时代,任何时候,机遇总是垂青于有能耐的人的。但是,即使你现在不是“金领”,或者“白领”程序员,你还不是精英,而仅仅是“蓝领”程序员或者还不是而想成为程序员的你听到这句话,千万不要泄气,要相信你自己是将来的精英,虽然现在的生存环境不是那么好,但是,恰恰有更多机会让培养自己独挡一面的能力,随着中国软件产业的发展,将会需要大量有数年工作经验,有整体系统架构能力的人才,而这些恰恰是任何学校都无法培养的人才,而现在的程序员,只要你们不放弃梦想,不放弃追求,继续努力,你们将成为软件产业的中坚力量!软件人才的佼佼者。
最好,告诉大家一项调查,硅谷的程序员的平均年龄是35岁左右,而且微软公司的核心开心者大都在35岁以上,可以遇见,程序员不在是“青春饭”,也会有“老来悄”的“老资格”了!
冬天来了,春天还会远吗?——谨饬送给所有的中国程序员。
如同一首民歌《三十里铺》所言,路行三十要有个歇脚的地方,人行三十也要喘口气。在IT,特别是程序员这个特殊的职业,流传一种说法:30岁是职场上的一道槛,事业上此时会发生了许多变化。30岁和程序员真有某种特殊的联系吗?程序员到底能不能做到30岁以上呢?
J曾是一名计算机老师,因为厌倦了学校平淡的生活,应聘到一家开发嵌入式系统的公司做底层程序员。刚开始的一两年,凭着一股热情和钻劲儿,投入到如火如荼的开发中,甚至购置了睡袋以备晚上加班。两年中,他掌握了极其专门的硬件参数、规格、开发细节等知识,成为部门的骨干。
逼近30岁的那几个月,他开始感到有些困惑。自己在公司虽然还算受重视,但是技术上翻来覆去就是那几样烂熟于心的东西,公司只需要自己惯性运作,实际不愿支付经验转换的成本;而公司的原始积累还远远未完成,自己仍然要和刚毕业的大学生一起加班,通宵达旦的干。因为缺乏人际交往,家里一直催着的婚姻大事,至今还八字没一撇。很多同时期来的人都打算往管理转了,可是自己对管理缺乏兴趣,还是乐于从事技术工作。下一步怎么办?J想到了辞职,但还没有什么方向。
相比J,M要幸运得多。作为清华计算机本科、中科院研究生毕业的高材生,M在做项目经理时就能够月收入2万,先后换过3家公司,对所谓30岁的说法不以为然。M以前的项目都是用CMM做,项目管理很好,而核心的也就几个人。手下带过的人,当然是刚毕业的最差,因为要获得30岁时的经验,显然需要一个过程。M最开始做程序是用Debug单步跟踪、分析、定位;后来开发图形界面的上层程序,哪怕半年写1万行,也觉得不叫程序;只有到后来转到做底层开发以后,虽然半年只写到2000行,但是却感到了写程序的快乐。M认为30岁以后程序员的体力不是问题,好的程序员不经常熬夜,有也是临时的。M接触过国外、比如印度的一些公司,技术人员们没有固定办公室,用互联网联系;很多人年龄都在35岁以上,技术很熟练,思想敏捷,让人敬佩。
M的职业观也很灵活。刚刚辞职在家,接点活干,非常忙。M有几个同学在外企做程序,日子过得更舒服,但是几年下来,个人、技术均无进展。究其原因,除了像微软研究院、Intel等一些少数外企还做些研发外,其它外企都是挑国外剩下的做,反而是国外一些小公司倒是把最核心技术放在中国来开发。其它像金山这样的一些本土企业应该也不错。做为程序员,机遇、环境、职业(项目)都很重要,它不但直接决定现在的收入水平,更决定未来不同的命运。而程序员这个行业又有极强的主导性,如何做好职业生涯的规划,恰恰是决定乾坤的关键棋子。
程序员圈子里流传过一套书叫做《编程之禅》和《编程之道》。创造力、逻辑、判断、体力、智力、手段都是所谓道的一部分,书中有个比喻,程序员编程时,只有硬盘在响。创造本身是一项神圣的工作,但是创造者的果实却是世俗的。换句话说,年龄的问题本是见仁见智的,但是“30岁的槛”却是世俗的。国内大部分公司还没有好到为程序员做好一生的职业规划的地步,因此路还得自己来走。不要让过度的重复劳动损害了创造力,也不要太迷信技术的力量,而忽略了世俗世界的张力。“三十里铺是一个小村庄,小村庄是我们经过的地方。经过的地方向着遥远的别处,遥远的别处还是三十里铺。”
做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。
我要说的将分成三部分,1.是我面试的具体经过 2.是由面试想到的 3.现今我应该做的。
当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以 在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我 没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net
1.面试经过
大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不多也 达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!
21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后 ,他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成„„(乱码)
1)写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n 哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!于是很快我给出我的解法:
long fn(long n){ long temp=0;int i,flag=1;if(n<=0){ printf(“error: n must > 0);exit(1);} for(i=1;i<=n;i++){ temp=temp+flag*i;flag=(-1)*flag;} return temp;}
搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序 优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序 进行了严格的分析,给出了改进了的方案!
long fn(long n){ long temp=0;int j=1,i=1,flag=1;if(n<=0){ printf(”error: n must > 0);exit(1);} while(j<=n){ temp=temp+i;i=-i;i>0?i++:i--;j++;} return temp;}
虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语 句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了 一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑 着跟我说:“不错,这个程序确实在效率上有了很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩 溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!
long fn(long n){ if(n<=0){ printf(“error: n must > 0);exit(1);} if(0==n%2)return(n/2)*(-1);else return(n/2)*(-1)+n;}
搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为 什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简 直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说 什么了!接着是第二个问题:
他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:
fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在 纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有 说什么,给出了他的思路:
定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环:
for(i=0;i<6;i++){ temp=temp+n/t[flag][i];}
最后得到计算值!呵呵,典型的空间换时间的算法!这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活 的问题,那时的我已经很放松了,因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!
2.由面试想到的
真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋 醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我 肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也 从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所 以我就从我的角度,我的所见所想来谈一些感想:
不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外 的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我 根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱 猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级 4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让 研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学
生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生 们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我 指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1 在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件 业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!
我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东 西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年做为 其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可 玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多 丑陋的函数名比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我 使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就 是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自原代码在 网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什 么问题呢?很值得思考啊!
还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个 计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以 来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语 句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了 一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,错,两个程 序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了 题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不 是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少 程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说 说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!
3.我打算做的!
其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大 概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把 自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序 员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是 我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师!
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文 章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随 意转载!)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基 本原则是可以遵循的。
1.扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果 不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能 写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想 想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到 一些基本算法的时候可能也会束手无策。
2.丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的 方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3.最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理 在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc^2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要 求时再考虑复杂的方案。
4.不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音 乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负 责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5.对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道 答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精 力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6.多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵 感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保 持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重 要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必 再加注释了,如果注释和代码不一致,那就更加糟糕。
8.韧性和毅力。这也许是”高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给 我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数 表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这 一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
第四篇:程序员十年总结
程序员十年总结
展望未来,总结过去
10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们。
1、自己的户口档案、养老保险、医疗保险、住房公积金一定要保管好
由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳来跳去,甚至是城市都换过3个。还好户口没丢掉,其他都已经是乱了,好几个城市里,都有交过三金,甚至是一个程序的2个区里交的都有,那些东西,10年后,会变得很重要。你买房子若有公积金,可以取出来,贷款利率也会比较低一些,有孩子了,还需要上学,生病了还需要医疗保险。
特别是买房子时,你要商业贷款与公积金贷款的利率差别还是很大,有可能会有10万的差距。你平时都注意这些,会给你带来的损失会最小,例如每个月缴纳300元的公积金,公司也缴纳300元,你一个月能存下来600元,一年就是7200元,10年就是72000元。我以前都忽视了这些,到我需要买房子时,公积金里可能只有几千元,10年很快就过去了,结果我没能存下来多少公积金,医疗保险,养老金等更别提了,都已经稀里糊涂了,这些损失10年累加起来,是很庞大的数字,大家要注意,跳槽换工作时也要保护好自身的利益,现在房价很贵,你可能是跟我一样,大山里出来打拼的娃子,家里也没有丰厚的积蓄,只有靠自己拼搏,买房子是人生的一件大事,等你到了10年,才想到这个事情,已经晚了,特别是孩子要上学,上幼儿园等,需要户口啥的都要齐全。
2、不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的更换手机
这方面我的经验教训也是惨痛的。我大概前后购买过5-6个笔记本,以前的都是1万多元一台,最近买的是一台是1万多给女朋友的,自己买了一台是7500元左右,手机大概换过接近10个了,这些钱加起来也足够有10万以上了,你可能一不小心就购买了这些电子产品,但是时间长了,你一回过头来想想,你为什么赚得也不少,但是为什么还是那么穷,是因为你购买这些电子产品花费了过多的金钱了,平时笔记本啥的贵重物品要保护好,我一个同事不小心丢了2台笔记本电脑,接近2万的损失啊,你净赚2万,不是那么容易的,这个窟窿不是开玩笑的,我曾经也被人偷了一个崭新的
笔记本,损失1.5万左右,更糟糕的是最新的代码也丢被偷了。
3、这年代外语、学历、职称、驾驶证还是蛮重要的
想找高薪,外资企业是正确的选择,在同样的打工里,外资企业的收入普遍是高的,我就想不明白,我们的赚钱能力怎么就比不过人家了,社会不断发展,将来可能去外国就像串门一样了,也说不定的,外语好将来的就业机会也会更多更广一些。
学历并不代表啥,但是学历也是敲门砖,例如有300个应聘者,那至少重点本科以下的,统统不看了,因为实在是来不及看了,你再厉害也被挡在机会的门外了,同样有时候你想改行什么的,职称也很重要,最起码评个中级职称,说不定还有机会能进入大学或者政府部门还是有可能性。
若有充裕的时间,应该把驾驶证考了,因为你越到后面越忙与工作家庭,没机会学车了也说不定的,平时也别光顾拼命工作,工作10年后你才发现,原来身边的人都至少硕士学历了,你被社会自动淘汰了,我现在就有这个感觉,虽然我带过很多硕士,他们的就业机会比我还好,经常能进入名牌企业,我也一直进不去。
4、不要谈过多的女朋友,谈女朋友要看准,下手要稳准狠
我谈过2个女朋友,平均每个女朋友身上的开支前后大概会有10万左右,还好我不用谈第3个女朋友了,若投资失误,那也是很残忍的,谈女朋友也会消耗很多时间精力、还会消耗很多金钱,实话的讲的确是这样的,人家女孩子也值钱啊,凭什么就那么轻易的跟你啊,我跟第一个朋友分手时,我的生活至少是倒退了3-4年,一切从零开始,一切从头开始,我劝大家谈女朋友是人生最大的一笔买卖,投资失误会有惨痛的后果,不仅仅是金钱上的损失,更会有精神、心灵上的沉重打击,大家要学会珍惜女朋友,要学会哄好女朋友,让老婆开心每一天,虽然鱼儿上钩了,不用再下鱼饵了,偶尔也别忘记放点米,这个鱼要是脱钩了,那不是开玩笑的。
5、工作不要更换得太过于频繁,选好了行业方向最好别更换太频繁
换工作,换行业方向,就像熊掰苞米一样的道理,有时候是丢了芝麻捡西瓜,有时候是丢了西瓜捡芝麻,这个道理我就不多讲了,大家都应该能明白的。
6、要对身边的人好,要得到老板的信任、同事的认可及支持、珍惜良好的工作环境
有个朋友的QQ名字很有意思,“只爱陌生人”,陌生人是很有意思,但是最关键时刻,还是需要靠非陌生人,你每天跟同事一起生活,要维系好身边的人。你的成功与失败,往往是你身边的30-40个人决定的。你就是世界首富,他身边也是那么不超过100个人的在左右着他的生活,当你工作10年了,没一个老板信任你,没几个要好的同事朋友,那你惨了,你在这个世界上已经是很孤单了,你的收入,其实大多是来自这些身边的朋友给你介绍的生意,不大会网上掉几个馅饼的。
现在你身边的人有可能在不久的将来,给你提供很多好机会。
7、钱很重要,但是生活质量比钱还重要,工作是很重要,但是家人比工作还重要
钱不是万能的,但是没钱是万万不能的。钱赚了,身体夸了,全送给医院了,钱赚了,身心疲惫了,人活着为了啥?不就为了开开心心生活嘛?工作重要,但是失去了家人的爱,失去了女朋友,失去了老婆孩子,那这个工作有啥用了?工作很容易就换了,家人是换不了的,老婆不是想换就换的,孩子不是想换就换的,连自己的家庭都不负责的人,怎么可能对公司负责呢?我一直是这个观念,来面试时觉得工作更重要的,我们一般不录取的,那太假了,或者
太不懂事了。
8、工作累了,也别太贪玩,有时候还是需要多想想如何才能赚钱
时间一晃就过去了,工作累了是可以适当放松,但是别太贪玩,10年很容易就过去了,10年后你要买房子,要娶老婆,要买车子,要生娃娃,身体也会变得脆弱一些,需要良好的生活习惯,也经不起通宵了,通宵一次,你要低迷好几天才能缓过劲儿来,跟20刚出头完全不一样了,用钱的地方多了去了,父母也会变得更老一些,可能也需要你的照顾,整个家子都指望你赚钱,别到了这个时候,你才意识到赚钱是那么的重要,更何况现在城市的房价,动不动就是100万,加上按揭的利息,你很可能需要支付150万。还可能需要装修,买车子。可能你身上的压力是200万。别觉得谈钱就俗,你要学会赚钱,要有个需要赚钱的良好意识,当然你出身富裕家庭,就不用考虑这些因素了。
9、每天一点点进步,每月一点点积累,要敬业要爱业,我们给别人提供的也是服务
总有一天,你也会有累的时候,你也会有老的时候,这时候,你要靠啥呢?就要靠你平时的积累,你10年的积累,可以打倒很多
竞争对手,他们再厉害,再怎么样,也很难抵得过你10年的积累,特别是后面5-10年的积累,成果会很明显,前面的1-5年,算是做软件的入门吧,除非你有高人指点,那可能2-3年就可以修成正果,软件在将来还是会值钱的,以为生活会越来越智能化,越来越数字化,软件的需求还是很有前途,最起码未来的10-20年里不用太担心失业问题了。
10、对程序员来讲,开发思想、架构、代码就是财富,别老丢弃你的劳动成果,要学会保护你的劳动成果
我大概7-8年前的代码都在手上,经常改进来改进去,维护来维护去,在一定的程度上,让我生活轻松了不少,因为我不用什么都从头来过,我只要痛苦一次,以后就要反复重复利用,软件的价值在于重复利用,而不是每个东西,都从头开发,那永远也是辛苦的程序员,这个生活质量就别提了,不管自己的代码丑还是拿不出手,要学会精心维护,每天改进一点点,每个月一个小进步,每年一个大进步,多年的积累是宝贵的,这个早晚也会给你带来丰厚的收益。
11、当程序员要防止原地踏步,不是工作年限长了,经验就丰富了,能力就强了,年纪越大工作越难找。
我有一个朋友跟我开玩笑,工作5年的人,可能能力差距会很大,为什么呢?因为第一年他们干的事情都是一样的,都写程序了,2个人可能由于价值观不一样,5年后差距会很大,甚至是大到无法追赶的程度,为啥?因为还有机会的因素在里面,有的人干了5年,还是在原地踏步,天天只会写那些添加、删除、修改的代码。那你得注意了,需要不断的提高自己,才是硬道理。例如你会SQLServer,那要试着学习Oracle,你是做C/S的,那得需要提高到B/S的,你是做单机软件的,那得需要提高到网络软件,你只关注自己的工作的,需要学会管理,关心他人的工作。你是当程序员的,要试着提高当项目经理、部门经理,公司的总监等等,人有野心有目标才会不断进步,最俗的为了多赚钱,提高工作职位工作岗位,工作单位,也是可以理解的。
年纪越大工作越难找,例如3-4千的工作是随便找找,玩一样,但是你30过后,最起码要找月薪上1万的工作,这样的工作是机会也少,一般小公司也给不起,还得找个好公司才可以,好公司又不是天天招聘人,天天缺好的工作岗位,说不好听点儿,小公司的老板才赚多少啊?他来钱也很不容易的,小池塘就不好容得下大鲨鱼了。
12、当创业的收入比打工还少时,那就别创业,要找比自己能力强的人创业,你不会吃亏。
创业的收入,比打工还少,那就是瞎扯蛋,恶搞。创业的真正意思并不是要你去吃苦没钱赚,那是忽悠无知的人的。当你创业时的收入,比打工还多,那你可以考虑创业,没有工资什么的,股份啥的,都是瞎扯蛋。
不要跟自己能力还弱的人一起创业,那损失最大的,很可能就是你,要创业,也要找比自己强的人一起创业,最起码赚不到钱,还能学到不少。不会有过多的损失。别热血一沸腾就创业了,创业了,也别烧自己的钱,家人的钱,那是很不抗烧的,没几下几十万就烧干了。
其实打工,也是创业的开始,每个月都能拿到钱,还可以学到知识,什么公司的股份都是空话,没几个小公司能成功,开起来了也走不了3年就分家了,都忽悠小孩子玩的,除非真的有科技含量或者是客户资源的,否则股份是一文钱不值的,就算创业每个月也按时拿工资才是硬道理。
13、未来的生活节奏会更快,生活压力会更大,竞争会更激烈,社会服务体系会更完善。
在未来,我们享受良好的服务的!
第五篇:一个老程序员对后辈们的话
这是一篇我很早以前在一个论坛上看到的文章,感觉很不错现在与大家共享,由于忘记了文章的链接,所以无法贴出原文链接了,望原作者原谅•••••,原文如下:
一个老程序员和学生对作为PHP程序员的你们说的话
我,一个老程序员,也是一个学生,把玩过甚多语言,大多不精。我既非名牌学校,也不是高学历,仅代表一部分比较蛋疼的人。
接触PHP也是很早了,从04年的OFSTAR开始的,到现在六年了,期间也接触过不少的语言。从脚本JS到底层的C语言。坦诚的说,我不是个高手,但是我相信自己比大多数人接触的知识面要宽广,深刻些吧。
同时我也是一名学生,从东南大学到西电,对计算机的爱好一波三折。我这里想说几个问题:
1.语言,语法重要吗?
不重要。重要的编程的基本思想。语言是不相通的,相通的是思想。PHP作为一门WEB语言,很多童鞋太过于关注其语法,总是天天翻函数,看语法,是的,他们的PHP
能力提升了,可如果叫他们转行做PY或者C,甚至是NET,那就是要了他们的命。为什么呢?就是因为他们单纯地接触PHP,而PHP只是一门脚本语言,抹杀了许多算法和数据结构的东西,而重点强调的是函数。结果让大部分童鞋专注于语法层面,而编程思想得不到提高,很难转行。
这就是JAVA转PHP很容易,而PHP转JAVA很难的原因。这也是有四五年经验的PHPER仍然感觉自己水平提升不咋地的原因。
他们精通PHP,但除此之外,啥都不懂。这够了吗?不够。
我发现论坛里不少人总喜欢钻研函数,发现一个函数好用就沾沾自喜好久,而不知道自己已经落后高级程序员很大一截了。
斐波那契数列,如果用递归解答,100分的话,我给0分。
这说明这个人没有任何编程思想,不会理清思路,不会推理,不适合搞计算机。就和约瑟夫环一样,一旦逻辑稍微复杂,有人就头晕了。
至少,高中数学不及格。
我测试新人,必然用约瑟夫环考察潜力和逻辑,一旦做不出来,直接全卷0分,对不起。
2.算法和数据结构在WEB开发中重要吗?
很重要。很多人总是说WEB中算法不重要,而不肯钻研这一块。才会出现一个树形结构难倒80%的PHPER,在他们眼里,一个无限分类就是算法的最高境界。一个递归难倒一半PHP新手,一个很简单的斐波那契数列难倒80%的PHPER(他们不知道循环解法才是最有效的办法,而这在任何语言里面都是经典例子,而绝大部分PHPER不知道,稍微聪明点的会用递归),不知道其他语言的程序员,特别是JAVAER会怎么想的。算法无论在什么中都是重要的。现在论坛里很多人对算法都是一窍不通,还是看看吧,绝对错不了。
3。学历重不重要?
重要。学历就是你娘,有个好娘家,不愁嫁,至少也轻松些。我发现有许多人,抱着“越穷越光荣”的心态,喜欢嘲笑高学历的人才(研究僧,烟酒生。),正如论坛里那篇北大博士生会不会PHP的那篇文章一样的心态。让我想起来,没有文化真可怕这句话。
人家博士的知识深度和学习能力,是你无法匹及的,你只能仰望的。人家玩的是编译器。
所以,虚心点,你有你的工作经验,人家有人家的项目经验,不会比你差。出名的那些人有几个不是高学历。李开复,美国博士,联想总裁,军校。
尊重知识。
4.教材重不重要?
看什么教材了。有的人喜欢笑话学生看死书。我想告诉你,写教科书的人都是博士,教授,能看懂书的人,很牛叉。当然了,现在某些吹牛大王出的什么XX开发王啦,XXX开发宝典的就无法相提并论了,纯粹是赚版费的,和正规的教材不是一个档次。
5.山寨很可耻吗?
不可耻。PHP被看做最草根的语言,没什么可耻的。PY不也是草根吗?但是为什么PY能得到IT界的认可,而PHP不能呢?
很多综合性的IT网站,PHP只是很小的一个版块,甚至没有。
出身不好不可怕,怕的就是不争气。
6。我有必要学习其他语言吗?
有!PHP是一门优点和缺点特别突出的语言,所以他并不适合作为一门入门型的语言来学习,它也不是一门综合性极好的语言。这就是为什么现在大学的教材选择C语言,FORTRAN,JAVA而绝对不会选择PHP作为教材的原因。学习了其他语言,开阔了自己的视野,你才会发现自己是多么渺小,才会学会谦虚。
7。我有必要进培训机构吗?
没必要。培训机构的实力不敢恭维,快餐教育只会培养出一个代码工人,而不是程序员。综合我上面的观点,你应该知道咋做了。
建议:
1.不要停止学习。
2.不要停止思考。
3.不要停止进步。
4.不要浮躁狂妄(很多搞技术的人容易陷入其中)
5.踏实。我老看到很多人对C语言一窍不通就开始讨论或询问PHP的变量机制。我不了解这个对你有啥用,就算你一知半解了,除了显耀外,还能怎样。
我们必须知道学习是一个过程。快餐吃了会营养不良的。
同是穷二代,这就是为什么有人觉得生活很美好,有人天天骂娘;
有人感谢教育,有人天天痛骂学校的原因。
为什么名牌大学的学生感谢新学校给了他一分工作,而下流大学的对学校痛骂不已; 因为有人靠知识改变了命运,有人没有。
什么算法数据结构和语言一点关系也没有,说明作者也就半桶水出来气气这帮phper壮大一下.net的声势...经验!=技术
你认为没关系,那是你内功和层次不够。功夫的修炼有一个层次的。
简单的,比如说对于一个数组排序,只有1000个元素的数组排序和10亿个元素的数组的排序一样吗?
求10000以内的素数和100亿以内的素数一样吗?
你不要跟我说他们的算法是一样的,也不要跟我说排序么不就是SORT函数么。更不要说后面的情况你遇不到。(你网站规模一大,必须考虑这个东西。底层操作无非就是数字运算)
你更不要跟我说我一个MEMCACHE就就解决了。
这就是大公司比如百度和小公司的面试题为什么很大区别,为什么大公司愿意招没有经验的应届生也不肯招有经验没技术的人,更愿意招科班出身的人,也是为什么一个应届生的薪水能超过几年工作经验的人。原因不是学历,而是他们有一个系统的学习,从算法到编译原理,从数据结构到C语言,从软件工程到离散数学,从应筹学到微积分。这个系统的学习体制保证了他们的快速上手和深入理解能力。你有三年工作经验,但对于同一个陌生的东西,你可能要半年,而他只要两个月。故,我强调一个系统的学习,做 programmer而不是coder。
也是你进不了大公司,做不了核心的原因。你说算法和WEB无关,那你是不是认为斐波那契数列就仅仅是玩游戏的,求老兔子生小兔子的?你是否知道余弦定理在搜索中的应用很广,而不是高中生拿来算算三角形夹角那样的简单?
记住:靠一门语言可以吃10年饭,靠数学可以吃1000年。