三年的实践与思考之二——未来软件产业教育之我见

类别:编程语言 点击:0 评论:0 推荐:
csdn的编辑们:     你们这次搞软件学院3周年活动。我作为一个曾经在上海大学计算机科学专业学习过4年,工作3年后又到同济大学软件学院软件工程硕士班学习的人有很多话想说,特别是关于教育,可能篇幅有点长,但是还是请你们还有所有网友能仔细看看,看看其中有没有道理,也作为抛砖引玉,引起大家的讨论。     首先说软件产业本身,我个人认为目前的发展趋势是软件产业甚至整个it业都在从一个新兴高科技产业朝成熟的传统行业发展。以往热热活活的电脑城里装机的中小店铺的生存空间正在逐步萎缩,而几个大厂商主导pc市场的趋势已经越来越明显。pc这个东西也渐渐被归类于家电类产品中。软件产业自身也是如此,随着大学生大量涌入社会,从业者的人数不断增多,开发工具性能的不断提高,行业中优胜劣汰情况的加剧,对于软件从业者本身的定位也要有个全新的认识。软件工程师这个工作我认为从本质上讲和其他工程技术类工作没有任何差别。我们是程序员,不是宇航员、突击队员。这个要求我们能放下自身的架子,以一颗平常心投入到工作学习中,投入到与其他行业从业者的沟通当中。     对自己的要求不必调的太高。现在提到软件工程师或者其他相关从业者的要求,动辄要有多高的要求,撇开掌握几门开发语言几种数据库技术不说,又要有良好的团队合作精神,又要有扎实数学功底,又要能吃苦耐劳,能经常加班承受工作压力,还要英语日语好。老实说,世界上恐怕很难找到一个人能同时满足那么多要求。这么高的门槛不但增加了人才的培养难度,提高了培养成本,客观上讲也给软件开发人员与周围人之间的沟通制造了障碍。要求调的越高对自身和周围环境的期望值也越高,一旦难以达到,就陷入自怨自艾或者怨天尤人,也不利于健全人格的养成。     随着大学扩招,还有大学生就业压力的增大。我们的大学教育思路要有所改变。以往是“精英教育”,国家把有限的教育资源集中到少数尖子上,强化培养后优先配置到重要部门上。今天再走这个路就不行了,因为学生多了,学习基础,接受能力有好有差。真的再搞“精英教育”,搞强化培养,凡事强调教多点,教深点那就要把很多学生拖死拖垮。尤其是软件行业的教育是面向工程应用的教育,不同于数学物理这种理论性强的教育。我的意见是先解决一个“会用”的问题,然后有余力的学生再往深层次发展。     我以前在上海大学读计算机本科时,老师往往强调学生要多关心底层的东西,关心基础的东西,关心编程技巧。web技术课上老师教html语言时要求学生只能用记事本写不许用开发工具。出发点是好的,但我个人认为不足取。计算机发展已经有50多年了,底层的东西错综复杂绝不是靠一个人钻能钻透的。真的让学生花费大量的时间精力死钻恐怕是事倍功半。我们那批培养出来的学生老实说都有点比上不足比下有余(和他讲底层的东西也稍为懂点,和它讲上面应用的东西他也稍为懂点,可都不多),不能不说和这个思路有关。另外当时的计算机教学有点贪大求全,四年里要求修完330个学分不说,许多科目的开设现在看没太大必要,像《近世代数》、《故障诊断》这类课作为讲座听听可以,可真的当门课学过于抽象难懂,意义不大(本科阶段作为讲座,移到硕士阶段仔细教更合适)。说数学能锻炼人的思维,可是也要讲个方式方法,《高等数学》、《概率论》和高中数学落差很大(又牵扯到教材老化的问题),需要配给更多的课时,更详细的讲解和习题课训练才能有好的效果。否则一到考试半数人不及格,对学生的自尊心也是不小的打击(进大学的学生在高中都还算可以,再差不至于考不及格。凡是不能把责任都推到学生头上,出问题就说学生不努力不公平,其实这样的事情是教学制度方法和实际脱节的表现)。     我的意见是: 1。现在大学本科教育是大众教育,不能再搞得那么深那么难了,应该削减那些太冷僻的课程。把学分数降下来(从330降到250个),把师资和课时还有设备都集中到最重要最基础的和一些面向应用的课程上面:《高等数学》、《线性代数》、《数据结构》、《汇编语言》、《pascal》、《软件工程》等等。 2。定位要清楚,我们的同学有很多毕业后一直处于盲目跳槽的状态中,跳一次迷茫一点,最后自己也搞不清自己能干什么。这是自身定位不明的表现,我们的学校老师在学生报考这个专业之前和学习的整个过程中就应该让学生明确自己未来的大方向。计算机本科学生毕业后撇开考公务员当教师出国读硕之外,大多数都面向应用,或进入软硬件公司搞面向应用的开发测试(软件开发为主),或做系统管理(比较少),或者成为市场营销人员。软件工程硕士毕业后正常的话应当能成为项目组长,项目经理这样的管理人员。一开始工资不会太高,因为人才市场目前是买方市场,所以跳槽要慎重,特别是那种外地到京津沪的同学先站稳脚跟再进一步发展比较合适(这也是没有办法的办法)。另外劳动保障很重要,有的公司(国企居多)虽然工资不高,但是“四金”基本能到位,劳资关系也还可以。相对个别外企还有民企做得不太好,这些都希望同学能注意。学校在计算机本科教学时也要考虑到it业细分的趋势已经越来越明显:软件硬件,软件下面还分软件开发、测试、系统管理等等,彼此有关可是又有很多差别。教学时也要因材施教:系统管理的侧重于数据库、操作系统、网络技术;软件开发侧重于编程语言。关键是课程要成套成体系(以往的课程太多太散,不成体系)。到研究生阶段也是如此,各有侧重。定位问题不仅仅是学生的问题,学校也存在这个问题,甚至一门课也有这个问题。我在读同济大学软件工程硕士时遇到过一件事:数据库管理技术这门课到考试时要求学生完成笔试,上机考试和两周内做完一个项目。结果很多学生都要在工作之余又要复习应考,又要作项目,搞得很累。这个就没有考虑到在职硕士的特点。另外这门课本身是教数据库管理的,作不作项目老实说意义并不大。。 3。教材课制的设置也要符合现实的要求。太落后不好,太超前也不好;太浅不好,太深也不行。很多教材老化严重(说不过分的我们的同学很多不得不用他们出生之前就编好的教材上课),要及时更新。现在软件开发早已离开指令驱动模式,正在从图型化编程朝统一建模编程(uml)甚至规格说明语言编程(z语言)的方向发展。我们的教材如果不及时跟上的话就要误人子弟了。包括谭浩强老先生的《c语言》也要考虑与时俱进,加进图形化编程的内容了。一些比较超前先进的技术(uml,z语言)我觉得给本科同学讲讲还是有意义的,可是要注意深度要把握住(入门即可)。还有每个大学都有《法律常识》,但是内容还是仅限于介绍宪法、刑法的基本知识。对于和大家关系密切的《劳动法》、《合同法》、《公司法》却没有什么介绍,这使得我们的同学毕业后面对部分黑心老板的压榨束手无策。现在很多大学尝试用英语教学,用英文原版教材,但是要注意学生接受能力的差别,有的学生英语基础本身不好,再用英语教学效果恐怕不乐观,那就得不偿失了。还有课制,很多大学尝试用三学期制,但据我在上大的经验,三学期还有很多不成熟的地方,冬季学期中间(第6-8周左右)有个春节,所以往往上到一半只好放假,回来后草草上个2周就考试,对师生的适应能力要求很高。 4。影响学习质量的因素很多,后勤保障和学生工作务必要跟上。以上海大学9*届计算机科学系的经验来看,毕业时150人中据说有34个人不能按期毕业,我在的那个班级26个人,未能按时修完学分、英语四级未通过的最保守估计也在11个以上。这个数目不包括不及格学分超过32个(上大规定,不及格学分超过32个失去学士学位,这个规定是否合理值得商榷)的。教学质量这幅样子(当然也从一个侧面说明课程难度很大,淘汰率很高,能认真学完的学生都是好汉),除了上面的原因之外,一个原因是在院系调整中,这个系搬迁频繁,学生学习环境变动很大,当条件变差时不及格率直线上升,此外因为种种原因当时这个系和同学院友邻系关系也不太好;还有一个原因就是大一大二学生工作老师不是很尽职,开始放任自流,等到后来想抓已经来不及了,以后其他学生工作老师都没能扭转局面。所以说一个能帮助学生走出学业、恋爱阴影的老师起到的作用不比一个名教授小。 4。如何对待作项目多少这个问题。很多人都觉得做的项目越多越好,其实不然,如果项目管理方法不规范或者陈旧过时的话,那么作再多的项目都是简单低级的重复,除了对某一门编程工具熟悉之外没有任何好处(还浪费程序员宝贵的精力,使他们后劲乏力)。现代软件开发模式已经由瀑布式开发过渡到快速原型法,并进而向基于构件的开发方法,形式化开发方法和第四代技术(4gl)的方向发展。对技术人员而言,作项目要有目的性。力争每做一个项目都能在开发方法,开发流程上有所收获有所创新。就是把软件工程原理结合到项目开发的实际中去,用理论来指导实践,再用实践丰富理论。如果手头暂时没有项目作,那也要善于找些项目作,并且力争把最新的软件开发模式,最先进的软件项目管理,需求分析,测试工具(rational rose等)用起来(例如有的项目就用uml技术完成架构设计再正向生成代码,不一定非要自己做完,关键是完成架构设计)。初学编程的大学新生可以先从做网页开始,就用frontpage或者dreamweaver做。虽然编程的成分很少,主要是剪剪贴贴,可是入门容易,图形化的成分多,符合软件开发图形化构件化的发展趋势,另外多个网页如何组织也有助于培养新手的项目整体意识。如果后台连个数据库那么一个b/s系统的雏形就出来了。 5。一些好的习惯争取在读书时能养成。一个是尽可能少用盗版。这是职业素质的表现,现在我们没办法做到百分之一百用正版,但还是要在力所能及的范围内支持正版。金山词霸68元一套(还送30元购物卡),fedora68元。很多公司网站上有免费试用版,opensource中从开发工具到数据库应有尽有(且很多跨平台的)。多用用这些软件有利于扩展视野,减少对个别外国公司的依赖有好处。特别是java技术可以很方便的移植到linux上,这对于将来要跨平台开发的人大有帮助。我得原则是能用正版尽量用正版,没有的话找替代品,非到万不得已别用盗版。 6。对于中国软件产业近期的情况。我不报太乐观的希望,总体上处于低潮。软件产业发展需要有规范的市场环境(起码少点权钱交易,少点暗箱操作)和一定的技术积累,这两个条件我们都没有.所以我觉得任何有志于中国软件产业的人现在应该韬光养晦,专心致志,力所能及的搞些技术积累为下一次高潮打下基础(很多事情我们只能等待忍耐,市场环境净化是需要时间的,也需要从我做起),别忘了“星星之火,可以燎原”。还有国家在软件产业发展方向潜力都不明确的情况下最好不要太多的投入资金,免得血本无归。退一万步说软件业发展要服从大局,比我们更需要钱的地方有的是。     最后,我想特别强调的是,我工作3年,接触了不少名校师生。感觉能力都还行,就是身上的娇骄二气要克制一下,要么以名校非名校为界拉帮结派,要么面对别人的批评气势逼人。随着大学扩招,名校和非名校本科学生素质差异相对缩小,况且教学上也没有本质上的差别,真的走进单位论个体很难说谁比谁绝对强。另外自尊心太强反而会给自己加上太重的精神负担,也在人际交往中设定了障碍。对于非名校同学而言,只要努力加上扬长避短,灰姑娘也能变成白雪公主。     以上就是我对于未来软件产业教育和发展的个人看法,讲的比较长,希望大家能仔细考虑我说的有没有道理。最后祝所有热心于中国软件业发展的同志,朋友们还有中国软件业能交上好运一路顺风。也把这篇文章献给上海大学计算机科学系97级所有师生们,我真希望他们能看到这篇文章,我想告诉他们:“你们是好样的”。                                                                                                                                   [email protected]                                                                                                                                 2004/08/29深夜

本文地址:http://com.8s8s.com/it/it28224.htm