鉴于越来越受欢迎的大规模开放在线课程(MOOC)的质量和可用性不断提高,近年来,在IT领域,正规的大学教育受到了极大的抨击。 经历了两全其美的经历,我感到不得不参加正规教育的辩护,并向软件工程师的武器库介绍它所带来的价值。
如果您打算陷入计算机编程的困境,并且在决定从哪一方学习,大学学习或在线学习时遇到麻烦,那么希望我能提供一个可能对您有用的其他观点。


面对现实,在线课程很棒。
不乏阅读材料来表达对MOOC的赞誉和自我学习的方法。 我特别推荐的一个是Daniel Bourke在Udacity的AI Nanodegree上的帖子。 在开始讨论大学课程之前,我想重申一下我特别同意的这些文章所涵盖的一些要点。
正如曾经涉足就业市场的任何人都会告诉您的那样,学位可能是使您面试的原因,但是经验和相关技能才是使您获得工作的原因。 在线课程和微学位越来越多地提供与行业相关的技能,而无需花很多时间才能获得一整套成熟的大学课程所要求的看似与职业无关的开销。
MOOC的另一个重要方面是其质量。 杰出的大学教授会考虑一些出色的在线课程,他们对教学充满热情并提供高质量的材料。 密歇根大学的查尔斯·塞弗兰斯(Charles Severance)认为Coursera的Python课程就是这种情况。
这些是MOOC的主要优点,一开始让我对在线学习感到非常兴奋。 但是,在我使用自定进度的在线教室的整个过程中,我发现该方法的质量带有两个星号。


他们很棒,但也很容易。
我还不是业务向导,所以我对MOOC的业务模型的评论应该完全被接受,因为我的评论完全来自于我对MOOC的参与。 我留下的印象是他们的目标是取悦他人。 他们在“确保每个人都通过”和“确保人们学到一些东西”之间找到了难以置信的精细界限。 无疑,这样做是为了吸引尽可能多的观众,并使学生回头。
这种方法的一个副作用是材料通常很容易且始终易于管理。 绝大部分课程都是针对初学者的,甚至高级课程似乎也经常坚持基础知识。
另一个副作用是家庭作业很少,并且在可用时也很容易。 一些值得注意的例外包括吴安德博士的标志性Coursera机器学习课程,该课程提供了一些颇具挑战性的作业。 此外,在大多数情况下,评分工作的回旋余地和扩展性令人难以置信。 从学习的角度来看,这在很大程度上值得称赞,但对于效率而言却并不理想。 学习者可以无限期拖出学习经历,从而导致单位时间内获得的知识减少。
那么,为什么您认为我认为大学对软件工程师来说是更合适的途径呢? 在开始讨论之前,出于完整性考虑,让我提供我在大学教育方法方面所观察到的一些缺点。


面对现实,大学并不伟大。
“我真的不想教这门课,但是他们让我受益,所以让我们克服它。”这是我第一批计算机科学课程的开篇。 是的,大多数大学教授都不喜欢教学。 他们希望自己一个人呆在实验室中,不会被劣等的头脑所困扰,并且可以让他们的实验整天免费进行。 由于这种思维方式,教学质量经常受到影响。 这并不是说其中一些不是很好。 实际上,我曾经有过的最好的老师之一是我的计算机科学教授。 但是,根据个人经验,统计数据倾向于较差的教学质量。
另一个缺点是,正如我确定您已经听到的那样,正规教育因无法适应所有学习方式而臭名昭著。 俗话说,如果您在课堂上学习不好,大学可能不适合您。 就个人而言,我从未发现这是一个问题。 除非老师特别参与,否则我很难集中精力在教室里,所以我在大学的最后三年里只参加那些对我来说至关重要的课程。 否则,我会在家中从幻灯片和书本中学习材料。 这个学期,我总共上了两节课。 不后悔。
正规教育的另一个问题是某些材料可能已经过时。 大学沉迷于官僚机构,官僚机构运转缓慢。 变更通常会延迟。 话虽如此,您很快就会读到,所传递的材料中的价值不在于特定的技术,而是在于所提出的总体解决问题的方法。
毕竟,为什么我再问大学是更好的选择? 让我们开始吧。


这不是很好,但它也会推动您。
正规教育的第一大好处也许是将您推向了极限。 由于下一波即将来临,您经常会受到必须快速学习的材料的轰炸。 您不仅会熟悉链接列表。 您将被要求知道如何识别和处理他们所有的怪癖。 适当的大学课程将确保您知道数学公式,而且您知道如何操纵它并将其应用于晦涩难懂的案例。 它将确保您了解它。
您可能会说,很多填塞,在课程结束后的几周内您会忘记其中的大多数。 你会是对的。 但是,我希望您将有关某个主题的信息想象为一个大球体的体积,并将您对材料的了解想象为一个漂浮在较大球体中某个地方的较小球体的体积。 学习时,球体的体积会扩大。 课程结束后,知识领域的外部边缘变得柔软且尚未固化,因此很快就开始收缩。 但是,您领域的核心是坚实的。 这是您不可避免地需要彻底学习的内容,以应对材料中更深奥的主题。 因此,与您刚刚看到基本面而又不给它们巩固时间的情况相比,您的领域核心更容易生存。
面对来自在线课程的大量困难学习材料的逆境,上帝禁止这是一门非认证课程,我怀疑我们中的许多人会坚持不懈。 这就是我认为MOOC努力让您保持舒适的原因。 大学会让您不舒服。 但是,让某人或某物在您的头上来追究您的责任,是因为害怕课程失败,被踢出程序,或者是失去已经投入的资金,会增加您克服痛苦的机会。
正规教育还会迫使您学习原本不会学的主题。 再考虑一会儿知识领域的隐喻。 球体的表面是知识的最后领域。 它代表您不知道的主题。 你懂? 大学课程,特别是本科课程,将使您接触到广泛的主题。 其中一些将不可避免地对您的特定职业道路毫无用处。 但是,尽管其中的一些不是直接相关的,但有可能会对您的未来工作产生无限的帮助。 愚蠢地,我讨厌操作系统课程。 今天,结合我在并行编程课程中的知识,我能够为客户优化数据处理,从而使处理管道的原始状态的处理速度提高了30倍。 没有这些课程,我什至不知道在Stack Overflow上查找什么内容。 这将我引向下一点。
大学通常讲的是基础知识,而不是特定的技术。 我的并行编程课程是用C语言讲授的。我所服务的客户要求我使用Python。 语言是不同的,但是方法,甚至函数调用,都非常相似。 我知道寻找特定问题的解决方案时会寻找什么。 我的知识领域虽然并没有完全涵盖它们,但却触及了信息空间的相关边缘。 我知道我不知道,但可以抬头。
最后,大学课程包括项目。 很多很多的项目。 程序员的第一学习工具是实践。 尽管将自己的项目视为实践的想法令人钦佩,但回想一下知识领域,却冒着在已经知道的主题上挑战自己的风险。 教授更有可能想到一个项目,该项目将要求您彻底应用所学的技能,前沿案例及所有知识。
这是说应该避免使用MOOC吗? 如果您从头开始关注,您会知道那不是我要在此处传递的信息。


归根结底,这都是关于特定目标的。
归根结底,我一定会继续涉足MOOC,尤其是在学习特定技术方面。 实际上,我目前正在通过在线课程学习Node.js。 据我所知,我的大学不提供有关该主题的课程。 但是对于基础知识,对困难材料的深入了解,对于工程师制成的东西而言,即使我不亲自参加,我也将继续返回大学课程。