经验分享(三)一个程序员的体会

来源:互联网 发布:新星光电导航端口 编辑:程序博客网 时间:2024/05/16 16:58

昨天,叔叔给我介绍了一份工作,搞推销,完成任务给1000元,完不成任务给500元。我又一次拒绝了,爸爸问我为什么不干,我说不想从事这个行业。这次爸爸终于发怒了,真说我“不要脸”,还说了好多难听的话。我知道,矛盾终于爆发了......

这是理想和现实的一次碰撞!我不怨爸爸,只怪我自己不争气,这是我第n次拒绝工作了,这之前有亲戚、朋友、同学给我介绍工作,都被我婉言谢绝了,不是我不想工作,而是我想从事自己喜欢的行业**it业,我想成为一名真正的程序员!我不敢想像做一份你不喜欢的工作,会有多少的工作热情,会给公司带来多大的经济效益?整日从事这样一份工作,是一种怎样的折磨?只会带来思想上的麻木,意志上的消磨,时间长了,你会越来越离不开目前的工作,虽然你不喜欢,但是已经习惯了。我不想这样!

 

但是现实是残酷的!我必须工作挣钱养家,首先要养活自己,我不能再靠父母养活,他们养活我20多年已经不容易了,该是我回报他们的时候了!可是理想和现实总是存在差距,下面说说我的经历:

我是一所三流高校一名本科生,学的是经济学专业,今年刚刚毕业。虽然我的毕业论文和答辩都是优,但是我却对我的专业好无兴趣,整个大学四年,我面对的只是高深的经济学理论和与现实社会严重脱节的教材。我们的专业是大而全的专业,相关专业都有所涉猎,但是都不精通。学院说开始要把我们往经济学理论研究方向培养,可又是谈何容易?师资力量太薄弱,最后行不通,后来又要往经济管理方向发展,可是管理要是没有与实践相结合,还不是空中楼阁。我们学院与企业之间基本没有交流,实习机会更是没有,都是自己在外面找,可是真正能找到称心如意的是少之又少,大部分都在外面搞推销。毕业了,与学市场营销的同学相比,我们没有竞争力;与会计学专业的同学相比,我们也没有竞争力;而与学国际贸易的同学相比,我们更没有竞争力!连我们老师都说:“你们是什么的会,又什么都不会。”一语道破我们专业目前面临的窘境。老师又号召我们考研,可是考研又谈何容易?又是万人挤独木桥啊!

 

大学我们计算机课只学了两本书,一本是《计算机应用基础》,一本是《foxpro for windows》,两本都是我们学校自己老师出的,都是为了赚钱,书是盗版,内容更是拼准,质量可以想像。所以当时我对计算机并没有多少兴趣,对编程更是一窍不通!只是上大学前专门学了指法,大一时想学打字,当时市面流行五笔输入法

(现在也是),而我并没有跟风学五笔,而是自学了两笔输入法,现在看来是正确的,两笔输入采用音形结合的方法,摒弃了五笔不符合汉字书写规则和拼音重码太高的缺陷,而且有非常易学,极力向大家推荐。掌握了方法以后,我就天天在机房练习打字,后来我打字就非常快了,一分钟可以打100多个字,同学们都很羡慕我,

在我们系也封有名气。一个打字不是很快的人都让同学羡慕甚至崇拜,可以想像我们班的同学计算机水平多么低了. 我当时也很满足,认为打字快计算机水平就算高了,而不知道打字是最基本的操作,在整个计算机体系中好像是大海里的一滴水。正因为这种认识,使我忽视了计算机其他知识的学习,当时只知道foxpro与数据库有联系,其他的就什么也不知道了。

 

    真正让我接触到编程是在大三下学期,因为知道我们专业就业形势不容乐观,有种紧迫感了,所以我每个礼拜都会买《就业时报》,在某一期报纸上无意中看到****软件工程师的招生广告(后来知道每期都有),广告作得很好,我当时就觉得就业压力这么大,能多学一门技能,就多了一分竞争力。于是我就给他们打了电话,问他们学这个要多少钱,接线的封妆很会说话,没有明说,而是直接告诉我后天上午来听他们免费的宣讲会。当时我就觉得价格不菲,因为用“**”牌子是要增加成本的。我还是去听了他们的宣讲会,说心理话,****好,不如****广告做的好,****广告做得好不如****宣讲会做得好。会到结束才说了具体的学费,要比我预想的贵很多,一共分二个学年,三个阶段学习,第一学年课分两个阶段学习,第二学年一个阶段。全部下来价格吓人!(价格我就不说了,不少人知道)当时我是这么想的,与其说毕业以后就失业,还不如学一门技能,以后也好找工作,于是我就报名了。在那个时候,我对编程是一无所知,更谈不上兴趣,只是为了以后能比较顺利的就业罢了。

