学生的困惑,我的释疑

来源:互联网 发布:数据科学专业就业方向 编辑:程序博客网 时间:2024/04/29 06:13
 
在有了10年自学计算机技术的经历和近几年在高校讲授程序设计系列课程的经验之后,我一直在思索以下几个问题:
1、软件到底是怎样开发出来的?
 2、编程是难还是易?有没有能让编程功力暴长10武功秘笈
 3、一个有志于成为优秀软件工程师的人应该怎样学习计算机技术?
 4、用什么方式才能让许多学生很快地学会特定的计算机技术,而不用重复我和其他人所走过的弯路?
 
在我自己亲身的学习与开发实践中,逐渐形成了这么一个观点:
编程其实并不难!
要编程并不需要到大学计算机系里去学很多艰深的理论,经过适当的指导与训练,一个高中生就可以参加到软件项目团队中,并写出具有相当质量水准的程序!
 
为什么会有那么多的人把编程视为很高深的东西?
为什么我国那么多的软件企业深感合格的程序员是如此难找?
与此同时,又有与之完全对立的情况:每年有大批计算机及相关专业毕业生四处求职,却处处碰壁,找工作成了一件很不轻松的事情,就业率成下降趋势……
 
一边是真正合格的程序员人数很少,软件企业都在喊急缺人才,而另一边是大量的学生毕业找不着理想的工作。这样一个怪圈为何会形成?
 
我想,造成这个怪圈有两个重要的原因。
一是学生学习方法与态度的问题。
由于对软件开发这一工作本身缺乏正确认识,许多学生形成了一种浮躁的功利型学习方法,表现为盲目地跟风学习各种当前流行的新技术,但大都只是三个月热度,由于欠缺毅力和不具备扎实的理论与实践基础,对这些新技术无法深入把握,浅尝辄止,坐而论道,讨论时可以滔滔不绝,一到动手则原形毕露。许多人没有想过:现在流行的技术,难道就会一直流行下去?曾经风光一时的FoxproPowerBuilder,国内曾有许多人(包括本人在内)投入大量的时间去学习与掌握,可没过几年,还有几个项目是用这两种技术开发的呢?所以,如果要新技术,也只能去学预计两到三年后社会急需的技术,这就需要学习者有超前的眼光。但软件技术进步实在太快,很少有人能够准确预测出几年之后会流行什么。所以,与其临渊羡鱼,不如退而结网,选择一项自己喜欢的领域,从理论到技术,扎扎实实地用两到三年时间去学好它,在学习过程中培养出捕鱼的本事。有了这种自我学习的基本能力与素质,还担心出海捕不到鱼吗?
有一些学生投入相当多的时间与金钱去参加种种有着各种动听承诺的电脑培训班,指望别人能够帮助自己成为技术高手,却不知真正的高手大都是自学成才
更有太多的尤其是非计算机专业的学生,盲目地去考各种认证,不管是国内的还是国外的考试,只要有证,就有大批的人去参加。他们把应用计算机技术的能力简单地等同于一纸证书。当前的计算机等级考试就大有成为高校中第二个英语四六级的可能性。事实上,你向别人展示自己写的一个软件作品,比给别人看一堆各式各样的证书更能说明你的能力!
 
造成怪圈的第二个重要原因就是计算机教育问题目前高校中的计算机教育并不能大批量地培养出合格的软件开发者,学生在四年本科期间计算机理论学了不少,对培养编程能力却重视不够,缺乏实践的结果是理论也掌握不好,学生的计算机水平被煮成了夹生饭
除了在校的大学生,社会上还有大批的软件开发爱好者,他们由于没有机会系统地学习软件开发技术,就采用自学和自我实践的方式,结合自己的工作来应用学到的计算机技术。虽然他们没有在校生的优越条件,但其中优秀人物的真实开发能力远胜于正规高校计算机专业科班出身的本科生甚至是硕士生。这种例子已经很多了。
职业选手不如业余选手!(大家要警惕了)
我自己是走理论化+野路子出来的,走的是以实践为主导的自学之路,从亲身实践中深切感受到计算机科学本质上是一门实践性非常强的科学,不管是在校学生还是社会上的软件开发爱好者,我的建议是:
实践就是最好的老师!
另一个需要强调的是:
编程是一种技能,就同学习外语一样,绝不可能速成
我从2002年开始接触.NET技术,并一直研究使用至今,并写了几万行的.NET代码。在对.NET有了一定的了解之后,我认为.NET技术是初学者学习软件技术非常好的切入点,学习者可以一步到位,直接学习目前主流的面向对象软件开发技术,而不用按部就班,按传统的先结构化编程再面向对象编程的顺序去学习。
所以我极力推荐大家从.NET入门去学习编程,让编程不再那么神秘……