在高等教育,程序员和蓝领工作上



“有时候,一个人的视界圆越来越小,并且当半径接近零时,它会集中在一个点上。 然后这成为他的观点。”

戴维·希尔伯特
“当我以为自己跌到了谷底时,有人从下面撞倒了。”

斯坦尼斯瓦夫·杰兹·莱克

前言


程序员需要高等教育吗? 关于这个毫无疑问是紧迫的话题的意见流还没有停止,所以我决定发表我的看法。 在我看来,教育的普遍失望是由于专业的众多过程和变化而引起的,需要认真研究。 下面,我将讨论最常见的误解,神话和现象的根本原因。

也许你来错地方了


我再次提醒您:该大学不是一所职业学校。 大学培养的是科学家和工程师,而不是蓝领的工人和技术员。

大学为您提供基础知识,当您完成学业时,基础知识不会过时。 美国国立卫生研究院的一位生物学家写信给我: “时代在变化,但基本面却没有变化” 。 好话! 这就是为什么最好选择教育的总体方向并尝试选择最大数量的选修课,这就是为什么在大学中,物理本科生会被提供(正如许多人所猜测的那样)这么多“不必要”的课程,例如生物学,化学或文学,而不是特殊学科。

著名的天文学家卡尔·萨根(Carl Sagan)在他的书中提到,他在遗传学实验室工作,并在研究期间进行了实验以检验生物发生的假说。 在美国,除了主要专业外,还可以添加一些其他(次要)专业,这是很棒的。 这是俄罗斯等许多其他国家没有提供的绝佳机会。 因此,如果您在进化论和Java编程之间进行选择-也许选择第一个,也许有一天,这种知识将对您的职业甚至生活有用。 您仍然会学习Java(如果确实需要Java),但是您不太可能了解我们星球的历史。 而且,进化是如此普遍和普遍,它可以应用于几乎所有工程学科。 请记住,缩小视野总是比扩大视野容易。

到目前为止,外国大学的情况没有根本不同。 由于多年的并行发展,世界对专业人员提出了类似的要求。 您在其他国家/地区会以不同的方式教您是很正确的,但是如果您认为自己将被教以不同的话,那是错误的。 其他国家的大学在教育过程,课程的名称和数量,实践的质量以及真实的科学方面有所不同,但是各地的理论基础都是相似的。 这种统一的原因很明确:自然法则在所有国家都是不变的。 因此,来自一个国家的专家可以在世界各地工作。

谁是程序员?


为了说明这个问题的重要性,我将举一个类比。 想象一下,你问某人他的职业是什么,他说他是一名建筑工人。 您能在没有任何其他信息的情况下猜测他的所作所为吗? 不行 他可能是受过艺术教育的建筑师,工程师,工头,熟练工人或清洁工。 针刺说,这些领域中的许多都有自己的专业领域。 而且仍然将它们全部称为构建器,但是很明显,它们是非常不同类型的构建器。 要建造一个狗屋,不需要接受特殊教育,但是没有它,没有人可以建造摩天大楼。

但是,那些建造狗屋的人通常不被称为建造者。 另一方面,现在几乎每个人都被称为程序员。 发明新算法的计算机科学家; NASA的导航软件开发人员; 研究病毒的汇编语言专家; 制作HTML页面的小学生-现在所有的人都是程序员。 因此,在回答问题:“程序员需要高等教育吗?”之前,您需要弄清楚-哪种类型的程序员? 也许,在您的特定情况下,显然不需要教育。

无论我们是否喜欢, 斯特鲁加茨基兄弟关于年轻研究助手世界的梦想都破灭了。 绝大多数人都不会成为科学家或工程师,他们绝对不需要大学学位。 两年的副学士学位完全可以满足他们的需求。 因为通常他们的欲望和需求不能满足大学教育的目标,他们的拟议工作与科学或工程学无关。 这并不可怕,因为在任何特定时间,任何领域的工程师人数一直少于技术人员和蓝领工人。 蓝领职业没有什么可耻的,特别是如果您喜欢的话,但是这样的人称自己为工程师是没有意义的。 相反,您需要诚实地承认自己想成为谁,而不是要求大学成为他们不应该做的。 仅一件事,请不要称自己为程序员,因为程序员是工程师。

工程师不能成为蓝领。 即使开发简单的程序,您也应该是一个好的工程师,否则您的程序将又大又慢,消耗计算机资源,并产生不必要的流量,从而泛滥网络。 另一方面,蓝领从事非创造性的工作,他们通常不做决定,也不能解决问题。 如果他们遵循指示,他们会做得很好。

