程序员发展规律的详细介绍
程序员发展规律的详细介绍
source:
http://blog.csdn.net/yesky12/archive/2004/11/30/199306.aspx
程序员发展规律--看『第80期IT沙龙实录:中国软件业人才打造模式之辩』有感
//吴功宜(南开大学信息技术学院院长)观点:
//周鸿祎(雅虎公司中国区总裁):第一是目前对软件蓝领的看法非常不认同,大家说像印度学习快速弄一批人进行专业的补习。认为这些人只要会写代码,再有人做软件系统架构,再有人检测bug 就可以了。我个人认为做软件应该还是一门艺术,一个优秀的程序员和一个差的程序员,因为是虚拟的工作,其劳动生产力相差绝对不是十倍二十倍,可能是上百倍、上千倍甚至无穷大。所以在软件领域,我们还是要呼唤一些个人英雄主义。我们跟Google做过很多交流,虽然他养了很多的博士,但其真正的核心程序员和核心代码的数量并不大。第二个观点,我看程序员杂志,我跟蒋涛也是很好的朋友,但我经常抨击他们的杂志。我说现在感觉程序员非常热中于作语言的研究,大家要把C语言C++语言或者一些更新的东西研究得更透彻,动辄就谈模式设计和软件工程,包括张晓明刚才也提到,我们公司的软件都是自己做,他们有多好的分工。我觉得现在很多程序员连基本功都不扎实,自己可能还没写过十万行或者二十万行代码,本身对编程还没有一个了解的时候,就开始上升到软件工程,动辄谈模式设计。连几个大规模的系统都没有设计过,我经常在相关杂志看到一些论道的文章,我对目前这种看法是比较反对的。第三个观点,我听到很多计算机系的学生都在抱怨中国计算机教育不好。这些学生说现在都流行JAVA,.NET了,各种嵌入平台,各种Server编程,我们学的内容都是老掉牙的,还是谭老师那本C语言。我的看法恰恰相反,我觉得作为计算机系的课程或者一个本科生在学校还是应该注重基础研究。换句话说我在方正管过很多的程序员,这么多年我们见到真正出色的程序员,其数据结构、编译原理、基本功一定学得很好,比如他不懂得Windows编程,但给他一周时间,他就可以快速理解,你一旦换到Linux上编程序,他的转换周期也不会很慢。我见过一些程序员很热衷于一些快速开发工具,整天追新,后来程序没写几个,自己的事业也荒废得差不多了。我觉得计算机系的教育还是应该注重基础学科其实所有核心的东西都可以向下分解成你在学校学的最基础课的一些基本的数据结构和算法。所以你的基础打得越扎实,将来这个人作为程序员发挥的能量或者说你能够做的高度越高,这是我第三个比较偏激的观点. 如果我们大学里都变成教最时髦的东西,我觉得大学可以不用开了,你们自己去订阅一份《电脑报》,或者互联网上什么新东西都有相信未来互联网软件在中国再做二十年,当风险投资,当创业理念和整个社会商业环境变得更好的时候,可能中国软件业肯定有一个自然的成长。就像你的体育,如果脱离了整个民族体育组织的提高,光去谈金牌我想大家是论不出金牌的,
//谭浩强:(计算机学习的三个层次)整个社会有三种层次,第一个层次是计算机普及教育,第二层次是计算机继续教育,第三是计算机专业教育第二个层次是计算机基础教育或者计算机技术教育。他面对大学生打下计算机应用的基础,比如一些语言、计算机程序设计、数据库第三层就要求大学学习很多具体的开发知识,比如C语言,C语言里没讲什么开发中的问题。这个教授的意思就说C是基础,因为你把C打好基础,以后做别的工作就非常容易,所以目前赶时髦的方法我是非常不认同的。来一个新的就学,就像狗熊掰苞米一样,所以要打好基矗而C++的本质是解决大型软件中的问题,如果没编过大型软件是不能体会C++的真谛我说C++可以分两个阶段学习,第一阶段在大学阶段打基础,第二阶段毕业后遇到问题,编程的时候再学C++,可能学得比较深入大学还是很重要的打基础的阶段,当然这个基础不能脱离实际,用不到的也学,还是要围绕将来所需要的打好基矗所以我认为这三方面是很重要的,就是要有定位。还有的考题考DOS命令,什么命令是内部命令还是外部命令,作用是什么?我说我也背不出来,会用就得了,所以现在教育的确有误区。
//吴文虎(清华大学计算机教授): 我们的软件老上不去,我认为不是我们的人不行,我觉得可能还是一种体制或者其他的东西困扰着我们。因为他很有兴趣,正像我经常讲的,如果他对一件事有兴趣,你让他钻研下去,他觉得是乐趣。对于程序也是这样,编程序本身可能是一个非常繁重的脑力劳动,很苦。但是他有乐趣,因为他的乐趣来源于其基矗我们知道计算机实际是数学的延伸,过去是手算,现在用计算机帮着算。计算机是由于数学发展之后,人们需要计算了,人脑跟不上了,不是人脑不行,人脑的速度不行,要用计算机帮着算,这时候我们才发明了新的工具。要把人类通用的智力工具掌握好,来解决我们在现实当中很多问题的话,这个时候他就感觉到数学的美。这个美是一般人体会不了的,在他很累的情况他有美的感受,有娱悦,所以他才有兴趣。我说,我要教的课应该是一个基础课,这个课应该是将来对学生一生都要有用的,主要讲构思、讲方法、讲概念,讲怎么编程序,它要建筑在什么基础上呢?我觉得学生第一重要的是语文,语文不过关,思维是没有逻辑的,落花都讲不利索,将来博士论文写不出来。谭老师有同感,谭老师能把书写好语文的功夫很大,没有语文能写好吗?数学也很重要,那是垫底的。s 我说你注意一条你的学习方法要改变,不能死记硬背,一定要按规律来学。你记住我的一句话,我说你不是听会的,你也不是看会的,而是你自己踏踏实实、认认真真动手上机实践理论联系实际学会的,否则我耽误你了。计算机的东西是理论联系实际最紧密的一个行业,一门学问你不动手是学不会的。理论联系实际。不动手学不会,就是告诉他这个基本原则然后加强实践,同时也讲调试。因为程序编出来不是唬人的要真的解决问题,人家聘用你,你去做的话必须把东西做出来才是真本事,否则是纸上谈兵。同时对于大学生来讲还有一条,一定要教他扎扎实实的一些基本功,特别是思想方法。所以把逻辑和抽象当做一个很重要的概念和训练,否则到了高层他就上不去了,我们基于对问题的解决,培养它分析问题和解决问题的能力,有很多东西不是我们老师在讲而是让学生自主研究、学习。激励他能够自己带着问题学,如果不会了,你就去研究,去探讨,合作研究也行,还要去看很多的书,很多的材料,包括组合数学、图论、集合论、人工智能搜索算法等等。很多东西都是提前学了,当然数据结构也是非常重要的。但是他们有一条好的地方,我认为他跟我们现在课堂的学习不大一样,他很会找重点,这些中学的孩子。他不是按部就班这本书看下去,不一定,他找到重点能够学就学到手,学到手解决新的问题,之后进行总结。总结完以后还可以写出论文,如果论文好的话我们就在冬令营里让他交流,而且有严格的办法你就报告十分钟,然后我们提问题五分钟最后给你打分,用这种模式培养他的科学精神、科学的方法。因此,我敢这样讲,这批孩子受到训练,应该说他的级别不是一般高考的人的级别。因为他已经会自学,自主研究问题。受过这样训练的孩子我给你举两个例子,有两个孩子清华毕业以后去了新加坡念硕士,他就按照这个模式一年里写了十几篇文章,一年博士就毕业了。这两个人一个叫黄高峰一个叫徐宙,一个去了英国一个到香港科技大学读博。这还不是我们最优秀的。所以我觉得人才怎么培养的确是一个大问题,这方面可以改革的东西挺多的。我见到很我人,我有这个感觉,很多做软件很成功的人不一定是搞软件的,很多人是学数学、学物理的,整个软件做得非常好的,带一队人马来做,因为他思维非常好。所以很多过于急功近利是这一阶段我们社会特别明显的特征。扎扎实实地做起,目标清楚,我将来想干什么,在大学中如何一步步地安排自己的路。其实有学生非常聪明,到后期有些学计算机同时学法律,这就非常好,将来打官司打不清楚就找他,所以我觉得我对大家有一个忠告,根据自己的兴趣,设计自己的路,然后提前准备,不要等以后找不到工作的时候再准备,那就来不及了。就是说不是计算机专业出来的成了计算机专家,原因何在?就是因为他是复合性人才,因为他本来有自己的专业,把计算机当做工具。尽管我学的课程不如计算机系的人多但是实用的,学一门用一门,经过累计在自己的领域中如鱼得水。而计算机专业很大的弱点是没有对象,只懂计算机,而这些人恰恰有这个优势,既懂本专业又懂计算机,将两者结合起来。我们的学习方法是对头的,不是拿本书看,那没用的。我们拿计算机来拆,去研究里头有什么,把核心的软件剖析一下,怎么写的,这样我就会Basce汇编语言了,我就可以去讲Basce和汇编的课了。为研究计算机怎么上显示器,我就去研究,当时我们的那台显示器是一台电视机,我就自己装一台电视机出来就会了,我就可以讲电视原理的课。我们是通过理论联系实际动手学会的。我要想把一个问题学透就给人课,我要给人讲不明白就说明我没学会我就必须去钻研。除了智力因素外我们强调非智力因素,这在我们的软件人才打造方面非常重要,集体精神和团队的精神都要纳入素质轨道,你学历再高,不能跟人家合作就没办法把自己的力量发挥出来。
//蒋涛(《程序员》总编):就是现在信息化的社会和以前不一样,以前是几百人几千人供养一个很高级的人物,供养一个科学家。现在可能是一个科学家、一个天才的发明能造福几千人、几万人。像我们有了Google,围绕Google有众多的公司和人在生存。我最近看了一本书讲这样的理论,经济和所有的数据只有到了一个规模才会产生质变,到了百万可能质变。所以西方文明诞生在希腊是因为希腊第一次达到了百万级人口的城市就产生了民主和系分文明的灿烂。我们也一样,需要一个很好的基础可能就会出现更多的天才级人物反过来再推进整个行业的发展。现在我们的基础有点问题,我们百万的基础还有点不给,包括我们现在统计的数据和国家统计的数据人数是不够的。[br] 我拿到主题讨论的时候也讲到这点60%的企业没有对员工进行再教育和再培训的工作,这样必然出现一个恶化的结果。就是说这个人学的东西在公司里为工作而工作。他的成长要靠自己的摸索,这样我们很多技术都是重复建设,经验不能传承。我们在学校得到了老师的经验,但工作中只能自学成才,这时候就是个很大的问题。
http://blog.csdn.net/yesky12/archive/2004/11/30/199306.aspx
程序员发展规律--看『第80期IT沙龙实录:中国软件业人才打造模式之辩』有感
//吴功宜(南开大学信息技术学院院长)观点:
//周鸿祎(雅虎公司中国区总裁):第一是目前对软件蓝领的看法非常不认同,大家说像印度学习快速弄一批人进行专业的补习。认为这些人只要会写代码,再有人做软件系统架构,再有人检测bug 就可以了。我个人认为做软件应该还是一门艺术,一个优秀的程序员和一个差的程序员,因为是虚拟的工作,其劳动生产力相差绝对不是十倍二十倍,可能是上百倍、上千倍甚至无穷大。所以在软件领域,我们还是要呼唤一些个人英雄主义。我们跟Google做过很多交流,虽然他养了很多的博士,但其真正的核心程序员和核心代码的数量并不大。第二个观点,我看程序员杂志,我跟蒋涛也是很好的朋友,但我经常抨击他们的杂志。我说现在感觉程序员非常热中于作语言的研究,大家要把C语言C++语言或者一些更新的东西研究得更透彻,动辄就谈模式设计和软件工程,包括张晓明刚才也提到,我们公司的软件都是自己做,他们有多好的分工。我觉得现在很多程序员连基本功都不扎实,自己可能还没写过十万行或者二十万行代码,本身对编程还没有一个了解的时候,就开始上升到软件工程,动辄谈模式设计。连几个大规模的系统都没有设计过,我经常在相关杂志看到一些论道的文章,我对目前这种看法是比较反对的。第三个观点,我听到很多计算机系的学生都在抱怨中国计算机教育不好。这些学生说现在都流行JAVA,.NET了,各种嵌入平台,各种Server编程,我们学的内容都是老掉牙的,还是谭老师那本C语言。我的看法恰恰相反,我觉得作为计算机系的课程或者一个本科生在学校还是应该注重基础研究。换句话说我在方正管过很多的程序员,这么多年我们见到真正出色的程序员,其数据结构、编译原理、基本功一定学得很好,比如他不懂得Windows编程,但给他一周时间,他就可以快速理解,你一旦换到Linux上编程序,他的转换周期也不会很慢。我见过一些程序员很热衷于一些快速开发工具,整天追新,后来程序没写几个,自己的事业也荒废得差不多了。我觉得计算机系的教育还是应该注重基础学科其实所有核心的东西都可以向下分解成你在学校学的最基础课的一些基本的数据结构和算法。所以你的基础打得越扎实,将来这个人作为程序员发挥的能量或者说你能够做的高度越高,这是我第三个比较偏激的观点. 如果我们大学里都变成教最时髦的东西,我觉得大学可以不用开了,你们自己去订阅一份《电脑报》,或者互联网上什么新东西都有相信未来互联网软件在中国再做二十年,当风险投资,当创业理念和整个社会商业环境变得更好的时候,可能中国软件业肯定有一个自然的成长。就像你的体育,如果脱离了整个民族体育组织的提高,光去谈金牌我想大家是论不出金牌的,
//谭浩强:(计算机学习的三个层次)整个社会有三种层次,第一个层次是计算机普及教育,第二层次是计算机继续教育,第三是计算机专业教育第二个层次是计算机基础教育或者计算机技术教育。他面对大学生打下计算机应用的基础,比如一些语言、计算机程序设计、数据库第三层就要求大学学习很多具体的开发知识,比如C语言,C语言里没讲什么开发中的问题。这个教授的意思就说C是基础,因为你把C打好基础,以后做别的工作就非常容易,所以目前赶时髦的方法我是非常不认同的。来一个新的就学,就像狗熊掰苞米一样,所以要打好基矗而C++的本质是解决大型软件中的问题,如果没编过大型软件是不能体会C++的真谛我说C++可以分两个阶段学习,第一阶段在大学阶段打基础,第二阶段毕业后遇到问题,编程的时候再学C++,可能学得比较深入大学还是很重要的打基础的阶段,当然这个基础不能脱离实际,用不到的也学,还是要围绕将来所需要的打好基矗所以我认为这三方面是很重要的,就是要有定位。还有的考题考DOS命令,什么命令是内部命令还是外部命令,作用是什么?我说我也背不出来,会用就得了,所以现在教育的确有误区。
//吴文虎(清华大学计算机教授): 我们的软件老上不去,我认为不是我们的人不行,我觉得可能还是一种体制或者其他的东西困扰着我们。因为他很有兴趣,正像我经常讲的,如果他对一件事有兴趣,你让他钻研下去,他觉得是乐趣。对于程序也是这样,编程序本身可能是一个非常繁重的脑力劳动,很苦。但是他有乐趣,因为他的乐趣来源于其基矗我们知道计算机实际是数学的延伸,过去是手算,现在用计算机帮着算。计算机是由于数学发展之后,人们需要计算了,人脑跟不上了,不是人脑不行,人脑的速度不行,要用计算机帮着算,这时候我们才发明了新的工具。要把人类通用的智力工具掌握好,来解决我们在现实当中很多问题的话,这个时候他就感觉到数学的美。这个美是一般人体会不了的,在他很累的情况他有美的感受,有娱悦,所以他才有兴趣。我说,我要教的课应该是一个基础课,这个课应该是将来对学生一生都要有用的,主要讲构思、讲方法、讲概念,讲怎么编程序,它要建筑在什么基础上呢?我觉得学生第一重要的是语文,语文不过关,思维是没有逻辑的,落花都讲不利索,将来博士论文写不出来。谭老师有同感,谭老师能把书写好语文的功夫很大,没有语文能写好吗?数学也很重要,那是垫底的。s 我说你注意一条你的学习方法要改变,不能死记硬背,一定要按规律来学。你记住我的一句话,我说你不是听会的,你也不是看会的,而是你自己踏踏实实、认认真真动手上机实践理论联系实际学会的,否则我耽误你了。计算机的东西是理论联系实际最紧密的一个行业,一门学问你不动手是学不会的。理论联系实际。不动手学不会,就是告诉他这个基本原则然后加强实践,同时也讲调试。因为程序编出来不是唬人的要真的解决问题,人家聘用你,你去做的话必须把东西做出来才是真本事,否则是纸上谈兵。同时对于大学生来讲还有一条,一定要教他扎扎实实的一些基本功,特别是思想方法。所以把逻辑和抽象当做一个很重要的概念和训练,否则到了高层他就上不去了,我们基于对问题的解决,培养它分析问题和解决问题的能力,有很多东西不是我们老师在讲而是让学生自主研究、学习。激励他能够自己带着问题学,如果不会了,你就去研究,去探讨,合作研究也行,还要去看很多的书,很多的材料,包括组合数学、图论、集合论、人工智能搜索算法等等。很多东西都是提前学了,当然数据结构也是非常重要的。但是他们有一条好的地方,我认为他跟我们现在课堂的学习不大一样,他很会找重点,这些中学的孩子。他不是按部就班这本书看下去,不一定,他找到重点能够学就学到手,学到手解决新的问题,之后进行总结。总结完以后还可以写出论文,如果论文好的话我们就在冬令营里让他交流,而且有严格的办法你就报告十分钟,然后我们提问题五分钟最后给你打分,用这种模式培养他的科学精神、科学的方法。因此,我敢这样讲,这批孩子受到训练,应该说他的级别不是一般高考的人的级别。因为他已经会自学,自主研究问题。受过这样训练的孩子我给你举两个例子,有两个孩子清华毕业以后去了新加坡念硕士,他就按照这个模式一年里写了十几篇文章,一年博士就毕业了。这两个人一个叫黄高峰一个叫徐宙,一个去了英国一个到香港科技大学读博。这还不是我们最优秀的。所以我觉得人才怎么培养的确是一个大问题,这方面可以改革的东西挺多的。我见到很我人,我有这个感觉,很多做软件很成功的人不一定是搞软件的,很多人是学数学、学物理的,整个软件做得非常好的,带一队人马来做,因为他思维非常好。所以很多过于急功近利是这一阶段我们社会特别明显的特征。扎扎实实地做起,目标清楚,我将来想干什么,在大学中如何一步步地安排自己的路。其实有学生非常聪明,到后期有些学计算机同时学法律,这就非常好,将来打官司打不清楚就找他,所以我觉得我对大家有一个忠告,根据自己的兴趣,设计自己的路,然后提前准备,不要等以后找不到工作的时候再准备,那就来不及了。就是说不是计算机专业出来的成了计算机专家,原因何在?就是因为他是复合性人才,因为他本来有自己的专业,把计算机当做工具。尽管我学的课程不如计算机系的人多但是实用的,学一门用一门,经过累计在自己的领域中如鱼得水。而计算机专业很大的弱点是没有对象,只懂计算机,而这些人恰恰有这个优势,既懂本专业又懂计算机,将两者结合起来。我们的学习方法是对头的,不是拿本书看,那没用的。我们拿计算机来拆,去研究里头有什么,把核心的软件剖析一下,怎么写的,这样我就会Basce汇编语言了,我就可以去讲Basce和汇编的课了。为研究计算机怎么上显示器,我就去研究,当时我们的那台显示器是一台电视机,我就自己装一台电视机出来就会了,我就可以讲电视原理的课。我们是通过理论联系实际动手学会的。我要想把一个问题学透就给人课,我要给人讲不明白就说明我没学会我就必须去钻研。除了智力因素外我们强调非智力因素,这在我们的软件人才打造方面非常重要,集体精神和团队的精神都要纳入素质轨道,你学历再高,不能跟人家合作就没办法把自己的力量发挥出来。
//蒋涛(《程序员》总编):就是现在信息化的社会和以前不一样,以前是几百人几千人供养一个很高级的人物,供养一个科学家。现在可能是一个科学家、一个天才的发明能造福几千人、几万人。像我们有了Google,围绕Google有众多的公司和人在生存。我最近看了一本书讲这样的理论,经济和所有的数据只有到了一个规模才会产生质变,到了百万可能质变。所以西方文明诞生在希腊是因为希腊第一次达到了百万级人口的城市就产生了民主和系分文明的灿烂。我们也一样,需要一个很好的基础可能就会出现更多的天才级人物反过来再推进整个行业的发展。现在我们的基础有点问题,我们百万的基础还有点不给,包括我们现在统计的数据和国家统计的数据人数是不够的。[br] 我拿到主题讨论的时候也讲到这点60%的企业没有对员工进行再教育和再培训的工作,这样必然出现一个恶化的结果。就是说这个人学的东西在公司里为工作而工作。他的成长要靠自己的摸索,这样我们很多技术都是重复建设,经验不能传承。我们在学校得到了老师的经验,但工作中只能自学成才,这时候就是个很大的问题。