由于没有基础(只会打字),我决定从头学起,参加一学期的班,给我们培训的是一位我看不出年龄的女老师,后来知道是从**毕业的。我们一学期的课主要有《windows 2000操作系统》,《c语言基础》,vb基础》,access》,《html和网页设计基础》。我当时什么也不懂就跟着学,先是win2000,比较简单(教材简单),后来是C语言,只讲了一个多月就结束了,我上的是周末班,那时我还以为讲得慢呢,哪知道C语言的地位和重要性,岂是几天就可以学会?接着是VB,说真的,真正让我对编程产生兴趣的是VB,我一接触VB就对VB6这种所见既所得的编程环境产生了浓厚的兴趣,当时觉得这才是真正的编程,C语言没用。我想大多数人也是从VB开始学编程的吧。因为我们的教材写得太空洞,所以我就又买了一本VB入门书,我觉得好多知识老师都不成讲过,有一次我问老师如何用VB实现一个功能时,她竟说无法实现,而没有说她不会实现,后来我翻书找到了答案,从此我对老师的权威产生了怀疑。那时的我整天学习使用VB,连坐车都在看VB书,用VB做了很多“芝麻”程序,自己做得最大的一个就是24点,用了极其笨的算法,可算完成了,还有很多BUG。我们一学期的课程根本就没有讲数据结构和算法这些知识,我们也认为那是计算机专业开的垃圾课程,毫无意义,现在想起来真是大错特错了!一学期结束时,老师领着我们用VB做了一个信用卡程序,很简单,算是毕业设计。考试是分笔试和机试,超简单,笔试事先给你材料,回家去背吧,80%是原题,机试考的是C语言,超简单,你要是还是不会,就把别人的COPY过来就行了,再不会,还有老师帮忙呢。当我手捧着《初级程序员》证书(国家劳动保障部发的,与国家信息部发的差十万八千里)和《****》证书时,我觉得我就是程序员了(现在想起来,当时真是幼稚!)这也促使我参加二学期的班,于是我在****“越陷越深了”。

第二学期的课没有换老师,而教材却是从2.0版本换成了3.0版本了,可能是上个版本太说不过去了吧。3.0版本也没有太多改变。主要课程有:C++,sqlserver,VBA,java,asp. 哈哈,真是大而全,有点像我们的专业了。当时却不这样认为。于是跟着学,先学c++,教材只有170多页,而理论部分只有110页,后面是上机部分,和一本练习册的厚度差不多,由于我们C语言基础打得不好,所以学C++普遍感到吃力,就这样不到一个月的时间,C++语言就结束了。接着就是sql server, VBA,我记得在讲VBA的时候,我们就有很多人听不懂了,特别是COM组件,我现在也是知其然,而不知其所以然。而老师看我们不懂,也没有耐心了,慢慢地我发现老师的讲课态度发生了变化,只是讲她的课,而不注重和我们的沟通,我们上机时,她也是不闻不问,而是躲在一旁啃JAVA。后来才知道她辞职不干转行了。接着开始学JAVA,给我们带课的是一位男老师,课讲得还行,就是张扬的很,让人觉得不舒服。我觉得当时上这门课的时候,来了很多别的班的同学一起听,把本来就不宽敞的教授都坐满了,不知道是觉得JAVA重要还是因为已经学得吃力了,我想是后者吧。

考试仍然很容易过,可是当二学期结束时,我发现我没有学到什么实际的东西,我甚至不会用一门语言写一个大一点的程序,学的语言实在是太多了而自己的编程思想还没有建立。在是否继续学习二学年这个问题上,我犹豫了很久,是坚持还是放弃?我想对每个深陷其中的人来说,都是很难抉择的,最后我还是选择了坚持,很多人选择了放弃,我记得刚开始和我一起学第一学期的人现在没剩下几个了,大部分人都选择做了其他行业,和编程彻底绝缘了。我真的不想就这么放弃,毕竟我付出了很多精力和金钱,而且我非常热爱这个行业,真的想用毕生的精力从事这个行业的工作,程序设计对我来说一直很神秘,像一座待开发的宝矿,我一直想征服它!

当我怀揣着第二学年的学费前往****的路上,我的心情异常复杂,这可是我父母的血汗钱呀,我现在没有挣钱回报我的父母,而是管父母要钱,这个滋味是没有经历过的人很难体会的。还有一个问题就是钱是不是白花?我能不能实现自己的理想?为了自己的理想“不择手段”叫不叫自私?第二学年的班已经开了,我也已经毕业了,我们系的就业率和前几届的一样,没有什么改观,而且有持续走低的趋势,我的好多同学都没有找到正式工作,一部分人在作推销,辛苦不说而且工资少得可冷,也许能锻炼人吧,很多人干两天就不干了。还有一部分人在家观望,还有几个有考研的打算。目前的状况使我的要求也在降低,我学编程不求能挣多少钱(以前有这种想法),现在只是想能够自食其力,作自己喜欢做的工作,也就心满意足了. 可是我现在学得却越来觉得吃力了,二学年课程有oracle,j2ee,.net,c#,asp.net等,目前在讲j2ee, 讲得很快,预计05年底就能结业,我不知道到时候能不能找到一份工作,可是依我目前的知识结构,很难有竞争力。究竟是哪儿出了问题呢?

 