但是,很多年前编程中已经有了蓝领工人。 他们是排字工人,负责编码工程师在纸上编写的程序。 当计算机拥有更便捷的终端时,它们很快消失了。

三次测量并切一次


每个专业都有最低限度的强制性知识。 在计算机科学和程序设计中,这样的基础是数学课程; 所以问题“程序员需要教育吗?” 通常变成“程序员需要数学吗?” 或“程序员需要那么多数学吗?” 鉴于经典意义上的程序员是工程师,可以用不同的方式提出问题:“工程师需要教育吗?” 通常不会对此问题进行讨论。 也许问题在于,并非每个人都想成为科学家或工程师。 如果您的梦想极限是在App Store中发布简单的游戏,而不是设计人工智能,密码算法或CAD工程软件,则可以轻松绕过大学开始自己的职业生涯,但即使在这种情况下,教育会为您提供帮助。

大学不知道您将来会成为什么样的人,甚至您入学时也常常不知道。 我们相信,教您所有的基本知识比错过重要的知识要好。 此外,基础课程通常是相互依存的,您不能仅选择并删除其中的一些课程。 他们的主要目的不是要教您世界上所有的知识,因为这在原则上是不可能的,而是为您提供现代科学和工程学的概貌,因此当您偶尔遇到未知的事物时,您可以(可能)正确的决定,朝哪个方向前进。

让我们回到数学。 几乎所有关于算法的书都需要读者掌握一些数学知识。 正如Niklaus Wirth所说,算法和数据结构是计算机程序,如果不能使用它们,就不能称为程序员。 这不一定是设计您自己的算法的能力,通常您需要更改现有算法,使其适应各种情况,还需要证明其有效性和适用于各种条件的能力,以及分析其行为的能力。在某些情况下。 数学在密码学,计算机图形学,模式识别,视频,声音,图像和信号处理,计算物理,化学和生物学等领域得到积极应用。 即使在没有严重数学背景的系统编程(通常与数学相距甚远)中,您也无法编写编译器,调度程序和文件系统驱动程序。

数学是所有其他知识的基础。 但是许多人从头开始学习专业。 已经学习过编程语言,开发工具,各种技术和模式但还没有掌握数学基础的程序员,看起来像画家,他们对绘画和画笔有很好的了解,学会了很多技巧,但不知道颜色理论,组成,观点,人体解剖学和其他基础知识。 他们可能有很多绝妙的主意,但是他们将无法表达它们。 他们所能做的就是充当助手或重画他人的照片。

有时候,对基础知识的无知会创造出新的风格,例如文森特·梵高(Vincent Van Gogh)(我必须说他知道自己的问题并上过专业绘画课),但通常会成为创造力的障碍。 并且,如果在艺术中可以证明艺术家的讽刺照片说“他这样看” ,那么在航空航天业中,这种情况(例如错误的随机数生成算法导致诚实纳税人的数百万美元错过了目标) ),不能以任何理由都不成立。

同时,我们不应该忘记,对于程序员来说,数学在大多数情况下是一个工具箱,而不是一门科学,并且讲师应该相应地教他们,尤其是一年级课程,向学生解释学习它们的原因。

至于社会科学和其他非核心课程,它们的重要性不仅在于每个人都应受到良好的文化和教育,而且还因为人的思想极其不可预测,并且有时会从不寻常的来源中汲取灵感。 我的俄语老师告诉我一个苏联时代的故事,当时一个航空学院决定省钱,因此放弃了文学课程。 您认为之后会发生什么? 即将毕业的工程师的数量下降了。 随后,文学课程返回到研究所。 因此,所有这些课程都是必要的。 不幸的是,它们常常被错误地教导,但这并没有增加它们的流行度。 但是我们在谈论这个主意,对吗?

因此,如果您不使用在大学获得的知识,那么问题可能不在于您的大学,而在于您的工作,而这给您使用它的机会。 当您学习如何设计加密算法时,怪罪大学提供“错误的”课程是愚蠢的,但是现在您制作了简单的网页,甚至担任销售经理。

为什么选择大学?


恩,您说过,但是为什么定期教育比自我教育更好? 毕竟,编程不是基因工程-您无需在昂贵的特殊实验室工作,并且可以学习家中的所有理论。 的确,大学的教育计划是众所周知的,许多课程都是开放的,您可以购买任何书籍,从公共图书馆购买或在网络上阅读。 但是,并非一切看起来都那么简单。 与技术和编程语言相比,数学通常很难学习。 除非被告知,否则您可能不知道自己做错了什么。 私人联系非常重要,可以为您节省很多时间和精力。 例如,您可以听几个小时的讲座,但听不懂什么,而在几分钟的休息时间里,您会发现教授的所有答案。 一些程序员仍然需要实验室和特殊条件,例如,那些想要与独特的体系结构微处理器,超级计算机,工业机器人或卫星一起工作的程序员。

