系统管理员百事通 - @YesThatTom

  Download PDF version of this article PDF

使 CS 和 IT 课程更具沉浸感的四种方法

为什么钟形曲线没有变成曲棍球棒形


托马斯·A·利蒙切利

我很幸运。我以一种令人难以置信的沉浸式方式学习了 IT。我的头两份工作都在当时遵循最佳实践的组织中。因为那是我所知道的一切,所以我认为那是正常的。我不知道这些组织有多么独特。当时我并不知道这些技术在十年或更长时间内不会被行业其他部门采用。

我的下一次职业变动让我接触到一些不遵守相同最佳实践的组织,也没有其他任何实践。事实上,他们根本不知道存在这样的最佳实践。我认为这是一个错误,并着手修复它,对于任何人会满足于其他任何东西感到沮丧。我正在重新创造我认为的“正常”。

然而,我试图重现的环境并不正常,或者更准确地说,它并不典型。相比之下,典型的 IT 组织会相对混乱。我断言,IT 组织的质量遵循钟形曲线:少数百分比像微调的机器一样运转,少数百分比看起来像燃烧的有毒废料堆,绝大多数处于中间位置。

对我来说幸运的是,我赢得了 IT 职业生涯的彩票。在我的职业生涯早期,我看到了最好的水平是什么样的,并认为这是正常的。后来,这种高标准让我看起来像一个有远见的人。事实是,我只是不知道还有其他方法。

大多数 IT 从业者没有那么幸运。他们没有像我一样有幸获得相同的经验,他们实际上不知道更好的做法。

我相信,这就是为什么钟形曲线没有变成曲棍球棒形,甚至是一个不对称的斑点。这就是为什么我们不能拥有美好的事物。

我们是如何陷入这种境地的?

学生当然没有在课堂上学习最佳实践。事实上,学生更有可能通过课外参与开源项目而不是从大学教授那里学习到最佳的 DevOps 实践。

大多数大型开源项目都使用 Git 进行源代码控制,使用 Jenkins 进行 CI/CD(持续集成/持续部署),并具有完全自动化的测试程序,因为这使他们能够以最小的开销扩展到大量参与者。较小的开源项目也倾向于使用这些工具,因为它们缺乏资源,并且使用这些工具可以使项目管理变得更加容易。

然而,有多少大学要求 CS 家庭作业通过 Git 提交上交?有多少大学的 IT 部门是最佳 DevOps 实践的典范?有多少大学的 CS 部门和 IT 部门合作推动最佳实践的边界?我向您保证,这个数字非常低。DevOps 转型创新的出现并非来自学术界也就不足为奇了。

我们如何扭转局面?

我们如何确保学生从一开始就接触到最好的最佳实践,以便他们认为其他任何做法都是错误?

我们如何使课程更具沉浸感?

以下是大学可以做的一些小事和大事。

1. 从一开始就使用 DevOps 工具

学生在做 CS 家庭作业时应使用 Git 等源代码存储库以及 Jenkins 等 CI/CD 工具。这些流程应确立为正常的工作方式。教授应期望通过链接到 Git 提交和 Jenkins 输出日志来上交家庭作业。

一些讲师无疑会觉得,在不增加 Git 复杂性的情况下教授一年级计算机科学已经足够困难了。然而,大多数 IDE 都使简单的签入/签出操作变得轻而易举,尤其是对于没有分支的单人项目。当项目变得更具协作性时,学生将准备好学习更高级的 Git 功能。

2. 家庭作业应生成网页,而不是控制台文本

去年,我与一屋子三年级计算机科学专业的学生交谈,震惊地得知大多数人不知道 HTML。课程相当标准——本科算法等等。HTML 是你在艺术系学的东西;计算机科学系是为认真的学生准备的。

我认为在严肃的计算机科学理论和意外地变成 Web 应用程序训练营之间存在一个中间地带。

说大多数软件工程师编写的代码在某种程度上是基于 Web 的应用程序的一部分,这并不是一个激进的说法。在 Squarespace 和 Google 等公司,软件工程师的 IDE 为新程序提供默认模板。这样的模板适用于自包含的 Web 服务器,该服务器将输出定向到网页。即使是一个简单的“Hello world!”程序也是一个 Web 服务器,它输出问候语作为 HTTP 请求的结果,并且默认情况下会生成日志记录信息、监控指标等等。

是的,对于入门学生的“打印你的名字 10 次”程序来说,这有点过分了。但在那之后,生成一个网页!

3. IT 课程应具有沉浸感

正规教育如何更好地模仿我有幸受益的沉浸式体验?

大多数 IT 课程都是自下而上的。学生学习单个子系统,然后是更高级别的抽象。最后,他们学习如何将所有内容组合在一起。在他们大学生涯的后期,他们学习使这一切可持续发展的最佳实践。或者,更典型的情况是,这些可持续性实践要到以后才会学到,届时新毕业生找到工作并被分配给一位同事,这位同事会解释“现实世界中事物是如何运作的”。

相反,IT 课程应该从一个遵循所有最佳实践的工作系统开始。学生应该将此视为常态。他们可以剖析各个子系统并将它们重新组合在一起,而不是从头开始构建它们。

奥斯陆大学的系统管理硕士课程包括一个为期数周的沉浸式体验,称为正常运行时间挑战赛。1 学生被分成两队,每队都获得一个基于 Web 的应用程序,包括多个 Web 服务器、负载均衡器、数据库等等。该应用程序是一个名为 BookFace 的简单社交网络应用程序。

一旦系统运行,讲师就会启用一个系统,该系统向应用程序发送不断增加的模拟流量。每五分钟检查一次每个团队系统的正常运行时间。如果站点正常运行,团队会收到一定数量的资金(积分),如果页面在 0.5 秒内加载,则会获得少量奖金。如果站点关闭,则会从团队中扣除资金。这模拟了典型的网站商业模式:只有当站点正常运行时,你才能赚钱。更快的站点更具吸引力和盈利能力。客户通过转向竞争对手来应对站点关闭或速度慢的情况;因此,那些性能较低的站点会亏损。

挑战赛持续数周,在此期间,学生学习执行常见的 Web 操作任务,例如软件升级、错误修复、任务自动化、性能调整等等。受 Netflix 的 Chaos Monkey2 的启发,各个主机被随机重启以测试整个系统的弹性。

正常运行时间挑战赛使学生能够理解 IT 对组织的价值,并识别影响此价值并允许持续改进的 IT 流程。因此,学生更有动力,也更能够评估自己的工作。这提高了参与度,并促进了更实际的课堂讨论。它在学生的行为和他们创造的价值之间创建了直接的反馈循环。最重要的是,它使学生更好地为现实世界做好准备。

4. 从一开始就具有沉浸感

IT 项目通常涉及某种遗留系统。最恰当的比喻是,当卡车在高速公路上行驶时,被要求更换卡车的轮胎。

软件工程师花费更多的时间阅读别人的代码,而不是编写自己的代码。我们进化现有的系统。全新的或“重新开始”的机会很少见。我遇到过的许多人从未处于从头开始设计新网络、应用程序或基础设施的情况。为什么教育不能更好地让学生为此做好准备?

像正常运行时间挑战赛这样的东西能否更早地引入到教育过程中?

也许在开学的第一天,学生不仅应该拿到教学大纲的副本,还应该拿到工作系统的管理控制面板的用户名和密码。指导和实验可以围绕维护此系统进行。学生将拥有自己的 Wiki 来维护文档和操作手册。

每个学生都将拥有自己的工作系统,但我建议每隔几周随机将学生重新分配以管理不同的系统。看看他们的同学如何以不同的方式做事将具有教育意义。此外,学习良好编写的操作手册的价值的最佳方法是继承别人维护不善的操作手册。

机构正在开发更具沉浸感的教育策略。例如,路易斯安那州的一所社区学院与行业合作,正在开发一个高度沉浸式的 DevOps 学位课程。(在本文发表时尚未公布。)

结论

教育应力求从一开始就规范最佳实践。在这些最佳实践之外工作应被视为错误。学生不应在毕业后努力学习最佳实践,如果潜在的新雇主尚未实施这些实践,他们应该感到震惊。

IT 和 CS 课程都可以构建得更具沉浸感,因为沉浸式教育更可靠地反映了现实世界。它使学生为行业做好准备,并更好地为选择该道路的人的研究提供信息。先看到森林,然后理解树木,有助于学生在学习之前理解他们为什么要学习某些东西。它更注重实践,因此更具吸引力,并且适合游戏化。

我们的第一次经历巩固了对我们来说什么是正常的。学生应该从看到一个运转良好的系统开始,剖析它,学习它的各个部分,逐步深入细节。在他们体验过一个运转良好的系统之前,不要让他们看到运转不良的系统是什么样的。运转不良的系统应该让他们感到厌恶。

参考文献

1. Begnum, K., Anderssen, S.S. 2016. Usenix Journal of Education in System Administration 2(1); 正常运行时间挑战赛:通过游戏化实现价值驱动运营的学习环境;https://www.usenix.org/jesa/0201/begnum。

2. Tseitlin, A. 2013. 反脆弱组织。Communications of the 56(8): 40-44.

相关 文章

本科软件工程
- Michael J. Lutz 等人
满足专业软件开发的需求
https://queue.org.cn/detail.cfm?id=2653382

与艾伦·凯的对话
与 Smalltalk 的创造者以及更多人的深度对话。
https://queue.org.cn/detail.cfm?id=1039523

产品经理的演变
- 艾伦·奇萨
需要更好的教育来发展学科
https://queue.org.cn/detail.cfm?id=2683579

托马斯·A·利蒙切利是纽约市 Stack Overflow Inc. 的站点可靠性工程经理。他的著作包括云管理实践 (http://the-cloud-book.com)、系统和网络管理实践 (http://the-sysadmin-book.com) 和系统管理员的时间管理。他的博客位于 EverythingSysadmin.com,推特账号为 @YesThatTom。他拥有德鲁大学计算机科学学士学位。

版权 © 2017 由所有者/作者持有。出版权已授权给 。

acmqueue

最初发表于 Queue 第 15 卷,第 3 期
数字图书馆 中评论本文





更多相关文章

艾伦·奇萨 - 产品经理的演变
软件从业人员都知道,产品管理是软件开发的关键组成部分。产品经理与用户交谈以帮助确定要构建什么、定义需求并编写功能规范。他们在整个软件构建过程中与工程师紧密合作。当出现技术挑战时,他们充当想法的共鸣板,帮助平衡进度,并在需要技术修订时反驳执行团队。产品经理从第一行代码编写之前就参与进来,直到代码发布之后。


乔恩·P·达里斯、贾斯汀·雷奇、吉姆·沃尔多、伊莉丝·M·扬、乔纳森·惠廷希尔、丹尼尔·托马斯·西顿、安德鲁·迪恩·何、艾萨克·庄 - 社会科学中的隐私、匿名和大数据
开放数据对于科学具有巨大的潜力,但是,在人体受试者研究中,隐私与发布高质量开放数据之间存在张力。管理学生隐私和学生记录发布的联邦法律表明,匿名化学生数据可以保护学生隐私。在这一标准的指导下,我们对来自麻省理工学院和哈佛大学在 edX 平台上的 16 个 MOOC(大型开放式在线课程)的数据集进行了去识别并发布。在本文中,我们表明,这些和其他去识别程序需要更改数据集,从而威胁到基线分析的复制和扩展。为了平衡学生隐私和开放数据的好处,我们建议关注在不匿名化数据的情况下保护隐私,而是扩展强制研究人员维护开放数据集中的受试者隐私的政策。


迈克尔·J·卢茨、J·费尔南多·纳韦达、詹姆斯·R·瓦利诺 - 本科软件工程:满足专业软件开发的需求
在 1996 年秋季学期,RIT(罗切斯特理工学院)在美国推出了第一个本科软件工程课程。该课程是五年规划、开发和审查的结晶,从一开始就旨在为毕业生在商业和工业软件开发领域的专业职位做好准备。





© 保留所有权利。

© . All rights reserved.