有些东西是学校里的学生学不到的

来源:互联网 发布:linux内核 文件系统 编辑:程序博客网 时间:2024/06/10 08:43

   前段时间参加ACM大学生程序设计大赛,本来抱着拿奖的心态去参加的,结果没想到,自己连三等奖都没拿到.几个低年纪的学生占据了前面的一二等奖.而且,还有高中生呢.当然,别人准备得远比我充分,他们做过的练习题比我两个账号的加起来的十倍还多.这方面,我连资格都没有和人家比ACM程序设计竞赛.不过我还是一直在想,我做程序设计,软件开发也快10年了吧,如果真的连很多刚学程序设计2年的学生都比不过,那我不是太糟糕了???

   昨天和vczh碰到了.他说他高考结束了.我跟他提起ACM程序设计比赛的事情,他直接了当地说他不行.我说,你跟我一样,都是初中就开始做程序设计,难道时间长,能力反而倒退?他说:"我习惯慢慢写程序..."

  我突然发觉,我现在写程序的速度似乎比以前慢了不少了.特别是和高中的时候比起来,我真的发觉,我写程序的速度慢多了.

  为什么会这样?说实话,我上大学以前,学的那点程序设计,和现在比起来,真的是狗屁啊.

  当初我进公司做事情的时候,我写程序的速度是十分快的,因此,老板们都比较赏识我.但是工作了一年半后的我,反而现在做事情的速度经常受到项目经理的过问.我不认为这是一种倒退.

  我承认,我现在写程序,速度比以前慢多了.考虑的东西也比以前多了,所顾及的事情也是以前无法想象的,或者是根本就想不到的.以前我写程序,老是一个劲儿在键盘上敲,动不动,就写出了上W行的小程序出来. 而现在的我,经常坐在电脑旁边思考,想问题.思考和想问题的时间似乎比动手写程序和调试的时间更多.

  经历了两个大的项目过后,我现在做任何一个小项目,哪怕一个小程序,小的课程设计,我都在不断的思考.如何才能构造成更好的系统框架?正如林建辉老师说的."很多技术问题,其实都有很多种办法解决,那么你选择那种??"

  如何构架一个优秀的系统?

  这个就是我认为,很多计算机本科学生在学校无法学到的东西.但是,它其实比算法更有效地作用于生产力.

  软件工程上都说了,代码的可维护性是第一位的.但是又有多少做到了可维护性呢?很多人认为,要做到很好的后期维护,就是要写很多很多的文档.那么这么多文档,你又如何维护呢?难道再此基础上有建立一层文档?如果这样分层建立文档.那么文档的数量是指数倍增长的. 这是一个悖论!!!如果你要让你的代码可维护性高,决定因素绝不是文档或者注释.而是你的代码本身的结构,风格.

  代码的结构其实也是你真个系统设计的结构.你如何组织你的系统划分的?你如何让模块间互相合作的?你如何让你的系统能够独立平台?如何让系统具有很强的伸缩性?

  关于代码的结构,我最有感受的就是几个优秀的开源组织的代码.我看了好几个的优秀项目.文档很少,没有具体关于代码的文档. 但是你能够看懂.结构十分清晰,没有特殊的编码技巧.用最简单的编码来实现最复杂的功能.  代码就是设计文档!简单!明了!清晰!佩服!!!

  为什么学生们无法学到?这个是显然的嘛,有多少学生参加过真正的商业项目开发???不说学生,这些学生们的老师中,有多少在企业里面做过事情的?

  说到这里,还有个我认为大学老师始终没有教给学生的,而同样也是十分重要的东西:心态!!!软件开发的心态!!!

  心态决定一切,米卢说过的.

  可能很多同行都没有意识到,这一点可能是他们跟现在刚毕业的大学生比起来,最大的优势.

  没有在正规企业做过正规商业项目的人,是根本无法体会到软件开发的心态的.大学的老师们,有多少是在正规企业里面做过正规商业项目的人呢???他们自己都没有体会到过,如何交给学生呢?