字体大小: 正文
[程序人生]一个老程序员十年生涯总结(转载)3(2009-10-29 08:29:41)
1999年9月9日上午9点,在这个最多9字的时刻,我到学校报道来了,放下行李,我坐在分配给上,心中终于
  
  踏实下来。
  
   现在,我在北京终于有一张属于我的床了,一张真正属于我的床了,终于有个地方可以让我安稳地睡觉了。
  
  没有这段经历,我怎么体验到“安居乐业”这一个词的真实含义!个人如此,国家要做到,中国要做到,更难

作者:xichy   回复日期:2005-10-12 8:23:00 8#
  2.编程生涯
  
   读研两年半的时间,我四处打工,这两年半我至少在七八家公司做过,编了十几万行代码,为自己赚了一台
  
  电脑,两部手机(丢了一部),还有读研期间的所有费用,实现了我的目标:没向家里要一分钱。我水平不高
  
  ,但在打工过程中,发现许多中国软件公司的水平更菜!
  
   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项目。给我真正震撼的是《设计模
  
  式》这本书,看了才知道,原来好软件是这么设计出来的!在此,我强烈推荐所有有一定编程经验的程序员一
  
  定要看这本书!
  
   一边学习理论,一边可没忘记我没经济来源,于是又四处打工,接一些小项目与小模块来赚些生活费,国内
  
  一家横跨家电与软件的著名公司是我打工期间去过的最大的公司。但无论什么公司,都给我一种感觉——烂!
  
  公司中充满了对员工的剥削与不尊重,对软件开发这一事物的错误认识,管理混乱。
  
   我没机会去外企,技术水平不到,别人不要我 L,但我所见到的软件公司,我敢说没一家能做出世界一流的
  
  软件!
  
   我上的研究生课程也让我失望,整个就是本科教育的再版。经过高考与考研两次重大考试,我对考试已是深
  
  恶痛绝,但读研期间仍要考试,而且是闭卷!我就不知道我去背那些条文对我的研究与学习有何帮助?2000年7
  
  月当我考完最后一门,终于大松一口气,我终于摆脱了考试的压迫,可以在剩余的一年半中真正搜索我渴望已
  
  久的软件技术了。这年,我29岁。
  
   悲哀吗?一个中国的程序员要到29岁才可以真正自由地学习想学的东西!
  
   我开始研究面向对象理论,看了大量的书,每天都在实验室学习到深夜12点,天天上网,CSDN成了我最常去
  
  的网站。
  
   随着我对软件技术的了解越多,就越深刻地感到国内与国外技术水平的差异是如此的巨大,巨大得甚至有让
  
  人绝望的感觉。同时,在北京这个中国软件人才最集中的地方,我也见到了许多牛人,一个清华的本科学生,
  
  做程序员可以拿到一个月12000元的工资,一个北大的计算机系研究生,一毕业就到外企,一个月一万多收入,
  
  每年发16个月工资!干了两年就开了自己的公司。我看到了一个北方交大的本科生作品,在半年的业余时间里
  
  ,用Delphi写了十几万行代码,他甚至在代码中嵌入汇编,自行编写数据存取引擎读写Foxpro,速度超快!软
  
  件中有一个计算公式解析模块,他用编译原理理论居然做了一个小型的公式解析器,就象C++编译器检查C++程
  
  序一样,不仅可以判断是否公式正确,而且给出的出错信息还相当准确!其基本功之扎实,水平之高让我望尘
  
  莫及!中国优秀的人才真还是不少的!在精英集聚的北京,面对着博大精深的软件科学,我深感自身的渺小。
  
   但我毕竟是靠自己奋斗出来的,我并不自卑,这世界需要牛人,同样需要大批合格的劳动者,我成为不了牛
  
  人,但我作一名程序员是合格的。
  
  时间过得飞快,一年半根本就不算时间,马上就要毕业了,学习的成绩如何,要到社会上去竞争了,让社会考
  
  场来决定你是否及格。

作者:xichy   回复日期:2005-10-12 8:25:00 9#
  3.毕业求职
  
   98级的研究生是IT业最后辉煌的回光反照。当时,各大公司都发了疯似的要人,象华为,当时是来者不拒。
  
  计算机专业的研究生是一抢而光,本科生也供不应求。2001年毕业的我的师兄师姐们,平均每个人手头都至少
  
  有两三个Offer,谈的工资没有低于每月6000的,许多人去了外企,工资在8000~10000每月的也有。真是毕业生
  
  的黄金时间。
  
   但好景不常在,911事件我看来好象成了分水岭,911之后,整个IT业急刹车,就业形势急转直下,各大公司
  
  都在消化去年吃得过饱的胃口,我形容是大家都吃坏了胃,再也不可能有我师兄师姐们的风光了。虽然时间相
  
  隔仅大半年。
  
    从10月开始,11月和12月,我几乎是在招聘会与公共汽车上渡过的,北京东南西北地去面试,上午在上地
  
  ,下午可能就要跑到朝阳区,疲于奔命。
  
   在找工作过程中,我良好的心理素质与丰富的编程经验起到了很大的作用,并没有遇到很大的困难,就先后
  
  有几家公司表示要我。
  
   其中我想说的有两家公司。
  
   一家是台湾公司,应该说他们做得是不错的,但我非常反感他们那种自认为高于大陆人的那种优越感,而且
  
  待遇也不高。面试之后,回来感觉很不好。当时台湾是民....进....党上台主政,我就称之为“民.......进党”看不起“***”
  
  (虽然我不是党员,但我们都是中国人,都希望中国能强大,让她的人民能挺直腰杆)。
  我想:我们大陆确实是不如台湾发达,难怪别人看不起我们,这世界势利得很,社会如此,国家亦然。但我中
  
  华960万平方公里的国土,13亿人口,难道要依靠一个小小的岛屿来撑门面?难道除了台湾公司,我就无处可去
  
  了?虽然改变不了什么,但我决定绝不去台000资和日00资的公司工作(日本人我更不喜欢,但我认为他们做事实在
  
  优秀,我们一定要向日00本人学习)!在这种公司呆着,不爽!同时,我们的确也得争气些,这世界只尊重强者
  
  。
  
   另一家是个很不错的民族软件企业,想要我,其老总专门找我去面谈了一次,希望我能到他的公司工作。这
  
  位老总白手起家,能在五六年的时间内由几个人发展到300多人,当时,是中国这个领域软件市场占有率最高的
  
  公司,我非常佩服,他为人也很好,并表示可以给我每月比其他研究生多加1000元工资,而且希望锻炼一两年
  
  之后我能够带领一个团队来开发产品,并负担我毕业所需交纳的各种费用。在就业不景气的2002年,对我一个
  
  30岁的技术水平有限的老程序员如此看重,真叫我感动。虽然我最后还是没去,但我仍然对这个公司充满了好
  
  感。一个软件企业最重要的是什么?是对人的尊重,没有这点,可以断定,这个公司长不大。
  
   我为什么没去软件公司?放弃有可能在几年之后年薪突破10万的收入?是因为我已有了更想做的事,我想当
  
  老师!
  
   我自己是从自学的路上走过来的,其中的艰辛历历在目,无人指点,我走了多少弯路?中国还有多少是象我
  
  这样的年轻人无人指点的?我幸运能爬出来了,因为我至少还能有饭吃,比我条件更差的,比如农村的孩子,
  
  可能就被生活的压力所淹没了。我个人的力量很微弱,技术也有限,但我自认为至少是一名合格的程序员,如
  
  果能培养出一大批达到我的水平的学生,他们毕业后成为合格的程序员,中国软件的根基就会更扎实,如果更
  
  能有一批远远超过我水平的学生出来,中国软件就有希望了。软件是什么?软件以人为本!
  
   人生追求什么?金钱?我很缺钱,但不可能把金钱作为我的目标,我希望我能够成为一个对社会有所贡献的
  
  人,能够获得心灵的充实,于是,我选择了留校。
  
  

作者:xichy   回复日期:2005-10-12 8:26:00 10#
  4.对教育的反思与教书生涯
  
   2002年下半年,我参加了北京高校青年教师岗前培训。一位杜教授的两堂课让我印象深刻,其中两句话让我
  
  深深震动:
  
   第一句话:我是一个教书匠,教书匠好啊,好就好在“匠心独运”!
   第二句话:做什么工作都要达到变魔术的境界!
  
   是的,作为一名教师,就必须起到一个传声筒与放大器的作用,将人类最聪明的人探索世界所得到的知识予
  
  以拓宽发展,以便让更多的人能够掌握这些知识并进而应用于实践,从而推动人类的不断进步。
  
   作为一名计算机专业的教师,就要努力把先进的计算机技术以尽可能高的效率传授给广大的学生,引导他们
  
  直接面对真实的软件世界,而不是向他们硬灌各种各样的理论知识,强迫他们去死记硬背以应付考试。
  
   我是一个小人物,才低学浅,但我真的认为高校计算机教育存在严重的问题。我在打工期间的开发经历,以
  
  及阅读国外相关资料的时候,发现学校中教的和社会上用的差得太远!都已经是什么时代了,许多大学还设立
  
  Foxpro课程,难道就不能直接用现代主流的数据库如Oracle,SQL Server,哪怕是Access也好,来讲授数据库
  
  知识?还有所谓的计算机等级考试,呵呵,过了三级学生的我见过不少,但他们真正对软件,对计算机又理解
  
  多少?
  
   在中国甚至于升职称也要考计算机,我看了一本职称计算机考试教材,里面几乎原样照搬计算机原理课程中
  
  的相关章节,弄得我给搞艺术的大嫂讲了一个小时的二进制与八进制、十六进制的转换方法,她还是弄不太清
  
  。我都泄气了,对啊,他们搞艺术的,有必要去分清二进制的10与十进制的2有何分别吗?他们八辈子也用不上
  
  。但是考试用得上,呵呵,又是中国特色。
  
   拿C++来说,我讲过C++课,许多的国内教材对C++语法下了大功夫,却对体现了C++精华的STL只字不提,对代
  
  码背后所体现的软件开发思想与方法更是视而不见,我用C++也编过不少程序了,说句实话,我用到的特性不到
  
  C++的三分之一!于是就出现了这种怪现象,许多学生考试可以拿八九十分,给他一个简单的实际问题他却不知
  
  如何下手!
  
   还有UML,现在好象很火的样子,我们读研时就开了这门课,讲句实话,当时这门课我就没听懂,可后来我尝
  
  试着用C++用面向对象的方法来编程序,然后,由代码倒推回UML类图,一下子就明白了,原来UML只不过是一种
  
  描述面向对象系统的符号罢了,如果学生没进行过真正的OOP,那就是为了学UML而学UML,根本就本末倒置。
  
   还有软件工程,我的感觉,一个人如果没写过一万行以上的程序,他看软件工程书就同看政治书差不多,每
  
  句都对,呵呵,就不知道为什么对。我完成了那个几万行的VB程序之后,再回过头看看理论,真是句句是真理
  
  !每个理论背后都是大量实践经验的总结。
  
   回想我做软件的体会,我发现所有的知识都是一个完整的体系,根本就无法区分哪些知识是本科的,哪些知
  
  识是研究生课程。于是,一种想法产生了,我主讲程序语言类的课程,那我就直接以真实的软件开发过程为主
  
  线,实践中需要什么我就讲什么。讲C++/Java,我就抛开了指定的教材,C++我讲了STL,Java我讲了OOAD,两
  
  者我都讲了用Rose进行双向工程,引导学生去学UML,一开始就用UML去描述自己开发的程序,何必浪费大量的
  
  时间去学结构化的编程方法?
  
   我现在简直成了面向对象技术的布道者,我下学期即将开设OOAD基础选修课,从实际项目中抽取典型的案例
  
  ,讲UML,讲Rose,讲设计模式,讲软件体系结构,例子代码横跨C++/Java和.net下的开发语言(C#和VB.net)
  
  ,这对于我一个技术水平有限公司的董事长而言,实在有点不自量力,我鼻子上才插上几根葱,就想装大象?
  
  但我想,如果我能成功地激发出哪怕1%的学生的兴趣,能引导他们走向我认为是正确的方向,能启发他们思考
  
  ,能直接面向真实的软件开发活动而不是学校的考试,就是我的成绩。我现在正在看引进的原版书籍---《设计
  
  模式解析》,时时击节赞叹!《设计模式》经典但难懂难用,而《解析》一书的两位作者既有丰富的从业经验
  
  ,又对OOAD进行了深入的思索,真知灼见时时展露于书中,我现在刚看了这本书的80%,基本上可以用一个成语
  
  来描述这部书:深入浅出!
  
   要做到深入浅出谈何容易!只有同时具备技术专家与文学作家素质的人才能做到!
  
   反观我们国内的大量教材,还有大量的垃圾论文(包括硕士,博士的,本科的就算了,我看绝大部分根本不
  
  能称之为论文),全都是“浅入深出”,作者自己都未必明白,就东拼西凑,摆出个样子吓人。本来完全可以
  
  用大白话三言两语讲清楚让人明白的道理,有人专门要绕一大圈,专挑用高深的数学公式来表达,唯恐别人容
  
  易理解,显得他水平不高!呵呵,什么东西一沾上“数学”,立马身价百倍。我就听过一个北师大的一个在读
  
  博士说过:如果一篇博士论文中没有一个数学公式,根本就不算是博士论文。这句话对不对,大家可以多思索
  
  。我数学不好,没资格讨论数学,我的直觉:数学是工具,但如果为了发表论文等目的而故弄玄虚,为数学而
  
  数学,是不合道理的。中国的学术水平与现状,大家都心知肚明,不用我废话了。
  
   现在每年都毕业大批的计算机专业学生,可其中真正具备扎实根基的可以很快胜任工作的我看只有5%(95%的
  
  学生不要扁我,不同意就当我在说胡话,我很瘦的,一扁就没了J)。多年以来,我国高校计算机教育是按照计
  
  算机科学研究者来培养的,可事实上,有多少学生能从事计算机方面研究的能力?我看应分流,80%的学生按工
  
  程师方向来培养,20%的学生按研究者方向来培养,而且应大幅减少必修课的数量,计算机领域太深太广,样样
  
  都想教给学生,反而成了夹生饭,一个想从事硬件设计的学生和一个想从事软件开发的学生,能给他们一样的
  
  饭吃吗?学校应提供各种条件和资源去引导学生,激发学生的创造性与主动探索性,让他们去尝试,去发现自
  
  己的长处,最终找到最适合自己的发展方向。不这样做,中国软件后继乏人,没希望。
  

作者:xichy   回复日期:2005-10-12 8:28:00 11#
  5.实践第一
  
   2002年下半年,我和一个朋友去了北京郊区的一家杂志社,看到的情形让我震惊:在信息产业最发达的北京
  
  ,这家杂志社还用人工查对杂志订单和款单,看着那按省来登记的几大本厚厚的客户登记本,工作人员需要手
  
  工来在其中查找相应的信息。这样的工作效率,这样的行业信息化水平!北京如此,全国又如何?
  
   从这件事上,我看到了中国软件业的另一方面。一方面我们没有核心技术,另一方面,已有的技术又根本没
  
  推广没用好。追踪世界先进水平,对于我等这种水平的人来说,确实勉为其难,但将已有的技术用于解决实际
  
  问题,却是我们可以做的。如果中国各行各业都真正能通过进行信息化而提高生产效益,那中国不就从根本上
  
  强大起来了吗(象印度,IT一枝独秀,其他行业没有起色,我称之为跛足的国家,绝不能成为世界强国)?在
  
  扎实的社会基础之上,软件业不就有了更大的市场与发展潜力?中国许多行业的信息化水平非常低,而且中国
  
  地域广大,发展非常不平衡,有些地方信息化水平甚至为0!努力推动行业信息化,是我们这一代软件开发者的
  
  责任!而追赶国外先进水平,恐怕就不是一代两代程序员可以达到目标的,需要长期的努力。作为一名软件开
  
  发者,只能脚踏实地,哪怕你只做一个小小的MIS产品,也要尽力把它做好来。
  
   于是,我开始了期刊发行系统的开发,这完全是自发的,没有任何资金投入,只有一种热情在支撑。我开始
  
  选择C++ Builder开发,做了几个月,完成了第一个版本,但我发现,我找不到足够水平的C++程序员进行合作
  
  开发,而且整个一个EXE文件,在体系结构设计上虽采用了分层分块的设计方案,但却是源代码级别的,要拆分
  
  成COM组件难度太大,不是一个人能完成的,于是中途流产。
  
   2003年3月,我开始系统地学习.net,我吃惊地发现,我原来想在C++中实现的许多功能,比如对象串行化为
  
  XML,在.net中已有现成的类可用,.net更把OO的功用发挥到了极致,它的混合语言开发,它的反射机制,它的
  
  新的自识别的软件组件,以及强大好用的开发环境VS.net,都让我惊叹微软对开发者遇到的困难的深入把握,
  
  相比用C++开发,至少可以提高1/3的开发效率。于是一个新的想法产生了,我要把以前的产品用.net重写,利
  
  用.net强大的组件模型,将设计模式理论推广应用到组件级别,通过XML和反射机制建立一套可动态装配的软件
  
  生产流水线,实现象Dell直销PC那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构,配以对业
  
  务领域的深入分析,逐步建立功能强大的业务组件仓库,就可以实现软件系统的动态装配。说干就干,我用
  
  VB,net重写了原先用C++编写的系统,将原先的一个EXE变为十几个DLL,而且这些DLL还会随着发展而不断地分
  
  裂,也有可能重新组合,利用Refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做软
  
  件关键因素是变化,只有适应变化的系统才是有生命力的。
  
   我用两个月的时间大体上弄清了.net平台下的主要类库,然后又用两个月的时间再次重新实现了期刊发行系
  
  统的C++版本的全部功能,到8月份我写这篇文章之时,第一个产品里程碑已经完成。同样的,除了需求是由另
  
  一个合作者去搜集的之外,几乎又是全部由我一个人包揽了所有的系统设计及编码工作!
  
   毫无疑问,我自觉得新系统要比老系统可维护性强得多,真正实现了彻底的全组件化系统开发,计划再有一
  
  个月的界面美化,改正Bug,引用多线程提高运行效率,优化系统结构,就可以提供给用户试用了。市场如何,
  
  难说难测。
  
   在开发过程中,我再次感到巨大的挑战,不光是技术上的,更是管理上的。人才是我最头痛的问题,没有一
  
  流的人才,哪来一流的产品?我们找不到足够水平的程序员一起合作(牛人哪屑于做这样一个小儿科的产品?
  
  )我们要走的路还很长。也许我们开发的产品是失败的,但我从来就没指望能用这赚钱,我只是尽一个软件开
  
  发者的责任而己,成败已不重要!人生不尝试,怎能体现人活着的价值?
  
      
  结束语 永无止境的软件之路
  
   1.辛酸与苦辣
   做软件开发很苦的,技术进步如此神速,每个软件开发者都得不断地学习以跟上发展的步伐。有时我常想,
  
  何苦呢?我现在在大学中混,怎么样不能混下去?为什么要做这些吃力不讨好的事?我投了十年的时间去学习
  
  电脑,却最终发现自己不过中人之资,离顶峰远之又远。古语云:三十而立。我今年32了,仍是孤身一人,看
  
  看周围的同学,他们的小孩都差不多上小学了!许多都有了自己的房子和车子,而我到现在才开始申报中级职
  
  称,还挤在集体宿舍中,望着北京高昂的房价而叹息。现在社会越来越功利了,看着象我这样的穷光蛋,看着
  
  由于长期面对电脑缺少锻炼而瘦弱的身躯,又有哪个女孩愿意嫁过来受苦?
  
   软件人的生活很苦,压力很大,我认为是拿青春赌明天。就是在这种恶劣的开发环境中,还有许多业外人士
  
  指手划脚说程序员如何如何,还有太多的公司只顾压榨程序员的劳动,缺乏对程序员基本的尊重,怎不叫人寒
  
  心?“三十而衰”,这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀!
  
   2.无止境的追求
   人类已进入信息时代,计算机技术几乎每隔半年就有一次大的变化,我现在又面临着这样的抉择:今后的路
  
  如何走?
  
   北大的教师聘任制度的改革一石激起千层浪,说明了中国高校的改革势在必行。我是欢迎这种变化的,虽然
  
  到时我可能会下岗。但人生中总会遇到各种各样的挑战,只要你不倒下爬不起来,就有希望。
  我想我必须再次让自己有个提升,要从小事做起,但做小事则绝不能成为最终的目标,也许,不远的将来,我
  
  会走出国门,到世界软件技术最发达的地区去汲取丰富的养份。今后的路怎么走,我还在摸索之中。
  
   3.人生无悔
   人生年华如水,时光无情。在过去的岁月中,我尽了自己的力,回顾往事,我可以说:过去的事只有遗憾,
  
  却没有后悔。如果给我再一次选择职业的机会,我还会再次选择软件!
  
   再过10年,到2013年的时候,我也许会再次写一篇人生的十年回顾,到那时中国的软件会如何?中国软件的
  
  明天靠你我这些普通人去扎扎实实地去工作来支撑!少发些牢骚,多做些实事,中国软件才会有光辉的明天。
  
  你我共勉!
加载中,请稍候...
  • 评论加载中,请稍候...

验证码:请点击后输入验证码  收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...