为什么我写代码却不拿工资

还没有读者喜欢这个。
Open source code for a better food system, code with grass image

Jen Wike Huger 拍摄照片

我下个生日就 70 岁了,众所周知,像我这个年纪的人都不懂电脑,至少在澳大利亚是这样。

我们必须由孙子辈教我们使用电子邮件、网络浏览器和 Facebook,或者参加特殊的“老年人计算机”课程。人们不指望我们对文字处理或电子表格了解多少。而且,如果我们想买电脑,最好请年轻人帮我们找一台合适的。

但事实上,我对计算机和计算了解不少,尽管我从未担任过 IT 专业人士,甚至没有接受过 IT 培训。我也编程。每次我坐在电脑前,我都会使用我自己编写的程序,退休后,我花大量办公时间编写代码。

这是怎么发生的呢?

回到梦幻时代

首先,我在 1961 年高中时学习了计算机编程的基础知识,是的,这个年份不是印刷错误。我的高中有一台小型 IBM 大型机,使用早期版本的 FORTRAN 编程语言处理穿孔卡片上的数据。我们高中的孩子们被教导如何用 FORTRAN 编写简单的程序。

在我高中毕业两年后,科幻作家艾萨克·阿西莫夫想象了 50 年后的生活会是什么样子,那时计算机的使用将普及。

“所有高中生都将学习计算机技术的基础知识,精通二进制算术,并接受完美的使用计算机语言的培训,这些语言将从像当代‘Fortran’(来自‘公式翻译’)这样的语言发展而来。”

对不起,阿西莫夫先生。即使在个人电脑成为世界各地日常设备之后,我们澳大利亚的学校仍然坚决避免教授任何编程语言。课程规划者选择培养为计算机做好准备的工人:数字经济中可互换的零件,计算机所做的事情主要由大型公司决定。

今天的澳大利亚高中毕业生具有 Microsoft Word、Microsoft Excel 和 Microsoft PowerPoint 的经验,仅此而已。他们为您的以 Windows 为中心的工作场所做好了准备,雇主先生!

近期的反响

近年来,人们一直在推动在学校教授编码。其中一些推动力来自海外,例如 Hour of Code 活动,该活动吸引了全球数千万学童。在澳大利亚,新的国家课程有一个“数字技术”组成部分,编程思想将在小学阶段引入。甚至澳大利亚主要的政党也对教育中的编码变得热情起来。

这种对编码的突然热情背后的驱动力似乎主要是经济方面的。这是为了让澳大利亚儿童为“未来的工作”做好准备。澳大利亚商业委员会主席凯瑟琳·利文斯通在 2015 年 4 月 告诉国家新闻俱乐部

“就澳大利亚目前的情况而言,我们年轻人的数字素养与我们的竞争对手国家之间的差距正在扩大。如果我们想要提高生产力和参与度,我们需要紧急启动一项十年计划来缩小这一差距。”

换句话说,澳大利亚承认它没有为今天的数字工作做好充分准备。或者过去 20 年的那些工作,自从互联网兴起以来。为了为某些模糊想象的未来做好准备,我们现在被敦促培训今天的教师(他们对编程一窍不通),让他们培训他们的学生成为编码教师,这些教师将培训他们的学生进行编码。阿西莫夫可能毕竟没有错。将编程语言引入高中显然只需要 75 或 80 年,而不是 50 年。

在学校教授代码也许是个好主意,也许不是。它肯定对我有帮助,在 40 多年后。但我怀疑,政策制定者不了解编码的全部意义,除了它与计算机有关,以及至少一些编写代码的人赚了很多钱。

安全还是冒险?

彭博商业在 2015 年 6 月发表的 系列文章 标题为“世界属于会编码的人”。这是如何运作的?在我看来,是这样的:代码控制计算机使用它们的人。如果您使用预先编写的代码,随计算机提供或打包成 DVD 或从网络下载,或从 IT 公司购买,那么您就不是负责人。您将做软件编写者允许您做的事情,而不能做其他事情。在许多情况下,您将为受这种方式限制的特权支付巨额资金,并且您将受到最终用户许可协议的严格限制。