在大学学习也是在公司和组织中获得实践经验的机会,否则这是不可能的。 这是进行科学,撰写文章和参加会议的机会,这是许多公司(例如,三星,菲利普斯或IBM)的研究实验室中工作的必要条件。 几乎所有改变世界的技术都是在大学开发的,其中一些,例如著名的LLVM ,是从学生项目中成长而来的。 著名的公司是由科学家和大学毕业生在大学内部创立的:Silicon Graphics,Sun Microsystems,Yahoo,Adobe等。

最后但并非最不重要的一点是,如果没有正规教育,许多研究组织(例​​如NASA,NIH,CERN或ARPA-E)将为您关闭。 您必须证明自己的专业水平,并且要比竞争对手更好,因为如果所有其他资格都相等,那么正规教育对于他们来说将是一个优势。 另外,没有学位,很难在其他国家获得工作许可。 (这对美国来说不是很重要,但仍然有用。)

当有人从下面敲门时


这个问题是全球性的,但在编程中最严重。 这就是为什么。 降低入门水平的障碍对这个行业起到了残酷的笑话。 最初,所有开发工具都是由经验丰富的程序员编写的,以简化工作。 仅当您了解其中发生了哪些过程时,这些技术才有用。 因此,它们使您可以在更短的时间内编写更多的程序,但是它们的质量完全取决于您的知识和技能,因为开发工具仍然不知道如何思考和为您做出决策。 然后有人认为简化程序设计将吸引更多人加入该行业。 许多人梦想着一个时代,每个人都可以编写程序,而不管他们的能力如何。

害怕你的欲望。 不幸的是,他们的梦想现在基本上变成了现实,而不是七十年代的初衷。 现在,即使您不了解程序的工作原理,也可以从其基础上创建程序。 如果您不是专业人士,那将是一个糟糕的工作程序,但是(不幸的是)工作程序如此。 廉价技术的普及和易于开发导致了这样一个事实,即现在的市场充斥着低技能的程序员。 正如萨伊定律所说,“供应创造了自己的需求”。 许多公司雇用这样的“程序员”不是因为他们真的需要他们,而是为了不比他们的竞争对手差。 规则很简单:如果您不能聘请专业程序员,那么您根本就不需要他们。 只需购买现有产品或从专业软件公司订购即可。

但是编写一个程序是不够的,您仍然需要发布它。 同样,许多在线商店的出现为每个人提供了这样的机会。 Google,Apple,Microsoft和其他软件公司主要对他们的平台上尽可能多的程序感兴趣,并且还为它们发布了开发工具。 在这种情况下,开发过程更加简化,最终导致编程的入门障碍进一步减少。

所有这些的结果是容易编程的幻觉,人们开始认为它是不严重的事情,不需要特殊的知识和教育。 这样的观点不仅是由初学者形成的,而且还没有经验的客户和雇主(更糟糕的是)形成了这种观点。 你们中的许多人都看到了空缺,其中列出了令人印象深刻的必要技能,语言,图书馆和技术,许多职责(可能有清洁服务除外),但所有职位的薪水都很适中(即使不是荒谬的)。

在诸如航空工程这样的行业中,很难想象错误的代价是人类的生命。 在这样的职业中,选择非常困难。 没有人愿意损失数百万美元的保险金,撤回执照和不良声誉。 因此,航空工程师可以是好人,也可以不存在,因为没有人愿意雇用坏人,即使他要求很小的薪水。 与编程没有很大的不同,在编程中没有下限,每个程序员,即使是非常低技能的程序员,也不会没有工作。 我们的文明仍然存在,只是因为程序员所做的大部分工作都不重要,我们可以轻松地生活,没有它,任何问题都不会导致灾难。 想象一下,所有计算机游戏突然在世界上停止运行,这会是一场灾难吗? 当然不是! 毫无疑问,这将是一个全球性问题,但肯定不是一场灾难。 但是,如果命运落伍,那将是悲剧。

