今天下午在空间看到有学弟学妹在空间发说说,吐槽我们的教育方式。作为一个大四老狗,觉得这篇文章里有一些观点,是我在大一大二也深有同感,但是到后来,甚至是开始实习的现在,才慢慢理解,这种看似挺蠢的教学方式背后的原因。之前也总能看到说说在问java到底怎么学,数据结构好难之类,结合今天这事就有了这篇文章。
嘿,我并不是有意去“杠”与我不同的观点,正相反,对于课堂教学质量确实是我也一直觉得很严重的一个问题,而就算对于题目的问题来说,我自己就是在大二时整个宿舍黑的最起劲的人。但我并没有在为课堂教学辩护,在这里只谈为什么会有这样的任务安排。时期不同会对相同的事物有不同的看法,这是很正常的,只是我想向学弟学妹们谈谈我的看法,尽可能少走一些弯路。很多学长学姐这么帮过我,我也会去尽力帮助学弟学妹,这是我对山大最爱也最认同的一点。
我们大一学了一年Java,为什么学数据结构要用C++,甚至老师还默认我们会了?!
这事,站在还算初学的我们的角度,看起来真的很蠢。甚至当时我们还没有C++这门限选,你能想象当时的意见有多大,结果最后也没有什么人来跟我们解答,让人忍不住去怀疑是不是教务编排课程组出了什么错,甚至我当时不无恶意地猜,学校是不是买错了一批C++版的书又退不掉要强卖给我们,加上老师上课又大多数时候在念ppt,真的很难让人有什么好印象。
不仅仅是数据结构,很多课程也有类似的问题,例如java课设,默认我们会了gui,io,网络编程等等(据说现在会讲,但我们那时候就直接上手了);操作系统,计组也是老师不想跟你说话并扔过来一个nachos,一堆芯片。这时我们理所当然会想,卧槽,这跟我学的真的是一个东西么。所以更进一步,我们自然会生出反感情绪,并觉得是不是实验安排的有问题。
事实上,有一部分实验老师、助教对实验的讲解也存在问题,例如讲解非常单调,基本不理会学生,评判标准不明确等,这就更加剧了我们的不理解和反感情绪。这些问题客观存在,但这些我们先不谈,我们先抛开这些偏见来看看,为什么课程组会给我们这样的安排。
因为想让我们学到更多东西
我打出上面这行字就觉得,如果我从这个点来谈,肯定是会被喷的。因为所谓“那为什么老师不好好讲”,“我自己想学什么可以自学”之类的论调,也是我本人的观点。关于这两个观点有三点避不开:资源,时间,自觉性。
资源主要是能教这门课的老师,这个可能缺乏,但如果出现这个问题,这也确实是学校的锅他得背好。
时间问题,上课,和自学是不一样的。上课是以学期为单位的,要指定教材和参考资料,课程安排也不会只教语法就算了,这种必修学校要求要有实验,而且于情于理,学习这种技术不做实验只背书根本也不现实。如果开一门必修课,是一定不会按照老师随便教大家随便学的模式的,必定会有各种实验考核、期末考试等考核形式来检验成果。大家可以想想,如果学校将C++限选改为必修,你们会有时间去学习吗?更别提之后的网站搭建必会的各种java框架,HTML,CSS,JS等一大堆要学的东西,如果每门技术都要开一门必修强制大家学习,那我们可能要像医学生一样要5+3了。
自觉性,试问大家,你知道了有C++这么一门很主流的语言,基本也没有不会C++的程序员,那大家有多少大一在空闲时间主动去学习的呢?如果数据结构用不到,有多少人会去学这么一门又厚又难学的语言?有多少人又能坚持到入门的级别?
因为我们需要学会自学这个基本技能
退一步讲,这样的安排真的就那么难吗?
我能理解大家的想法。当时我听到要用一门根本没学过的语言上课就被吓到了,不得已去搜c++入门,听人推荐就买了一本C++primer plus,一看见那本能砸死老鼠的书就更抗拒了。但是究根结底我在抗拒什么呢?我在抗拒新的知识吗?不,我只是懒和胆小而已。但是硬着头皮看了下去,惊讶地发现,除了指针之外,其他的也就是java换了个方法写,或者换个函数名,而指针在我们的课本基本用的也不多。于是偌大一本cpp,其实只看前五章,就能理解数据结构的代码了。而且如果认真听讲,实际上老师上课着重在讲思想,我到最后也没怎么看过书上的代码,其实不过是自己在吓自己罢了。
其实很多技术都是这样的。编程语言,这只是这条路上最最最基础入门的一道坎了,只要你掌握了一种,再去掌握其他的其实难度真的不大,不要被那一本本大部头吓到。后面的技术呢?数据库,计算机网络,操作系统,说起来都挺基础吓人的,你认真一步步看下去,难道真的一点都看不懂吗?再后面,图形学,信息安全,数据挖掘,人工智能,是不是听名字就得放弃了?如果只能写最基础的代码,到了企业连实习期都过不去的。
说到企业,在企业里难道要指望所有工作都是我们上课学到过的吗?这不现实。你的项目经理会给你一点时间去熟悉,但真的是“一点时间”,一周学习一门新的语言?不现实,最多给你三四天。拿我进的这家公司,再做银行的大数据项目,虽然我两眼一抹黑,还是被指派去搞了很多分布式大数据的一些程序,这之中只留给我一周时间去熟悉平台,应用的技术和代码。一开始绝望的不行,但慢慢做下去发现其实套上了很牛逼的名字的可能概念并没有那么难,而且实际上经理给安排的任务也是循序渐进的,八成是在考验我的抗压能力和学习能力。
哪怕读研,大四有很多同学是直接跟着导师的,导师会直接指派任务,让你学习一些你可能本科根本没听说过的东西,这时候你还指望有人能够一点点讲吗?很多前沿的研究别说中文书、视频,怕是只能看英文论文才能了解一二。
再退一步到面试的时候,难道对面只会问课本上的内容吗?难道你指望那些自学的很多技术、做过很多的项目的同学会不加分吗?
因为我们必须去学这么多东西
在深入到最根本的开始讲:我们为什么要学到更多?因为我们的“学业、技能”,在大学是有三个标准的:自我标准,学校标准,和社会标准。
自我标准是自己决定的,是对自己以后想做什么,拿到怎么样的一份薪水,过什么样的生活的的定位。
学校标准是课程组、老师给我们布置的任务,比如必修课,实验,也包括类似用C++教数据结构你要先学会C++这种要求。
社会标准是我们未来的“出路”给我们的标准,例如想去的企业对我们学校应届生的要求,想去的高校对研究生的面试要求,出国,甚至继承家业的要求等,根据个人对未来的出路的想法也会有所不同。
从这里看,高中和大学一个最显著的区别就是,在高中,学校标准是明确而强制的,其他两个标准接近不存在,因为只要跟着学校的课程去学习,去考试,获得更高的分数,就能上更好的大学,这也就是高中的几乎全部任务了。
但是大学不一样的。大学里很多人自始至终都不能从高中转换过来,一是学习方式,二是对这种标准的认识改变。在大学,学校标准不会那么明确强制,而应该尤其重视社会标准和自我标准。举个例子吧。
拿我大二时的自己来说,我的自我标准是实现物质自由,不再为钱和房子车子苦恼(现在已经降低到了不用加太多班……),学校标准我和大家一样,而社会标准是我想要工作去BAT这样的企业,或者专业排名前五的学校读研,那么他们的准入要求就是我的社会标准。简单看一眼就能知道自我标准是最高的,社会标准次之,而学校标准呢?它只需要每门必修都及格就好了,甚至不会去要求你考高分。之所以有人大学堕落,是因为他们只看到了学校标准,所以只追求及格,毕竟考那么高有什么用呢?甚至哪个标准也不看在眼里,只要玩就好了。
自我标准是我们自己来决定的,社会标准是我们选择的出路指定的,而学校标准是怎么制定的?学校标准是培养一个合格的、能配得上这所学校名声的本专业人才的最底线。对,请认清楚,它绝对不是所谓的“成神”标准,仅仅是一个“合格的最底限”。没错,学校标准合格足够我们找到月薪破万的工作。但这可能并不能满足你的自我标准,甚至是稍好一些的社会标准。
举个例子,拿社会标准来说,像是百度、阿里,再比如小米京东今日头条的笔试题,大三的同学可以去牛客网找一份来做,看你能不能达到他们的标准。想考研的同学可以参考下每年我们考研25%的成功率,想保研的同学可以百度下夏令营机试面试题和报录比,再看看你是不是满足了你的社会标准。
更高一点的自我标准,先拿大家可能没怎么想过又理所当然的房子举个例子,有较大互联网企业的城市基本在北上广深和杭州苏州,前五个不必多说,拿苏州3w一平的房价举例,100平的房子不算装修要300w,首付40%是120w,假设22岁毕业,30岁前买房每个月就要存1.25万,还不算房价上涨。别急,买了之后房子还有贷款要还呢,要还多少呢?还30年算,每个月要还超过一万。至于之后的车、婚礼、孩子奶粉钱呢?如果你的月薪刚刚破万,这些压力也足够让你和你的家庭远离诗与远方岁月静好了。
是的,这个社会是那么现实而有压力的,到你面试的时候,难道还要向企业抱怨,我们这些都没学过,是我们教育体制的错,是你们用人单位招聘制度太高的错吗?现在回过头再看看数据结构让我们多学一点C++,而不是顺着java讲,你会有什么体会。