大家讨论下 如何看待一个程序员水平高低
大家常说 以项目经验、代码数量、项目数目的多少来衡量 ,真的如此吗?
说白了就是代码的质量,有的人写再多代码、做再多项目,最终还是不过如此,可是有的人只需写区区上千行代码,就足以奠定自己在IT界的地位。你说你写的有100万行代码,不要觉得很了不起,100万行hello word也是100万行代码;你说你做的有1万个项目,也不要觉得有什么了不起,学籍管理系统、医疗管理系统、社区管理系统、金融管理系统、石油勘探项目......这些项目有的真的很拽,但只不过是个应用层的应用软件而已。真正的高手,不是以编程时间、代码多少、项目多少来衡量的,而是代码质量做考量的,形式很简单,哪怕一个排序算法、一个内存分页算法...只要是你自己创新实现的,那么你已不是高手,你已经是大师呀
------解决方案--------------------
1.1.16 如何成为一名优秀的程序员
一位仁兄说的“程序员写的程序不是‘算法+语法',而是要能够满足用户需求的工具”我非常赞同。要想达到用户需求就必须从各个方面来考虑,如业务、人机交互 、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只知语法不知其它那就真是编程机器了!编程机器在印度高中生经过几个月培训,按照严谨的软件工程方法,加上较高的管理,就可以胜任了!大家相信吗,我是相信的!
谈到这里我就不禁说到了国内教育界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如何适应社会要求”。大家也看到了很多计科系大学生说“精通N种语言,熟悉N种工具”,不知道学校里的其它知识到那里去了,甘愿做编程机器,浪费了人民的纳税 ,干高中生能干的事,比较可惜吧!在国内现在就是这样了。国内的软件开发业到底是需要那些人?如果仅仅是编码机器,那我估计中国硅谷还是做梦去吧!
社会似乎也需要编码机器,翻翻招聘广告,做应用开发的都要求精通某某语言,熟悉某某工具,很少需要懂管理懂软件工程的人。以我个人一点偏激的想法,民族软件产业要腾飞,更需要的是能管理使用编码机器的人,即管理人员。国内软件产业编码机器已经很多了。希望不要惹怒了那些编程高手!System Develop 与Application Develop 在国内到底哪个能养活你,能赚钱?诸位仁兄想必也知道,况且俺也没发现几家水平高的公司招这方面的人。毕竟OS,DB MS,COMPILER都被国外做了;另外也别跟我谈LINUX,毕竟还是少数烧钱的人做的事情,我先喂饱肚皮再说。我手下的很多搞4GL语言的程序员都想转行学VC等所谓的更低级的语言,我总是说“在XX城市,先用4GL工具生存,以后再学习VC吧!” 。说的简单一点:先解决肚子问题。
如何判断自己是否是编程机器?
1、面对需求不考虑用户,只是考虑用哪些程序技术展示自己的语言语法技巧。
2、学习了N种语言。
3、从来不学习或实践软件工程。
4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法。凭着兴趣和创造力去干,却重复繁琐的劳动,做着没有意义——唯一意义是赚钱,而且真是出了半斤力, 拿不足八两。 终日劳累,却不能学自己想学的。最终结果是跟不上社会科技的发展 ,人已衰老。悲哀!!!
我觉得大学里的高、数理方法之类的, 如果你不是做研究的话, 应该是很少能用到的。不过如果说到离散之类的, 倒还是时不时的能有点用。
开发软件的关键是要有想法,一个好的想法比什么都重要。尤其是有关网络方面的就更是如此。实际上一个程序员最终的技术需要和实际相结合。真正在编写程序到达一定时候,语言的使用并不是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是需要进一步考虑的东东!否则,为何大多数公司要求有编程经验了!这些不是程序员必须学的。但数据结构,编译原理,操作系统原理等是必须要学好的,英文也要多看,不懂计算机英语可不行。
我不认为编码的人就是机器, 而系统分析就不是机器。 其实系统分析员就是销售的机器, 所有职员有是老板的机器。它们之间只是不同工种吧了。当然对系统分析要求要高一些, 薪水也高一些。 但更让人佩服的是销售, 是他们驱动了整个的运作。我也是个中专生, 还是学机械的(后来自学了计算机),我非常了解在传统的制造业是如何的规范, 设计人员设计图纸, 然后经审核,再到车间试样, 再根据情况, 修改图纸, 如此反复几次后才能一个产品定型,而在软件界, 就没那么好了,领导会说, 这个你做, 那个他做, 也没有经过很细的分析(国内很多都是这样),在我们这里也没有系统分析员, 每个人都是设计员,也是编程员。 虽然这样对个人来说, 能学到很多东西, 但不利于项目。我国的软件过程水平,确实令人担忧, 目前为止只是几个人十几个人的小软件, 还没有能拿得手的大型软件。
至于中专生编程问题,我认为只要入了这个行, 就不会比本科生差。 因为对他来说没有优越的学历条件, 那么只好埋头苦学,但这正好适应当前计算机软件迅速发展的今天。 学历只能代表过去和基础。更需要的是有能力的人, 解决问题的人,实干的人。对我来说确实有时有点自卑,没有上过高中和大学(由于那个年代, 我只知道能为父母减少一点负担就行了), 所有我一直在努力的学习(corba,uml,java, 软件过程等), 目前为止我并没有觉的我的构架能力和编码水平比他们差,只是觉得E语言实在太差。过计算机本科又如何?我有几个同学到银行去搞业务了,有同学任教,有同学收税去了......60多个人真正现在搞计算机的还就只有几个人,再看看当时这些计算机本科生的毕业设计,//faint 有的人到最后连vb都搞不定,但他们什么编译原理啦什么组成原理啦什么软件工程啦学的(应该是考试的分数)还真不错,至少我感觉有些概念比我清楚(上课没听?)所以我觉的中专生并不比一般大学生差(当然有些重点学校除外 //hehe),有时中专生有更大的压力*迫自己去学习。
学历不是重要的,关键是一个人的素质。我们不能将目标定位在做程序员或编码员(Coder)上。光会写代码有什么用?那叫“编码员”,在国外是属于体力劳动的,不像国内,会写程序的就叫高科技。重要的是分析问题、解决问题和规划的能力,系统分析,系统设计及项目规划才是正途。这就需要学习所谓的基础课程了,如:软件工程、离散数学、数据结构等等。我从vb到现在开始学vc后,一个人捣鼓了几天也没有什么新发现。跟本不知道VC的编程思想是什么,请大虾们告诉我,它和VB的差别真是太大了。VC的博大在于MFC的操纵,它是Win32API的封装.思想在于怎样了解MFC的内幕,它的运行机制。差别也大,差别也不大!这要看你对API的理解了,虽然VC++的可视化没有VB的好,但是不是绝对没有的,其对而且对话框的编辑是跟VB一样的,不过不是像VB那样放在第一个界面罢了,VC++的博大精深是VB难以望其项背的!:)而且VC++是完全面向对象的编程工具,而VB是不够完全的面向对象编程工具,VC++是完全编译语言,VB是本地编译语言,不够完全,VC++效率高,封装性好,继承性高,VB效率相对低了很多,但界面友好,二者只能取其一,或者使用
VC++,VB辅助(因为VB开发快),当然Delphi,BCB也是不错的选择。
程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像Richard.M.Stallman一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!!我刚学VC的时候,还没有上网。身边也没有一个可以问的朋友,所以大部份都是自己啃的。那种感觉真是很痛苦。 现在在网上就不同了。可以得到太多的资料了。而且还可以得到在线帮助。但这些都不是学习的关键。相信各位也知道VC的难度,并不是那么容易上手的,所以要想学会,学好VC,靠外力是不可能的,主要得靠自己。 自己要有一份难得的毅力,对编程的狂热也可以在一定程序上起到帮助。我就是这样的。起初,没有人帮我,我学习VC是三天打鱼两天晒网,学习进度很慢,幸好对编程的执着,使得自己坚持下来了。
如果你从来就没有接触过编程,那你学习VC的速度可能会比学过面向过程编程的人要慢一些,因为你要去理解命令及语句的含义。但只要你努力,并且可以得到别人的帮助,我相信在半年内会对VC有一定的认识。 请学赤面向过程编程的朋友也不要笑,因为面向过程与面向对象实在是区别太大了。就拿封装一词来说吧,当初我是左想右想才想通的。所以不要自己学过编程,就会在学习VC的通道上比别人轻松。
现在有一种现状应该让我们注意,我发现有很大一部份初学者觉得VC是一种语言,C++又是另一各语言。我在和一些初学者的交谈当中,察觉到了这一点。有的初学者竟然还认为我学VC为什么就一定要学C++?我想这个问题是我们大家都没有注意到的一个问题。就是向初学者讲述C++对VC学习的重要性。 我这有个例子,跟大家讲一下。 我有个同学,他接触编程比我要早,在我还在为VC中“::”号怎么标记的时候,他已经在学习C了。后来,我对VC稍有理解的时候,他也发觉C的跟不上时代的脚步了。我便提议他从C++语言学起,可他认为自己有C的学习功底,根本就用不着再去学习C++。可在学习VC的当中,遇到的困难真是数不胜数。最近,他还是去买了一本学习C++的书,从头再来学习C++。 我希望通过这个例子,能让广大的初学者知道,C++对VC学习的重要性。