但是,危险即将来临。 现在的编程几乎无处不在,并且传播非常迅速。 程序员在软件方面的错误已经付出了太多代价,并且这些错误的代价将不断上升,直到它达到人们的生活为止。 您可能还记得水手I号太空探测器 (1962年7月28日), 阿丽亚娜5航班501 (1996年6月4日), 火星气候轨道器 (1999年11月10日), 爱国者导弹 (1991年2月25日)以及最后的Therac-25失败。它使六个人暴露于过量的辐射之下,杀死了四人,并使另外两人终生受伤(1985年至1987年)。 因此,您的可编程茶壶可能会杀死您的那一天,因为它的固件是由无名外包公司(位于老挝某个地方)的低技能程序员编写的。 警告您。

现实生活


当然,这并不意味着出色的教育或精通数学知识将使您成为世界一流的程序员(这可能是必要的,但还不够)。 大家都知道,许多大学毕业生不在他们的领域工作。 而且我个人认识很多数学家编写可怕的程序。 顺便说一句,您可能只是没有编程能力,这是非常普遍的情况。 因此,我通常反对使用简化标准。 在现实生活中,一切都很重要:正规的教育,知识,研究,实践以及最后但并非最不重要的:您的愿望。

人们通常认为大学是一台电梯,这将帮助他们走上职业发展的顶峰,而实际上,它更像是楼梯,要实现自己的目标,您需要移动自己。 如果您不付出努力,教育并不能保证您做得很好,但是如果您努力,它可以帮助您找到一份好工作。 而且,如果您在学习期间没有参加任何研究或商业项目,只是在毕业后才开始寻找工作,那么编程(像其他任何工程一样)都不适合您。

他们是如何做到的?


比尔·盖茨,马克·扎克伯格,拉里·埃里森。 阅读未成年人物的成功故事,许多不成熟的人都这样想:“如果他们能做到,那我就可以做到。” 也许吧 但是请记住,成功是一个非常通用的概念,成为成功的营销人员是一回事,而成为杰出的工程师则是另一回事。 尽管如此,某些世界著名的程序员没有接受过正规的培训已不是什么秘密,但是在您为自己的生活而努力之前,请记住,在许多未知的失败者中,他们是罕见的例外。 如果有人跳出窗户幸免于难,并不表示您不应该使用楼梯。 同样,不应将教育(一个很常见的错误)与文凭相混淆,即某人尚未完成教育,这并不意味着他们根本没有从中受益。 他们可能已经学习了几年,参加了课程并获得了一些知识。 他们中的一些人(例如史蒂夫·沃兹尼亚克(Steve Wozniak))在许多年后仍然回来并完成了学业。

他们的心理能力和性格同样重要:通常,他们都是聪明,聪明,有才华和有些才华的人,这些人从一开始就知道自己需要什么,有目标并且有惊人的工作效率。 他们不征求别人的意见,也不强加自己的意见。 但是其中一些人,例如John Carmack (《毁灭战士》和《雷神之锤》游戏的作者)感到遗憾的是,他没有受到正规的教育并且过于自信。

如果您与他们一样,我衷心祝您成功,否则使用更清晰,更可靠的方法不是更好吗?

蓝领工作的未来


问题在于,蓝领职业逐渐消失,因为它们被机器人和自动机械取代。 现在整个工厂都由一些工程师和熟练的技术人员统治。 这是很好的,因为任何工业工作都不应手工完成。 在编程中尤其如此,因为在编程中,非创造性工作可以非常容易地自动化。 当今世界不需要更多的蓝领,因为机器工作得很好,它需要更多的科学家和工程师来发明我们的未来。 同样,世界不需要更多低技能的程序员(即使他们在任何意义上都不是蓝领),因为他们很快就会被智能机器和程序所取代。 相反,世界需要更多高技能的程序员,真正的工程师,他们将改变我们的生活,使我们的生活更美好,更安全,更长寿。

查看许多公司研究部门的空缺职位。 如前所述,程序员太多,竞争非常激烈,但与此同时,这些公司和机构找不到足够的优秀编程研究人员和工程师! 许多职位都开设多年。 那么竞争和溢出在哪里? 它们在很大程度上处于较低水平。 可悲的事实是,对于非专业人士而言,编程变得越来越容易,因此低水平的工作将更加泛滥。 工资将下降,直到低技能程序员的薪水不会超过麦当劳工人的薪水。

好的高等教育非常昂贵,而且需要很多年,但这是您未来的基础,它将延伸到您家庭的未来。 因此,现在该是选择一生“为食物编码”还是为更高工资在一家好公司工作的时候了。 而且,奖励不仅是您的工资,而且是有趣的改变世界的工作。

Source: https://habr.com/ru/post/zh-CN439762/


All Articles