另一方面,如果您编写自己的代码,您就是老板。您可以控制您的设备和任何其他可以运行该代码的设备。编码使人自由。商业界真的明白这一点吗?您知道和可以编写的代码越多,您就越不需要受现有商业软件和这些程序施加的工作模式的束缚。

雇主先生是否想要了解如何拆解和重建其业务中的信息流的毕业生?能够用免费代码和内部专业知识取代昂贵的软件、顾问和第三方支持提供商的人?不是可互换的零件,并且期望获得与其价值相称的报酬的人?也许吧,但这可能意味着放弃熟悉的平庸的 Windows。

但我怀疑我们是否会通过大众教育获得合格的程序员,就像我们没有通过大众教育获得合格的作家一样。如果您没有被迫年复一年地在学校听到关于编码的事情,您为什么要像我一样自愿学习编码呢?

老年人的想法

这是一个 热门话题,我不能代表每个程序员发言,但这里有七个像我这样的老家伙进行编程的原因:

  • 在大多数情况下,我编写代码是因为没有可用的软件可以完成我想做的事情。
  • 我的代码通常比可用的软件做得更好,或者做得更快或更简单。
  • 成功编码的回报是即时的。(它起作用了!)
  • 编码是创造性的个人表达。可能没有人写过像我的一些程序中的代码这样的东西。
  • 编码对老年人的大脑来说是良好而富有成效的锻炼。
  • 我喜欢掌控我的电脑的感觉,而不是让它不断地服从别人的软件的指令。
  • ……还有另一个原因,需要稍微解释一下。

十年前,如果我推广开源软件,我会被人视为梦想家或无聊的福音传道者。为什么有人要编写代码,然后把它免费送给其他人使用、修改或重新分发呢?

在 2015 年,开源软件不需要推广。它无处不在,在家庭、口袋、办公室、数据中心和各种规模的网络中的数字设备上完成日常工作。它的大多数作者是志愿者,或是有偿程序员,他们坚持他们编写的软件以“免费使用、修改和重新分发”的许可证发布。最广泛使用的设备操作系统 Android 是开源的,并且基于另一个非常成功的开源项目 Linux。

给予是好的,回馈共享的社区甚至更好。将代码分享到公共领域是一种美好的感觉。我的代码出现在在线 Linux 杂志中。全世界有多少程序员阅读过我发表的编码教程和演示?我不知道。但如果我的代码被使用了,那是因为我确保它能工作。这是一个保持编码的巨大动力。

User profile image.
Bob 是一位“退休”科学家,仍然活跃于动物学研究。他为一家科学期刊出版商审计数据,并在 Linux Rain 博客上发表了编码教程。

16 条评论

虽然这是一篇有趣的文章,而且您编写代码并乐在其中也很棒。FOSS 和当然的开源与获得报酬或人们获得多少报酬无关。在长期支出不足和管理不善的时期,建议支出应低于 IT 领域的支出,这真的很危险。

同样值得思考的是,当您贬低他人服务的价值时,没有给出具体例子,也没有深入了解其成本背后的原因,实际上会损害整个经济,并导致一个平淡的第三世界未来,每个人都工作数百小时,并因感知价值如此之低而更晚退休。

我的另一个告诫是,这没有提及任何贡献。只是编写代码供个人使用,这本身不是开源,因为代码没有共享,也没有向作者以外的任何人开放。

您断言作者“没有提及任何贡献”是不正确的。

“给予是好的,回馈共享的社区甚至更好。将代码分享到公共领域是一种美好的感觉。我的代码出现在在线 Linux 杂志中。全世界有多少程序员阅读过我发表的编码教程和演示?我不知道。但如果我的代码被使用了,那是因为我确保它能工作。这是一个保持编码的巨大动力。”

我也是老年人(65 岁),但我还没有退休,我编写代码(AWK 和 Bash 脚本)来操作数据以进行分析(使用 R)。我所有的代码都与我的年轻同事共享,我认为这是我对科学事业的遗产。

回复 ,作者是 LewisCowles1986

