原文:让我们暂时远离业界,回到校园……
回复好多啊,本想直接回复大家的回复,结果写着写着发现太长了,所以还是单开一篇吧!我保证就这个论题,我的陈述到此结束,不再多说了。
首先,我想我并不是在抱怨某个学生,我是在抱怨这个教育的环境、体系以及学习效果的评估过程。
首先说评估过程,这个评估过程评估的并不是你日后进入社会的适应程度、评估的不是你的自学能力、也不是其他一些公司比较需要的能力。他评估什么呢?评估的是:
1、你学习课本的知识记住了多少,但很可惜,课本有点太旧了,而且这个能力可以被下面其他几个能力替代;
2、你Copy&Paste的能力;
3、你混过去的能力;
4、你后台的硬度;
5、你与导师的关系;
6、当然,即使你上面的这几样统统不行,通常是不会毕不了业的,只要你还有不犯大错误的能力就行(最好还要配合一点能力1)。
有人说了,中科院的某某代码不也那样么,人家重视的是理论知识?我要告诉你,你的说法有两点是错误的:
1、中科院这种代码,不能够证明他是正确的,反而证明了我们整个环境的问题出在什么地方——从上面开始就有问题!
2、中科院理论知识如何,我想这个没有什么好争论的。但是我想说的是,现在的毕业生理论知识如何,真不敢恭维。就拿这一个程序来说,其实程序没有什么太大的问题,无非就是风格糟糕了一点。但是为什么这个程序不正确呢?因为公式搞错了,不仅仅是某些地方正负号不对,而且很明显漏掉了很多计算步骤!一个论文都要到处Copy&Paste的学生,其理论知识水平如何,可想而知。虽然本程序的作者是否存在论文Copy的问题我无法得知,但是就我所知道的一些具体情况基本如此。而且相信大家对于这个问题基本上没有什么分歧吧?如果这个问题不严重,为什么教育部前阵子要大力抓论文copy的事情呢?还有,大家应该清楚记得,曾经发生过某些教授的论文也被发现抄袭的事情吧?上梁不正下梁歪,教授的那些论文是否个别案例,大家心里面清楚!只要是高校里面出来的硕博士,应定少不了发表一些论文,上面的署名是自己的导师的吧?或许某些学校好一些,或许甚至有些学校没有这样的情况。有硕博士的站出来说说,有的说有,没有的说没有,让我和大家都看看是否存在这样一个情况。我只想了解一下真实的情况,无须署名。就我知道的是有这样的事情的。
其实我原来根本就不想谈论这些问题,因为已经跳出了计算机编程的范畴。可就是有人喜欢以偏概全,或者偷梁换柱,非要拿理论上的问题说事。理论上强就可以不要最为基本的编程素养了?这是一个非常奇怪的逻辑,好比餐馆做菜好吃就不需要卫生干净了。为什么我说大家要有编程的基本素养?因为那些风格啊,结构啊等等,是你和干这行的其他同事进行交流的基本保障。比方你写一篇英语论文,你该要分段就得分段,该是句号句号,该是逗号逗号,该是写成主谓宾结构就要写成主谓宾结构。你倒好,一篇论文70页就一段,有无数个逗号最后一个句号,语法不是写成主宾谓就是谓宾主,谁看的明白?那些强调理论水平的朋友,我想问一下,你能接受这样的事情吗?我想即使是写出比相对论还要强的论文,《科学》杂志也决不会刊登的!
再说了,难道中科院写出来看不懂的程序就值得庆幸了?可想而知,这样的一种程序,要浪费多少可以用来研究理论的时间!这样的程序要一个团队来做,难度有多大可想而知;对团队成员的阅读能力有多高,也可想而知;如果有人理论水平很高,阅读能力差一点,能否在团队中发挥出作用也可想而知;如果大家写程序的习惯都好一点,研究的进度能快还是慢一点也可想而知。中科院的人也是培养出来的,不是打自娘胎蹦出来就会写程序的。中科院的人为什么写出来的程序风格不良,原因还不是培养的过程问题?我不否认他们理论都很强,不否认他们大脑都很优秀,能够读懂这么糟糕的程序。可是与其将智慧浪费在这个上面,还不如他们的习惯更好一点,理论更强一点,团队合作能够更好一点呢!
再说了,我说的那些素质很难做到吗?一点也不难!无非就是:
1、该对齐的地方对齐;
2、变量名称能看明白是什么意思;
3、一个函数不要写的长安街那么长;
4、不要到处拷贝粘贴,要稍微归纳一下;
5、不要用Goto等让人抓狂的东西(如果你自认水平一般,就谨记这一条);
6、如果编译器允许(准确说是语言的语法允许),尽量在你需要用到某个变量的时候才声明这个变量,换句话说叫做变量的声明和使用之间的距离要尽可能的近。
那些什么设计模式啊,什么单一性原则啊,反向依赖啊,我没有这样的要求。那些都是需要有充足的实战经验才能够正确理解和准确把握的,那些是对已经进入业界一段时间的同事的要求,甚至即使做不到都是情有可原的。但是前面那些不过分吧?要做到这几点有这么难么?对于教育界来说,教授这些东西一句话就说清楚的东西很难吗?我记得我的启蒙老师以及他的一位同事都曾经跟我说过一遍,不要用Goto语句,这是程序员的基本素质,我就记住了。也许为什么还要多说几句,但也决不是困难的事情。最后考试的时候这个作为一项评分标准,大家就会有足够的重视了。我想问问大家,你们大学教C++/Java/Delphi/VB的老师,对于上述几条说了几个?Goto语句的可能是最普遍会说到的,或者有的根本不教Goto语句,有的语言没有Goto语句。剩下的呢?你们的考试评分标准里面有这些内容么?
我记得好像有人说,这个好像工匠和建筑师之间的抱怨。这个首先,我说的问题是作为工匠的基本素质,貌似现在学校毕业出来的学生,一般是没有资格当架构师的。工匠砌墙就应该砌直了,至于结构、应力什么的,交由架构师解决。其次,即使是架构师也应该具有一些基本的工匠素质,知道墙应该是砌成笔直的。什么时候我要求过只教风格不教思想了?现在的问题是只教思想不教素质!思想素质都得要教,光有思想没有素质,教出来的人往大了说就是祸国殃民!素质很容易教的,无非就是一些优良的行为习惯,优秀正面的人品道德。但是你的习惯不良好了要改过来是很难的,人品堕落了要高尚起来也是很难的——试想习惯了抄论文的,还会好好学习吗?所以更应该先教素质再教思想。
我也记得有人说,不要站在那么高的高度看待学生。我想我没有站在很高的高度看学生吧?做到上面那些要求的难度有多大,我想前面都说得很清楚了。说到高度,如果是站在业界的高度讲,只拥有这几个素质的人来面试,能否通过面试你我都清楚。如果一个人来了能说出很多设计模式啊、架构啊、软件工程的,却没有这几个素质,能否通过面试你我也很清楚。那么这几个素质是什么高度的要求,你我是否也应该很清楚了。只能说大家有一种高要求的错觉,恰恰是因为对于目前的毕业生来说,其平均水平是无法达到的。但是平均水平无法达到不能证明我们可以安于这样的现状,更不能证明这样的状态是正确的!假设我国的识字率很低,教育部的人是否能够说“哎呀,不要站在教育部的高度看贫民百姓嘛”?如果教育部真这么说,你我应该感到愤怒!这种平均来说不具备上述几个基本素质的情况,正是一个亟待改进的地方!为什么还会有人说不要这么高的要求,至少我是无法理解的。
还有人说,这种素质要求不是学校能够教的,是学生对自己的要求严不严格的问题。其实学生对自己的要求是一方面,学校教到什么程度是另外一回事。我倒是觉得反过来,素质是必须要教育的,思想倒是可以自己摸索的。原因很简单,习惯坏了难改,而且还有人会不觉得那是一个坏习惯。但是思想就不太一样了,1+1你算出来是3你自己就会觉得出错了。现在倒好,是倒过来的。出来的学生思想上都一个模子,一件事情只知道一个做法,不知道摸索其他的办法,习惯嘛也不见得好到哪里去。
哎,没事又上来抱怨了……多抱怨也没有什么益处,我还是回归多做贡献少抱怨的路线吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器