论智力,我觉得我不比别人差,我五岁学下棋,六岁没上封学就参加了区里的封学生组比赛并且拿到了名次,接着我就开始了拜师学艺,初中蝉联了三届本市中学生比赛的冠军,一次省里的冠军,95年参加全国“**杯”少年组的比赛并一举夺魁!大封比赛参加10多次,冠军如探囊取物。说真的,当时差一点就走这条路,因为当时我和省里的一些大师都下过,觉得并不是不可战胜.但是后来由于中国象棋缺乏国际竞争力等诸多原因,发展状况远没有围棋、国际象棋发展好,即使是一些象棋大师每日还要算计着过日子,这不能不说是整个象棋界的悲哀!关于中国象棋的发展和象棋理论的专业探讨,我有一肚子话要说,但是在这里不过多阐述,因为这里毕竟不是谈论象棋的地方,还有人不会下棋呢。不过后面我要对象棋和编程做

一番比较,谈我一点的肤浅看法,如果你有兴趣,请耐心往下看。当我决定把精力放在学业上时,已经是高三了,面临高考,由于之前下棋付出太多时间和精力,落下了很多对基础课程的学习,所以我必须迎头赶上,凭着一股儿冲劲,我来到了**,虽然不是名校,却是正规本科院校,一直到现在。所以说论智力,我不比别人差,可为什么我学得会越来越吃力呢?

 

我开始反复思考这个问题,去这个网站的论坛上看一些高手总结的一些经验教训的质子,去csdn看高手是怎么从初学者变成人人尊敬的高手的。我看了大量这样的质子,然后结合自己实际情况进行总结,才发现了问题所在!基础太薄弱!!!正是这个原因使我现在学习非常吃力。看看我这一年学的都是一些流行的开发工具,比如vc,vb,dreamweaver,jbuilder,oracle等等,而我却真正的忽视了对数据结构和算法、windows程序设计、汇编、编译原理、操作系统等等这些基础课程的学习,一上来就学c++,java,vba,面向过程编程基础不牢固,直接学面向对象,试想一个在大学上只学了两本书的人直接学这些流行的开发工具,结果会怎么样?而且是每门课

学的时间都不长,这个月dreamweaver,下个月就jbuilder,再下个月就oracle了,试想要精通asp,java,数据库原理需要多长时间?我们是刚刚学点皮毛就学这些东西,岂不是在沙地上盖高楼,早晚有一天会挎掉的,而且盖得越高,损失也越惨重!而我当初并没有意识到对基础理论学习的重要性,现在真是后悔。

 

对此****应该负有主要责任,他们的宣传广告上面招生的对象是只具有高中以上学历,而其他的一些培训机构比如东软,清华都要求计算机本科专业或相关专业,说明这些机构已经懂得基础的重要性。而且****在授课时老师也并没有引导学生重视基础理论的学习,盲目追赶最先进的东西。应该承认****的课程体系囊括了世界最流行的开发工具,可以说是面面俱到,但是在学习这些东西之前,必须有很扎实的基础,如果没有,即使学会了,也是知其然而不知其所有然,在此引用不知哪位网友的一句话:“与其说把流行的东西握在手中,还不如把过时的技术记在心里,"可见基础的重要性。有很多零基础的人慕名来到****,希望摆脱自己的命运,可是学了一学期以后就再也学不下去了,原因何在,基础不行,不过也有一些对计算机极有天赋者,这应另当别论。

有时候我就想如果当初我在学习****的时候,如果能在家里恶补理论知识会不会更好呢?可是当初我很难意识到这一点,而且那时学校的课很重,一本《西方经济学》就有点压得我喘不过气来,除了上课,我已经没有时间在学别的东西了。况且当时我们培训的同学普遍流行着一种说法,说“我们毕业了将比计算机专业的更有竞争力!”当初我也报有这种想法,现在看起来真是笑话,先看看学习时间,他们学四年,我们不到两年(快的一年半),再看看计算机专业的课程体系,你就知道了,其中大部分是对基础理论的学习,学习时间宽松,如果能抓紧时间学习,将能打下一个良好的基础,为以后学习流行开发工具铺平了道路。诚然,现在一些高校的计算机专业的教材有些比较沉旧,可是一些原理上的东西并不是一两年就发展起来的,是大师们经过多年的研究总结出来的,深度掌握,必然对以后学习大有裨益!还有一种说法是“我们毕业了能直接上手为企业打来效益,而那些计算机专业毕业的学生根本不会做什么,所以我们更有竞争力!”初听起来,似乎很有道理,可是如果那些计算机毕业的学生参加企业培训呢?新出来一种工具,同时学习,谁理解得更透彻,谁学习得更快呢?

 

其实学习象棋和学习编程是一个道理。

先说象棋,会下棋的人都知道,下棋分开、中、残局三个阶段,要想学棋并想成为一名高手的话,必须先出残局开始学起,然后是中局,最后是开局。从开局学起的人很难有大的发展。这是我的切身体会,我记得我封时候学棋的时候,几乎没看过书,都是实战实战再实战,从实战中汲取营养,总结经验教训,等我到达一定阶段时,我爸爸就每天给我摆棋式,先练杀法,每天几个,当时有一本很经典的书《象棋杀着大全》,有400多页吧,我爸就天天给我摆,让我破解,不看到结果不许动手,最后都把这本书都翻烂了(当然不是我弄的),现在真的应该感谢老爸,我虽然现在在象棋方面没有什么成就(我爸一直希望我成为一名象棋大师),但也算是一盘好棋吧。然后开始摆残局,接着是中局。对象棋有研究的人会发现,中残局功夫是最难练的,也是最能看出一个人象棋水平的高低。正是我爸一盘一盘的摆,才练就了我扎实的中残局功底,可以说我的基本功都是我爸一盘一盘摆出来的(再次感谢老爸!),等我到了一定水平后,才自己开始打谱学习开局,看别人的对局选,我发现我对开局的理解比那些上来就学习开局的人更透彻,记得也更牢,而且还能指出其中的错误并且提出自己的观点,有时我看完一本开局书,书上会记很多我自己的体会,试想如果没有良好的基本功的话,是不可能做到这些的。

 

再说编程,如果把学编程也分成三个阶段的话,那么残局就是基础,包括操作系统、汇编基础、离散数学、编译原理、计算机图形学等等,而中局就是c语言(不是特定的)、数据结构和算法等等、而开局就是目前的各种的流行开发工具吧,包括vc,vb,delphi,jbuilder,dreamweaver等等,以上三个阶段分的不一定正确,不过大概是这个意思吧。如果"中残局"没有打好,只学"开局"是永远也成为不了高手的,而且"开局"总是随着时代发展而改变,不断有新的开发工具出现,落后的"开局"将永远被淘汰,而相对来说"中残局"是不会有太大变化的。而"中残局""中残局功夫"两者又不太一样",我个人认为"中残局功夫"指的是编程思想,一个好的编程思想不是一朝一夕可以练成了。如果掌握了打下了扎实的"中残局"基础,练就了一身过硬的"中残局功夫",那么在学开局就相当容易了,网上经常有这样的评论,比如:"如果学c一年,那么学vb之需一个月,如果学vb一年,再学c时间可能超过一个月""C++三年,再学JAVA只需一个月"等等是同一个道理。

 

痛定思痛以后,我觉得我要想在编程方面往更高更深的地方发展,必须打好基础,苦练内功,为此我打算从C语言开始学起,然后是数据结构和算法*汇编*操作系统原理*windows程序设计*C++程序设计,之后要看很多国外经典书,《C++ primer》,《C++编程思想》等等,然后再选一个合适的开发工具,虽然会很慢,但我会踏踏实实的学习,再也不盲目跟风了。现在我C语言只学了两天,课我还得继续上,毕竟钱已经交了,我想等我基础打牢了,以前有些课还得重听,有基础了可能会悟出一些新的东西。****这点好,课可以循环听。

回想我一年的学习,现在看来才刚刚起步,不免有些惭愧。正是走了这些弯路,才使我认识到基础的重要性。虽然以后还要有很长的路要走,但是我无缘无悔,因为我热爱这个行业。我相信我重新选择学习的方向是正确的,我打算用十年的时间来掌握这门技术,我今年23岁,到我33岁时,我想我还会写一篇文章来回忆我十年的经历,并总结出的经验和教训,供后来者借鉴。

 

顺便说一下我的女朋友,她和我是一个学校毕业的,学外语的,英语八级,现在毕业工作了,一个月3000元。她现在对我很失望,说不再向以前一样喜欢我,欣赏我了,这给我很大打击!但是作为男人,我理解她,现在我的压力很大,我想我会顶住压力,坚持走自己的路的,希望大家能够支持我!

最后我想对初学者说的是,不要盲目跟风,要重视基础的学习,否则只会竹篮打水一场空。

 

如果您能耐心的把以上看完,我就很感谢了;如果您还能提出宝贵的意见和建议,我将感恩不尽!