我很高兴您觉得这篇文章有趣,但您似乎错过了一些我的观点。我当然没有贬低以编码为生,这就是为什么我将训练有素的程序员想象成“不是可互换的零件,并且期望在企业工作时获得与其价值相称的报酬的人?”。我认识这样的人,他们收入很高,并且在工作中使用开源代码。
我自己的编码都是 shell 脚本、AWK、网页和一些 javascript。您可以在我的 Linux Rain 教程和演示中在线找到其中一些脚本,以及我对似乎很普遍的编码问题的解决方案(通过谷歌搜索找不到简单的解决方案)。这不是贡献吗?

回复 ,作者是 LewisCowles1986

如果您有其他收入来源,创建开源软件就很棒。其次,可能有合理的理由保持您的作品闭源。特别是如果您的收入依赖于它,在我的经验中,这经常被福音传道者遗忘......

所有这些都是真的,对于艺术和工艺作为赚钱工具,以及现在的科学来说,您也可以说同样的话 - 大多数科学毕业生必须在科学以外的领域找到收入。但在我的经验中,严肃的艺术家、工匠和科学家不是为了钱而工作,而是受一种做一些真正了不起的事情的冲动所驱动。我在开源编码中也看到了这一点。

回复 ,作者是 Willem Grooters (未验证)

对我来说 - 前 IT 专业人士和前教师,学习编码的主要好处是学习了在其他方面没有很好地教授的思维模式。

编程教授算法思维 - 预先思考流程的步骤。这是在边界内进行规划,并培养提前思考的能力;它是目标导向的,它很快就会消除人们的任何不会犯错的感觉!

调试也教会了仔细的推理。分析,而不是编码的综合。从观察到的效果中确定可能的原因。而这种思维方式非常容易转移;昨天我不得不调试一辆无法启动的汽车。我的医生调试我的健康。

在我看来,编码的类型无关紧要:闭源、开源、商业平台或免费。为 Android 编写小程序当然是培养这些思维技能的一种方式。使用游戏构建应用程序比什么都不做要好。并且其他人是否使用甚至看到代码都无关紧要。

是的,它非常具有创造力。

澳大利亚 IT 教育的状况令人震惊。我 45 岁,从 10 岁起就开始编码,并且有上小学和中学的孩子。他们目前没有一门与 IT 相关的科目,甚至在 10 年级之前也没有与 IT 相关研究的选修课。到那时,大多数职业选择都已做出,很少有人会在教育后期转向 IT。如果我们不教导我们的年轻人,我们将继续把我们的国家变成一个就业落后的地方,缺乏创新和创造力,那里只剩下当地旅游业的工作来迎合来自创新地区的富裕世界游客来参观我们古朴的小国。

我们的政府和教育系统正在摧毁我们孩子的未来。Foss 是我的孩子们和我唯一的接触方式,我很高兴我可以向他们展示一个开放、智能的代码创新世界,以及一个协作、蓬勃发展的智能生态系统,这是他们在被称为学校的创造 MS 农场的羊群中永远看不到的。

树莓派基金会、创客运动和 FOSS 是我们孩子在 IT 领域的未来。这并不意味着没有人赚钱,这种想法只是表明对该模式缺乏了解。

在反对者最容易忽略的事情中,最让我感到奇怪的是,FOSS 最终是一种人民的力量设备。它是你的,而不是他们的,在这个时代,真正属于我们的东西已经所剩无几。

我记得在 Commodore 64 的时代,教育界曾大力推动编码。底线:编码不适合大多数人。目标从来都不是让每个人都编码,就像目标从来都不是让每个人都能设计桥梁的建造一样。

如果一个人不靠编码为生,但仍然编写一些代码,那么这更像是一个能够在家周围工作而无需总是打电话给别人来修理东西的人。

这是一件好事,但不是很多人想做的事情,除非他们没有钱付钱给别人,或者他们只是喜欢能够解决自己问题的独立性。

大多数人不受他们使用的软件的限制。在大多数情况下,他们甚至没有意识到软件可以做的所有事情。

我们这些喜欢技术的人常常忘记,对于许多人来说,技术仅仅是一种达到目的的手段。他们想要一个黑匣子,而不是一个丙烯酸的盒子,在那里他们可以看到和操作所有的内部工作原理。

我们忘记了,即使当我们编写一些代码时,我们仍然在使用我们自己没有编写的软件。我可能会编写一个 AWK 脚本,但我永远无法编写 AWK 本身。我们都与内部工作原理抽象开来,只是概念距离不同。

今天大多数人都会使用电子表格。我们忘记了,曾经只有会计人员真正使用电子表格。曾经大多数人根本不会打字,现在大多数人都会使用键盘,当然速度和技能程度不同。

技术在社会中传播,并改变人们的技能组合,而不管国家在教育方面可能或可能不做的事情。在大多数情况下,国家不是一个非常好的
未来人们需要的预测者。国家通常为现状服务。

我确信公司很乐意看到 STEM 人员的大幅增加。这将降低他们的劳动力成本。在美国,法学院毕业生的数量是工作岗位的两倍。这是因为法学院让人们相信法学院在某种程度上是一种“思维方式”,适用于许多领域(这只是一种没有研究支持的传统智慧的断言,但对法学院很有利)。我在其中一个引述中看到有人提到了“算法”思维。我会建议人们查看卢克·多梅尔的书《公式:算法如何解决我们所有的问题……并创造更多问题》。

编码是年轻人的游戏,就像工程一样。当然,一个人总是可以转向系统集成等或管理,但这并不是编码。

我还会推荐另一本书,特雷西·基德的《新机器的灵魂》,这是一本关于 DEC 创建 Eagle 小型计算机的旧书。它提供了关于技术进步和创造的产品对劳动力和谁做什么的需求的见解。人类的动态没有改变。

技术对人类的问题不是他们能够控制自己的技术(除了少量情况外,没有人拥有这种能力),而是技术如何在人们不知情的情况下塑造人们的生活,如何改变人们彼此之间以及与社会机构之间的关系。这将是一门值得引入教育的课程。

尝试用“音乐”或“艺术”或“数学”或“科学”或“木工”替换您评论中的“技术”。

音乐不适合所有人。目标从来都不是让每个人都演奏音乐,就像目标从来都不是让每个人都能创作交响曲一样。

艺术不适合所有人。目标从来都不是让每个人都创作艺术,就像目标从来都不是让每个人都能画自己的风景画一样。

数学不适合所有人。目标从来都不是让每个人都做数学,就像目标从来都不是让每个人都能证明定理一样。

科学不适合所有人。目标从来都不是让每个人都做实验,就像目标从来都不是让每个人都能逆向工程病毒一样。

木工不适合所有人。目标从来都不是让每个人都做木工,就像目标从来都不是让每个人都能制作自己的高品质家具一样。

等等。课程中剩下的东西不多了,不是吗?

回复 ,作者是 Eli Cummings

《新机器的灵魂》确实是一本关于构建一个系统时所付出的努力的好书,当时他们使用了成架的设备。关于开发操作系统和首次启动。它是在 Data General 构建的,当时被称为 32 位超级小型机。相当于很多台式机或 Pi。

喜欢这篇文章。令人惊讶的是,有后代既懂硬件又懂软件,是的,那些人就是你询问的对象。很多人知道如何使用,但不知道它是如何工作的,也不想知道,因为它太难了。

回复 ,作者是 Eli Cummings

我知道我们的社会存在一个问题,当我的孩子们出于自愿来找我,让我指导他们如何学习技术时,我引用他们的话说“因为我们在学校根本学不到这个”。编码可能不适合所有人,但接触 IT 是不可避免的。在某些情况下,甚至比数学、科学、艺术和家政更重要。所有这些东西都在课程中呈现,除了 IT。没有人说应该强迫我们的孩子学习 IT 和编程,但在技术时代,从幕后角度接触 IT(软件是如何创建的,而不仅仅是如何使用软件),以及能够选择它作为学习和职业道路是绝对至关重要的。目前,孩子们甚至没有被教导如何使用软件,更不用说它是如何创建的了。

现在不在学校教授 IT 相当于在工业时代将焊接和钣金从课程中移除。

我们被我们的政府和学校抛在了后面。FOSS 为那些了解其可用性的人填补了这些空白。它也可以而且应该在我们的学校中填补这些空白。如果教师和决策者愿意对 IT 和开源敞开心扉,他们就会意识到他们可以以非常低的成本拥有最好的教育工具。没有像微软和苹果这样的公司将生态系统限制在他们自己的品牌中,并且以过高的成本这样做。

开源正在接管世界,并且在我们日常使用的几乎所有东西中都无处不在,即使是工业界现在也公开选择开源而不是封闭工具和开发。澳大利亚是时候开始培养和促进我们作为创造者和创新者的地位,并将我们的青年牢牢地放回一个具有创造力的、以技术为基础的未来了。

我们如何将开源课程引入学校,这正是现在需要发生的,并且应该是任何 10 年计划来纠正当前错误的基础。

我完全同意您所说的一切,但有一些严重的障碍需要突破。以下是我在澳大利亚发现的三个:

1) 学校、政府机构和企业内部的 IT 政策通常是在没有 IT 部门建设性帮助的情况下制定的。在这些部门中,通常对 FOSS 有理解和支持(有时幕后使用 FOSS)。但是制定 IT 政策决定的经理和会计人员不听取他们的 IT 人员的意见,并将他们视为蓝领机械师。与微软或 IT 咨询公司签订独家多年合同,这些公司推销微软的产品和服务,因为这更“商业化”。

2) 课程规划者和教师以远高于有效教学所需的抽象级别进行思考、写作和交谈。如果您说“此软件的功能与彼软件完全相同,并且不花任何钱”,那只是一个太简单的想法。您需要将其包裹在过去被称为“教育语”的难以理解的术语中。

(如果您指出,在技术意识和使用方面,一半的高中生群体遥遥领先于教师队伍,并且四分之一的学生*已经*涉足过代码,用于构建网站或出于乐趣而进行黑客攻击,您会看到担心的面孔并听到“我们有责任不培养黑客[原文如此]”。)

3) 普遍认为编码严格来说是功利主义的。它被视为仅仅是一种达到某些无聊目的的手段,例如制作一款新的游戏,为一家游戏公司赚取数百万美元。在这种观点中,编码是一种小众技能。当然,我们现在已经经历了六十年的计算机和其他数字设备悄悄地承担起在我出生时无法想象的工作,但为什么要让事实妨碍偏见呢?

回复 ,作者是 HomerJ (未验证)

社会机构本质上是保守的。它们的目的是维持社会的稳定和秩序,而不是成为变革的推动者。人类普遍不喜欢改变。他们会为了稳定而放弃很多东西。

尽管口头上赞扬创新和创造力,但现状将尽一切努力确保其拥有的权力掌握在自己手中。

几十年来,我一直感到困惑的是,个人对其与他们所居住的社会的关系缺乏了解。大多数人相信民主政治哲学提出的神话,聪明人常常将他们的智慧投射到比实际情况大得多的社会群体中。

社会中的普通人对他们周围世界的理解非常有限和肤浅。它很少超出他们最喜欢的网站上的新闻或他们在晚间新闻中看到的内容。普通人甚至不太普通的人可能对某些非常狭窄的学科领域有深刻的理解,但他们常常没有意识到他们在该领域遇到的复杂性和他们理解的权衡也适用于人类努力的所有其他领域。

我们最近的进化适应是我们是一种大脑强调技术的动物,而人类是专业化的。它一直是我们最近历史的驱动力,随着化石燃料动力机械的发明,这种力量达到了一个全新的水平。

我们可能认为自己是自由的个体,可以控制自己的生活,但这并非完全正确。我们无法控制我们生活周围的环境。这种环境就像海滩使沙粒相形见绌一样,使个人显得渺小。

我们被分隔开来。我们是臣民,而不是国王。人们在发达社会中拥有的唯一权力是法律允许的权力。法律是一个社会的代码,其中很少有法律是由我们编写的,但有些人知道如何破解它。

我们的主观意识使我们很难意识到我们是一个非常庞大的机器的一部分,就像我们的主观意识没有向我们呈现我们身处一个围绕太阳旋转的球体,在一个年龄和大小都未知的宇宙中一样。

历史充满了这样的例子:当我们的梦想实现时,它们看起来是多么破旧,而且我们似乎永远无法得到我们认为正在创造的世界。

人们可以从幼儿园开始在教育中引入编程,但这仍然存在许多问题需要解决。我们从哪里找到教授编程的人呢?那些有编程技能的人不会去做,因为报酬不高。我们将教什么编程?什么语言?任何长期关注计算机技术的人都很清楚事物变化的速度有多快,以及过去的技能变得过时或充其量成为“维护”类别一部分的速度有多快。我们认为教授顺序执行、循环和分支会以某种方式激励孩子们成为热爱自由的程序员吗?

仅仅因为我懂代数,并不意味着我会在日常生活中使用它,或者在工作中做代数。大多数高中毕业的成年人都学过代数和几何,但除非他们从事需要使用这些知识的领域,否则大部分知识已经被遗忘,并且极少甚至从不被用来解决他们日常生活中的问题。

那些想编程的人无论教育机构提供什么都会去编程。 大多数编程的人都不会很出色。 编程将服务于现状。

我的意思是不要指望在学校引入更多的 IT 技术会以某种方式改变现状。它不会。改变不是来自机构内部,而是来自机构外部。

我只想评论一下知识赋权的问题:我非常同意。作为一名了解一点编程的系统管理员,我很高兴在家运行 Linux 系统而不是专有替代品,因为我可以完全控制操作系统和工具。

这个话题可以扩展到我们依赖的任何复杂主题:医学、法律等等。我们被我们依赖的复杂系统所包围。当我们需要与这样的系统关联时,我们通过专业人士(一个人)来做到这一点:这里可能会出现问题:我们对复杂主题的内部了解越多,我们就越自由!(想想一个糟糕的医生……)

缺点:这一切都非常耗时,我在这里没有任何好的解决方案……

回到 IT 领域:IT 在当今变得越来越普及,越来越复杂,并且正在成为人们必须掌握的战略主题之一 - 尽可能地掌握 - 否则……

有趣的帖子和讨论!

在美国的一些社区大学里正在教授 IT 技术。 为了在 2009 年获得护理学位,即使是我们这些拥有技术学位和先前计算机科学学分的人也需要修读一门先修课程,即使用 HTML 创建一个简单的、运行良好的网站。 这门课程是在被护理学校录取之前必须修读的。(我现在正在攻读 IT 研究生课程。并且已经 50 多岁了。)

您非常正确地看到了并指出了医学上的相似之处!诊断和治疗算法指导着我们的思考;但现实生活中的应用并没有那么简单。调试、教育、调整“最佳实践”……是的,类似的过程。从分子到系统层面的多层次挑战,以及为改善功能而打破障碍。

这让我开始思考人工智能未来可能出现的复杂性,当类人习惯和行为比当前的人机交互环境具有更深厚的历史背景时。 类似的公共卫生和政策挑战将在人工智能领域出现。 只有谁现在能说这些挑战可能是什么样子。 最复杂的问题可能是什么样的。

我们需要更多成熟的人员进行编码,并在技术领域实现更多样化,以便基于经验学习为应对未来技术挑战的跨学科补救措施提供新的最佳实践。

经验带来了智慧,能够理解和预见对重大问题的需求,并考虑在先进技术社会中自由意志和选择的潜在后果。

通过将具有创新精神的自由思想家和那些对适度和变革的美丽和必要性有所了解的人们聚集在一起,可以培养出有效且并行的风险缓解和发展战略。

感谢您如此富有洞察力的文章 Bob,阅读它是一种乐趣,总的来说,在当前世界各地的社会系统错失的机会方面,我们绝对意见一致。 我住在瑞典,并且可以毫无问题地理解您提出的许多问题,它们在这里也太明显了。

"十年前,如果我推广开源软件,我会被视为一个梦想家或一个无聊的布道者。"

在过去的 10 年里,我们确实取得了长足的进步,我可以有把握地预测,开源运动的“不归路”是安全的,即使尚未过去。 至少在想到更好的东西之前是这样的。

不过,重要的是要记住,对开源的理解、尊重和信任仍然只被世界上一小部分人所理解。 是的,这场运动正以更快的速度发展壮大,并且越来越多的国家现在正在采取官方的积极立场来支持它。 仅仅这一点就是事物正朝着正确方向发展的又一个好兆头。

我自己的预测是,10 年后,当我们回顾今天时,发展将使已经取得的进步相形见绌。 正如我们那时也已经了解到代码是开放和无国界协作的成果一样,著名的曲棍球棒图将已经发生,这对于开源工作原理至关重要。

至少对我来说,这方面的迹象已经随处可见。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.