不要一辈子都是coder

不要一辈子都是coder 

                                                        ——我的编程感悟

 

       我,一个小小的coder,四年的大学学习,近两年的编程经验。可能连巨人腰带的高度都没有,看不远,想不深,还请原谅。

 

       大一的时候,崇拜那些编程的高手,求伯君,王志东,雷军,……。梦想和自己能和他们一样,心里的目标有,可是键盘下的路无!  能知道的就是学习程序设计!什么是程序设计,那时候仅仅知道的是,《c语言程序设计》 谭教授那个本所谓的圣经,钱能的《c++程序设计》,还有一本很垃圾的《vc++程序设计》就是这些书,学了几个学期,也浪费了几个学期? 因为大部分时间,停留在语法上层次上没有windows程序设计基础,不知道何谓事件驱动,就学vc++,就用mfc,对像我这样IQ的人只能是打击信心, 后来,一个偶然的机会看了侯杰老师的专栏,当然也得知大名鼎鼎的《深入浅出MFC》。重金买来,看了又看。 流程也基本清楚了,可以轻松的写几个小游戏。也可以利用socket相关类,写个聊天的小程序,也知道消息是该传给view还是传给doc。后来看java火,也读了侯老师翻译的《java编程思想》。可是看来看去,这些东西都是语法语义上的小东西。  那时候,没有人指导你,没人给你工程做,哪怕是小工程,没有人赶你上架。唯一有收获的就是语法基础比较扎实。可是花这么长时间学这点东西,真的值得吗?

      

       毕业,找工作,做一名程序员的想法,驱动着自己,终于找到第一份工作程序设计——手机mmi设计,或者说是应用程序设计。这属于嵌入式领域,也是在那里我见识了什么是真正的程序设计。这里可能有一个误会,我见识了真正的程序设计,并非指我和我同事写的那些程序。而是看到了Ti公司设计框架,那不再是简单的语法,而是用c建造的摩天大厦。几千个全c的文件配套的工具,……。那才是软件,我软件要版本控制 cvsclearcase,后来接触了vsssvn。懂得了bug也跟踪知道mantis Bugzilla。在工作中,重点学习公司购买的第三方mmi软件,也了解了整个框架的基本模块划分,通信机制。对软件工程有前所未有的感悟,而不是大学课堂里面那种隔靴搔痒的“软件工程”课。

 

       而我们的工作,仅仅是了解整个框架的一角,在原有的基础上修改,对原有框架测试进行相关debug。我在上海,上海现在大大小小的手机design house 60几家,基本上有95%的design house是买国外的方案,,偶然有个例外,也可能是我们宝岛那边的,可悲呀! 嵌入式芯片我们搞不出来,  操作系统我们搞不出来,协议栈代码搞不出来, 可是就是手机mmi框架,我们也很少有自己设计的,即使是自己设计的,可维护性,可移植性也不敢恭维。【有点好消息, 3G 时代,我们这个状况有所改观】

 

       我们那么多大学,那么多计算机专业,那么多所谓的软件学院,到底怎么了……。到最后为什么我们什么都搞不出来?我们天天搞评论,今天java好,明天c效率高,后天c#时髦,我们真的知道这些东西吗?我们判断标准是什么,查查网上的评论标准,大部分停留在简单的语法上。事实真的是这样吗? 一个语言语法的学习,比另一个难很多吗? 面向对象的设计就高明很多吗?可以封装,可以继承,可以多态,可是有多态设计能力的人有几个,再言之,即使你明白了多态你能控制继承吗? 对象关系复杂,消息传递复杂……。 我们的软件设计,我们的软件学习出了什么问题,成就了coder而不是designer

 

       我们缺少实践!特别是对大型实用性质的项目的实践,  个人认为这是关键中的关键的地方,我们都是为学习而学习,而不是为用而学习,是为学习而写程序,不是为实用需要而写程序。市面上摆了那么多书,鱼龙混杂。即使都是龙,我们可以仅看书学习到什么? 伟人说过应用是更重要的学习。 软件不是11 2,书本上的很多知识和现中碰到的不一样. 再则适合老外的东西,未必就适合咱们,别忘了咱们可是有中国特色的。没有做过什么像样的工程产品就能硕士毕业,就能拿博士学位,估计只有中国了。

 

       大学四年,基本是语法阶段的编程。工作了,我们又是在别人的框架上修修补补得过且过,很少深入研究,为什么?因为我们程序员太聪明,因为我们知道这个框架用多久,谁知道,自己深入学习后,公司又换个平台…… 所以大家得过且过,能改了bug就行,花不少时间时间在新的技术,新的语言上。也因此我们的os没人人,我们编译器没有人,我们的框架程序设计没有人,我们就是一直在表面逛呀逛的。实用产品很难做出一个来。

 

       两年的程序设计,经历了不少东西,对真正的程序设计也有自己的认识,首先否定一点:真正的程序设计,绝对不是你学了多少语言,即使你懂adapascalcc++,mfcvbjavac# perl python ruby pb ……。在程序设计领域里面你很可能依然是个门外汉。coder只是低级的入门阶段。程序设计功力重在设计。对功能的抽象,模块的划分,局部之间的通信,针对具体领域还有具体要求,有些注重效率,有些注重可修改性,可维护性。而这是东西不是大学里面那种《c语言程序设计》《软件工程》能学不到的。这些是需要通过参加项目,创建项目领悟出来的。除次之外,第三点就是还需要相关领域的专业知识,这个孟岩老师已经写过一篇非常不错的文章《放弃理想,未必能成就现实》。大家可以baidu一下。

      

       也只有通过实战,你才能领悟各种设计思想的差别,知道优劣,有本很出名的书《设计模式》.我敢断言没有项目经验的人,哪怕你c++语言能考100分,基本看不懂。看看那些模式的所应用的地方都是很多项目提炼出来的。对大项目的参与,是成就设计高手不能少的环节。

       大学期间,大部分是语法,软件工程是隔靴搔痒,工作了,我们用别人的框架,改动皮毛,不深究其中奥妙,不深入相关领域学习,老是停留对新的语言语法上学习,造成今天这种局面。 只破不立,不能成事。谈一下如何如何立的看法,前面主要说是该实践。可是如何实践?这也是个问题。我觉得firedance(就是提出麒麟抄袭的那位高手,不知道名字记对没有)说得很有道理,那就是先参与, 这个入门要求比较低。在参与中学习,研究。如果已经是一名程序员,身边如果有好的框架可以学,那真的不错。千万不能满足与自己负责的冰山一角。要学习别人的设计。可能会没有注释,很痛苦。但是要坚持,慢慢就会觉得,他们的设计不是那么高不可及。如果你是学生,或者对身边的框架不感兴趣,开源项目的参与,研究也是很不多。这里想说明白一点的是选项目的时候,尽量选择自己能用的上的领域。不要为学而学,要为用而学。通过参与,会对程序设计有所领悟,然后选择一个自己认为别人没有做好而自己熟悉的领域。进行我们自己的有点深度的设计。

             

       程序员只能感到35岁,个人不认同这个观点,程序员的概念太模糊了。如果你35岁还是coder的话,真的很危险?但是如果是designer,那老可是宝了。初次之外还有一种是技术告诉,比如所是驱动,自己可以在某些领域内特别精通,能解决一般人解决不了的问题。这种人干到60岁的不成问题。^_^

      

       写了不少了,基本是自己的感悟,就此搁笔,我自己也不愿一辈子coder 目前有自己的一个小项目在设计。以后发文章在介绍这个东西。

      

      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值