说明:在校大学生处于打基础的阶段,但应用能力的提高却也是一个大事。其实,基础和应用的本界限不应该是分得非常清楚的,许多同学犯了“两阶段论”的错误。只有二者交融,才能成就完美大学。不过,对于学习特点和学习目标不同的学生,也不必是采取相同的路线。在拙作《逆袭大学——传给IT学子正能量》中,在这方面写了不少文字,现将其中的9.4节全文摘录在此文中,以供参考。
更多话题,见《逆袭大学——传给IT学子正能量》全书目录。
第9章 让专业学习更有效
9.4 基础和应用的平衡中找到大学的节奏
在学习目标的追求中,专业基础理论学习和实践应用能力提高是一对值得关注的话题。这一对关注,可以简称为“基础”和“应用”,这也是我们日常口头交流时的表达。在领域中长期立足,保证专业“科班”教育成色,在终身学习的年代能够轻松应对技术的不断发展,这需要扎实的专业基础作支撑。而在市场中能自由择业,为社会创造财富,为自己赢得美好生活,学有所用,过硬的应用能力也不能忽视。单纯注重基础或应用的学习,都不是一个理想的选择。大学生需要根据自己的目标,把握好两方面的度,找到适合自己的平衡点。
基础与应用兼顾的三种对策
这里我想列出三种可以采取的对策供大学生参考。在图11–1中,深颜色代表着较高的重视程度,中心的小圆代表着专业基础的核心(可以简单理解为专业基础课程),而外圈的大圆代表着应用波及的范围。与我二十多年前学习计算机软件专业时学过的课程相比,专业基础课的结构没有太多的变化,但应用方面,变化的幅度却不可同日而语。
图9–1 专业基础和应用能力兼顾的三种对策示意
这三种对策是:
(a)面向应用,兼顾基础:适合在课外学习中能够放得足够开的大学生。专业基础的学习要达到基本的要求,在对众多方向的广泛涉猎基础上,见多识广的优势保证了其强大的适应能力,借此而来的悟性将会弥补在基础学习中投入相对少的劣势。选择这种对策的危险在于,有人放得太开,以至于课程的及格与否都放开了,就业的能力倒不在话下,但严重者都无法保证拿足学分,获得毕业证。
(b)强调基础,适当拓展:这是一种在现行高校教学体系下更常见的做法,也是大学生延续以前的学习习惯最容易实施的方案。这种路线的优势存在,但执行过程中需要更有耐心和毅力。执行好了,造就具有非凡竞争力的人才,而执行不好会陷入没有特点、能力一般的纠结中。要注意向应用层面的扩张,而不要只守着一些课程的要求,在理论的圈子中死学。
(c)打好基础,加强某一应用方向求特色:这是我比较推崇的一种现实的选择,扎实的专业基础保证基本功与扩张力,而有选择的应用方向,让基础学习有了体会的机会,并形成了顺利就业,以及事业成功的入口。
大学四年的节奏——基础和应用的均衡
无论是谈到基础学习还是应用提高,总有人将这个问题与大学毕业后的出路方式联系在一起。一种典型的说法是,考研的,学好基础课,要就业的,多做些应用。这样的说法有点道理,但不少的人在实施中却忽略了平衡:考研的,不管应用能力的培养了,而决定走出校园就工作的,基础知识成了鸡肋。这样的选择听起不可思议,但在现实当中却是很多人选择的真实情况,后果就是有人考上了研究生,眼高手低,在进一步的学习中找不到落脚点,而就业了的,只能去做一些表面的工作,遇到核心的技术问题只能绕开。
有不少的人提议大学生应该及早确定目标,有很多学校也在开展大规模的所谓目标导向或者目标牵引一类的“工程”帮助大学生找到目标,并按照规划的路径安排学习。但现实情况是,经历高中应试教育的大学生在进入大学之后,短时期内视野不能打开,甚至连确定大学目标的能力都不具备,盲目地听信各种各样的说法。而遇到不一致的说法时,却失去了自己的判断,陷入迷茫不能自拔。
为了让基础与应用均衡发展,为了让学生有能力自己做出选择,
我一直提倡的大学生四年的学习节奏是:大一大二是夯实基础和开阔视野期,大三大四是目标实现期。大二结束大三开始的那段时间确定目标,而目标中必须明确主要的应用方向。
大学前两年的学习还不到面对现实的时候,可以投入足够的精力搞清楚专业中的基本问题,并且为选择做好准备。大学低年级的同学,可以将“是否有用”的问题留给未来,在尚不能回答某问题之前“傻傻地”学下去,为给自己回答问题留下机会。在这样一个夯实基础的时期,保证基本学业,可以追求高分。然而,这也并非追求高中式的学习,要按照培养方案学好基础课和专业基础课的同时,务必学会安排课外学习并获得体验,包括广泛的阅读、一定量的社会实践、社团兼职等。对于专业涉及的方向,可以多方出击,广泛涉猎,为此不惜每个方向上都蜻蜓点水,浅尝辄止。在这个过程中,基本的实践能力得到提高,多方的体验以及由此打开的视野将给大学后半段的选择,以及长期目标的确定提供足够的依据。
这样,在面临选择的时候,是真正地能够按自己的意愿选择的。相对于前两年走了极端稀里糊涂地度过的人,这就是一种自由。对确定要就业的,基本能够确定要从事哪个专业方向的工作,可以是为着当前的高薪、未来的前景,或者是纯粹自己的兴趣;对确定要考研的,知道为什么要考研,大致清楚将来要深造的研究方向,更远地,规划出在研究生毕业之后的去向,而支撑长远发展的基础知识,已经在不考虑“实用”的学习中获得了。
大学后两年的时间,学校的约束逐渐放松,到了分方向培养的时候。大学生需要选择一个专业方向形成自己特色。这一点,在各个学校的培养方案中都有体现,有相应的专业选修课给予支撑。这也恰是大学生完成了个性选择,在具有扎实的基础之后,各自朝着属于自己的方向前进的时候。个性的自主性学习的空间变得更大,有的是一番扑腾的天地。
要就业的,需要确定一个就业方向,知道希望从事的岗位的要求,并且将针对岗位要求的学习体现在课外学习中。争取在进入求职季的时候,在真正提高应用能力的同时,做出一个能够让人看的“产品”,这也是在就业面试时的一个“敲门砖”。与此同时,即将就业,并不意味着基础就此可以放松了,此时的专业课程,恰是进入实用的阶段,有些专业基础课程,正是基于已有的体验能够深入进去的时候。从求职的角度,大公司筛选求职人员的笔试题目,体现的是专业基础和专业核心能力,专业基础课中的那些问题搞不明白,没有办法胜任高级技术工作。
确定考研的,应该对研究生考试加以关注,有些基础课的复习要列入日常计划。要考研的大学生切莫将复习那几门课当成了全部的学习,在备考之外,也要进一步了解选择的研究方向,继续提高实践能力。在研究生入学考核环节中,面试所占的分量越来越大,具备较强的实践能力,是取得研究生入学资格的必要,也是自己真正成长的需要。在研究生的面试环节,如果能谈论起对研究方向发展的话题,这不是盲目考研的同学能够做到的,怎么能不令导师动容?有了这样的学习和准备,也让本科、研究生阶段的学习的延续性更好,综合能力的提高可以持续下去。
以大二、大三为分界的两段学习节奏,与有些同学只顾一头的学习安排相比,要多付出不少的精力,掌握平衡中需要拿出更多的聪明才智,但这是在各种不确定中将自己的命运真正掌握在自己手中的需要,其实,安排得当,两方面相互促进形成的合力会推动着人前行,1+1的结果大于2。
如果说在大学前接受的是一种完全受控制的教育的话,在大学中,一定要有节奏地将自己放开来。在大学低年级受的约束多,却也要开阔眼界,多方涉猎,为选择做好准备,而在高年级时清楚地做出选择后,有重点目标,但也是整体推进。毕竟,无论怎样的选择,人的成长是根本,在任何时候都不能将自己交给单一的“出口”。
在很多年前,有个关于大学的说法:“大一不知道自己不知道,大二知道自己不知道,大三不知道自己知道,而大四知道自己知道”。这种说法很有道理,描述的是一个完美大学的轨迹。以大二末大三初作为分隔点,做好“不知道”向“知道”的过渡,用投入的学习给自己做好选择的准备,进而能够享受由正确选择而带来的知识、能力的积累。
回顾“习而学”,大学的培养方案是否能够,或者可能按照茅以升先生的建议设置,并不是一个可以轻易下结论并实施的事。于大学生的学习而言,在基础与应用之间保持着平衡,可以发挥“习而学”在个性化的课外学习安排的效力。大一大二的多方探索拓宽了“习”的空间,在高年级沉心下来的“学”中得以升华。为了考研、就业中面试,或者考证的需要,高年级时,需要系统地将学过的基础课及专业基础课再去复习一番,这时不仅是要奔着考试去复习,而且是完成学习之后再提高的轮回,那自然是另外一层的境界了。
以实践入手,打开基础学习的大门
在CSDN对我的专访中,我比较全面地阐述了我带领学生开展的以实践为主线的编程学习过程。有人发表了评论:
大学重点学的应该是基础,不是你那些所谓的为了完成工作而学的项目经验。什么是基础?重点是数学、英语,接下来是计算机组成和操作系统。这个老师太重点强调企业需要的东西,而不是作为一个大学生本质应该学习的东西。
有跟帖赞同这一观点:
我完全赞同你的观点,我之前是一名计算机专业的专科生,大家都知道专科生与本科生的差距就在于基础知识(数学、英语)与计算机理论知识(操作系统原理、编译原理、计算机网络等)。大学期间做过不少项目,当时自认为不会比本科生差,但随着学习的深入,越来越发现到基础的重要性。有时候看一些别人写的源码,发现如果是我自己写的话有多么繁琐,而人家用到了数学的知识,一个繁琐的算法原来可以这么简洁优雅。有时候一个问题硬是不懂,去网上问别人原来涉及到一些内存管理和操作系统的知识。记得有一次听一个大公司项目架构师的演讲说道:“写代码、做项目,你们与一个高中生甚至一个初中生没什么区别,区别是你们大学学得的知识以及锻炼的逻辑思维和自学能力。”如果你只想当一名coder,基础知识你甚至可以不学。如果你想当一名软件系统的设计师和架构者,数学和计算机基础你必须要会。”
评论中还有一些难听的话我没有摘出来。但是,说实话,我也赞成他们的观点。在IT界能够高薪,能够不惧技术进步和发展,能够站在重要位置上的人,就是基础扎实的人。在基础中吸取了抽象之精华的人,心中有放之四海皆可用的知识和思维,这比任何的具体技术、技能更重要。
然而,在我的课程当中,我还是带领我的学生热情地投入了实践,在我的咨询当中,也不遗余力地推动大学生将以实践为主线的课外自主学习进行下去。我期望用这种手段,让学生们能够快乐地进入到这个圈子,快速地了解行业中的话题,了解专业和方法,最重要的是,要知道编程背后还需要什么。我推动实践,但不轻视理论,大学生有了充分的实践,才能够注意到基础知识和思维训练的重要意义,才可以将理论视为非常鲜活的知识。如果没有深入实践的过程,对大多数人而言,学习理论将是个枯燥困难的事情,没有经过亲自体会获得的感性认识,理论学习的效果也不能得到保证,甚至有人永远不明白理论的作用。必须找到一种途径,让每一位学生都能自发地认识到基础的重要性,找到理论学习的入口。这条途径就是实践。
至此,应该理清的思路就是:大学生应该要打好基础,但学习目标还是实践能力;为了保证基础学习的效果,需要用实践打开通道。将基础和实践两方面都做好,这就是“两手都要抓,两手都要硬”,这是一个现实的选择。
课外的自主性学习的路线
大学生从中学走进大学,由完全由别人管着学,要过渡到完全能由自己安排学习。在大学低年级,学习的主要内容是专业基础课程,可以由别人管得多一些,而高年级重点在于应用能力的学习,需要更个性的成分多一些。大学不仅要有受限的课内学习,还要有自主的课外学习。课外学习异常重要,也是大学生把握的难点,在此将我观察到的成功学习路线作一归纳。
第一条自主性学习的路线:先重基础,再重应用,如图11–2所示。
图9–2 先重基础,再重应用的自主性学习路线
由于我们是希望获得“双丰收”的,所以用两个“重”,也暗指要兼顾。重基础的阶段,并不完全弃实践,而重应用的学习中,基础同时也在融合,基础好的优势会体现出来,应用也能做出水平。我提议入学时专业学习兴趣本身就很浓和起步学习顺利的学生走这一条路线。由于先期投入的学习中没有应用开发中的那种“热闹”,这样做的同学需要耐得住寂寞,知道这样做的价值。由于基础扎实,一旦开始在后期重实践的历程,马上能表现出更快的学习速度,得到质量更高的应用成果。从时间角度,我建议大一大二重基础,标志是参加过一次ACM竞赛,不管是学校组织的选拔赛,还是有机会代表学校对外参赛,都是一次很好的经历。有些同学选择在高年级参赛以求获得好成绩,但可以在低年级时打足基础。到了大三,转入重应用开发的阶段,由于眼界相对开阔,入手点可以与感兴趣的专业方向紧密结合,可以将应用的学习,与未来求职中有意愿的岗位结合起来。
第二条路线,先重应用,再重基础,如图11–3所示。
图9–3 先重应用,再重基础的自主性学习路线
在现实中,有些同学在对专业了解不深的情况下,一定想迫切知道计算机“这玩意”到底能做些什么,声称不明白学着不带劲。其实就有一大批所谓迷茫的同学就在此徘徊,那就在先重应用的课外学习中获得体验好了。应用的内容可以始于做一个个人主页、班级主页之类的网站,可以借助一些外部的目标,如参加学院组织的网页设计大赛之类的初级的竞赛,以及各种“软件设计大赛”等之类的门槛不算高的竞赛,逐渐可以考虑参加像微软、阿里巴巴等企业组织的应用大赛。走这一条路线的同学需要明确,这不是说课内学习的基础可以先不必重视,课外自主的应用学习安排,是建立在认真完成课内学习要求基础上的。这样走到高年级时,适当的时候可以往提高基础理论的路子上走一走,方式可以是将投入应用学习期间有些应付了的专业基础课复习一遍,或者也去做做ACM题目,做一做一些大企业,如微软、谷歌的面试题等。一段时间的“淡定”,将换来丰厚的回报。我的学生中,有不少的优秀学生就是这样做的。在大一刚刚学习程序设计后不久,觉得编程语言很能干,试图做一个能用的程序出来,发现不少功能的实现需要API的支持,于是利用某平台提供的类库,适用的软件包,开发出了一些好玩的应用,激发了学习的兴趣,也找到了信心。在眼界大开之后,意识到了算法和其他基础知识的重要意义,转而沉下心来,在向专业基础的方向发力了。要重视基础之类的话老师经常讲起,但我的学生们说“只有自己亲自体会到了,才有如此的激情投入”。
除这两种路线以外,我观察到,还有些学生的自主学路线以学期或更短的周期,根据实际情况在基础和应用之间交叉安排。有些学生,喜欢开发应用程序,他们的自学中,不断尝试不同的技术,在不同的领域中开展体验,毕业求职时选择面很宽,在工作中也将是个多面手;有一个学生L,他一直喜欢计算机科学,他的自主学习的主要内容就是专业基础理论,并且将触角伸到了本科生常不关注的复杂性理论层面,他也写了不少代码,但以操作系统层面的代码为主。大学中需要有自主性学习,这些都是不错的安排。在大学,把握住了课堂,课外又能有效安排好,这样学出来的,都是人才。
在课外的自主性学习,最忌讳的就是,常想学,但总不起步,或者在走出第一步时就顾虑重重,让自己总是停留在是否要走出第一步的阶段。只要起步了,视野拓宽,就会不断有新的想法产生,能触摸到适合你的“下一步”学习的内容,从而能够一直走下去。
还有一些同学,在迷茫与放纵中停留过久了,以至于到了高年级,在别人基础扎实开始明明白白地在自己喜欢的领域中左右逢源之时,他才开始起步。面临着即将到来的就业压力,开始感觉到了恐慌。这时,重应用的自学路线成了唯一的选择。由于时间关系已经不能够补上足够的专业基础,再去学习应用了。由于基础差,实践不能够太深入,入职时选择岗位的自由度会减小,这就是代价所在。至于专业基础方面的缺陷,只能寄望于工作以后的自主学习了。
==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》 ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |