亲爱的 KV,
我的大部分职业生涯都在不同的公司担任开发人员和软件架构师,包括初创公司和大型成熟企业。我一直很幸运能够参与到我感兴趣的项目中,其中一些项目处于计算技术的前沿。许多有趣的项目都与研究密切相关,但我一直处于实施方面而不是研究部分。最近,我倾向于更多地涉足研究,但我没有领导此类项目的资历,因为它们通常需要高级学位。距离退休还有大约十年左右的时间,我发现自己在考虑各种博士课程,这在我年轻时是绝对不会考虑的。当我完成本科学习时,我真的很想在工业界工作,并且像许多人一样,偿还大量贷款。现在考虑这些对我来说太晚了吗?一方面,花几年时间攻读博士学位,仅仅为了能够跨越从开发到研究的界限,这似乎很疯狂,但另一方面,也许并非如此。如果我回去,我会,嗯……
一位非常成熟的学生
亲爱的非常成熟的,
难道学习在任何时候都没有价值吗——为了学习本身?一个好的博士课程的目的不是为了成为一张饭票;它的目的是给你技能和时间,让你真正深入研究你认为值得努力的问题。而且这将需要大量的努力。像你一样,KV 在研发的研究方面也花了足够多的时间,看到了获得博士学位所涉及的大量工作。如果你认为 KV 鼓吹喝酒是应对公司环境中市场营销人员的一种方法,那与他亲眼目睹的那些即将完成论文的人的自我虐待相比,简直不值一提。通宵达旦,剧烈的情绪波动,向你希望提及的尽可能多的神灵发出热情洋溢的恳求,精神崩溃——KV 都见过。
这些是反对追求这种事情的理由吗?当然不是。风险越大,回报越大,如果你成功了,这将是一项你可以回顾并 wryly 一笑的成就。博士后们从不笑,因为博士后们已经过了笑的阶段。然而,在掏出你的申请费并写下所有那些文章之前,有一些事情需要考虑。
作为一个非常成熟的学生,你会有一些优势和劣势。对于任何可能寻求这种文凭的人,无论年轻还是年长,都有一些事情需要考虑,所以让我们沿着羊皮卷之路,看看它们是什么。
首先也是最重要的是,你应该以知识本身就是奖励的理解进入任何类型的学习计划。虽然这种令人难以置信的理想主义观点可能与你对 KV 的坚强、厌世、沉默寡言的印象相冲突,但这仍然是成功完成高级学位旅程的关键。虽然有些人并没有以追求知识为核心,但仍然获得了高级学位,但我遇到的在这方面做得最好的人,在某种程度上,都对世界和他们正在解决的问题充满了好奇。没有什么能像抽象的——有些人可能会说是疯狂的——专注于获取知识那样,在漫长而黑暗的工作之夜支撑着一个人。
如果你没有对了解新事物有强烈的渴望,并且——在不断被自己的智力缺陷所拒绝的同时——继续以近乎西西弗斯式的方式攀登你自己的无知之坡,那么,也许高级学位不适合你。另一方面,如果你是这种疯狂类型的人,请继续阅读一些更实际和更少哲学性的想法。
成功地完成学业还需要你考虑一些实际问题。KV 会假设你有足够的经济能力来花费几年的时间工作,比如,比你迄今为止在工业界找到的工资率更低的薪酬。如果你的目标是财富,那么有比加入高级学位课程更快的赚钱方法。你需要的其他东西——这些是我在观察我的研发项目中的 R 部分时看到的最重要的——是:一位好的导师,你的项目或部门的支持,一些清晰的散文写作能力,以及接受和整合批评的能力。你会注意到,这些都与年龄无关,但是在你开始任何此类课程之前,拥有一些生活和工作经验会有一些明显的优势。
当你攻读高级学位时,你的导师就是你的老板——而且不仅仅是任何老板,而是一个可以要求你做各种工作,并且你将从他那里获得指导和知识,而不是股票或奖金的老板。选择导师比在公司面试新老板重要得多。大多数开发人员每 18 到 24 个月更换一次工作;大多数高级学位需要 48 到 72 个月,这意味着你将为你导师工作的时间比你在典型的行业工作中工作的时间长两倍以上。
务必阅读你的导师迄今为止撰写的论文,并查看他们的论文。你将要做的一部分工作是与你的导师一起撰写论文,他将成为你在与他们一起工作期间产生的几乎所有作品的合著者。如果你读了他们的论文,并且认为“呃,这太糟糕了”,那么无论你对他们的其他看法如何,或者他们在学术界其他地方的评价如何,你都应该跑——而不是走——开。事实上,你不应该申请一位你没有阅读和欣赏其论文的导师的项目。仅仅因为某人是一位著名的研究人员,并不意味着你的思想和他们的思想会以对你们双方都有利的方式融合在一起。选择导师的目标是找到一位可以帮助你学习研究技能的人。作为一个成熟的学生,你应该已经具备软件开发的技能。
接下来要考虑的是你将要加入的团队或项目。看看该项目最近培养的几位博士,看看你是否可以想象自己与那些人一起研究那些问题。你的论文是你的论文,但它必须融入到团队的整体研究流中。所有高级学位项目和团队都有包含其最新出版物的网页。至少在考虑申请之前阅读过去几年的摘要。
很多这些信息都可以通过反向面试——或者聪明人在真正的面试中所做的事情来收集。当你被面试时,你最好也在面试面试你的人。这就像迷幻药上的逆向心理学。如果团队邀请你喝酒,说“是”,然后确保他们比你喝得多,并确保提出好问题。询问他们的工作流程,论文在提交给会议之前如何在内部审查,他们多久互相展示他们的工作,以及反馈采取何种形式。你最不想要的是一群有毒的混蛋,他们会拆穿你的想法,以此作为他们通过逆境让你变得更强大的方式。那种胡说八道就是我称之为的:胡说八道。
如果在计算机科学领域有任何需要清晰写作的努力,那就是攻读高级学位。最后,你将写出像中篇小说一样长的东西——大约 100 页写得好、经过深思熟虑的散文。你在此过程中产生的代码是为了支持论文,并且 KV 认为,它也应该是一个与写作并存的重要成果。然而,你完成学位的评判标准不仅仅是代码是否运行,而是想法是否能引起共鸣。如果你的委员会不喜欢你推销的想法,而你推销想法的方式是通过写作,那么你就无法完成学业,要么你需要做很多很多的修改,要么你会举手投降,成为 ABD(除了论文之外都完成了)。如果你认为你的写作水平不高,那么是时候阅读我向程序员推荐的两本书了,用于散文写作:威廉·津瑟的《写作要义》和斯特朗克和怀特的《风格的要素》。
我在这里要提出的最后一点——为了文本长度和我的血压——是你必须能够接受和整合批评才能完成高级学位。很少有人在进入此类课程时就拥有完全成型、正确的想法,并直接转化为他们的论文,我在过去的 40 年里只遇到过少数几位。我可以用一只缺了几根手指的手指来数这些人。作为研究来改进你的想法的过程需要受到挑战,并愿意倾听别人的意见。考虑它,衡量它,甚至可以用克来称重它,同时保持微笑,并控制住告诉他们他们有多么错误的冲动。他们可能是错的,但首先你必须倾听。那种喜欢在开放式办公室里对着其他开发人员尖叫他们有多么愚蠢的开发人员,不是那种应该攻读高级学位的人,因为这个过程的重要组成部分是你的想法受到挑战和剖析——有时是温柔的,有时则不然。
你能在你公认的成熟年龄做到这一切吗?有人说数学家在年轻时做得最好。我说在计算机科学中,经验往往是最好的老师,如果我们能从中学习,我们就能在人生的任何阶段学习任何东西。
KV
Kode Vicious,凡人称之为 George V. Neville-Neil,为了乐趣和利润从事网络和操作系统代码的工作。他感兴趣的领域是计算机安全、操作系统、网络、时间协议以及大型代码库的维护和管理。他是《The Kollected Kode Vicious》的作者,并与 Marshall Kirk McKusick 和 Robert N. M. Watson 合著了《The Design and Implementation of the FreeBSD Operating System》。自 2014 年以来,他一直是剑桥大学的工业访问学者,在那里他参与了几个与计算机安全相关的项目。他获得了马萨诸塞州波士顿东北大学的计算机科学学士学位,并且是 、Usenix Association 和 IEEE 的成员。他的软件不仅在地球上运行,而且还作为 VxWorks 的一部分部署在 NASA 的火星任务中。他是一位狂热的自行车爱好者和旅行家,目前居住在纽约市。
版权 © 2023 归所有者/作者所有。出版权已授权给 。
最初发表于 Queue 第 21 卷,第 1 期—
在 数字图书馆 中评论本文
Ellen Chisa - 产品经理的演变
软件从业人员都知道产品管理是软件开发的关键组成部分。产品经理与用户交谈以帮助确定要构建什么,定义需求并编写功能规范。他们在构建软件的整个过程中与工程师紧密合作。他们充当想法的共鸣板,在出现技术挑战时帮助平衡进度,并在需要技术修订时向执行团队施压。产品经理从编写第一行代码之前就参与其中,一直到代码发布之后。
Jon P. Daries, Justin Reich, Jim Waldo, Elise M. Young, Jonathan Whittinghill, Daniel Thomas Seaton, Andrew Dean Ho, Isaac Chuang - 社会科学中的隐私、匿名和大数据
开放数据对于科学具有巨大的潜力,但是,在人体受试者研究中,隐私和发布高质量的开放数据之间存在张力。管理学生隐私和学生记录发布的联邦法律表明,匿名化学生数据可以保护学生隐私。在该标准的指导下,我们从 MITx 和 HarvardX 在 edX 平台上的 16 个 MOOC(大规模开放在线课程)中取消识别并发布了一个数据集。在本文中,我们表明,这些和其他去标识化程序需要更改数据集,从而威胁到基线分析的复制和扩展。为了平衡学生隐私和开放数据的好处,我们建议将重点放在保护隐私上,而不是通过扩展迫使研究人员维护开放数据集中的受试者隐私的政策来匿名化数据。
Michael J. Lutz, J. Fernando Naveda, James R. Vallino - 本科软件工程:满足专业软件开发的需求
在 1996 年秋季学期,RIT(罗切斯特理工学院)在美国启动了第一个本科软件工程课程。该课程是五年规划、开发和审查的结晶,从一开始就旨在培养毕业生在商业和工业软件开发领域担任专业职位。