物理和天文学如何塑造我作为一名开发人员
关于为什么我相信物理学家可以成为伟大的开发人员的乐观评论
我认为自己非常幸运,我的工作日中有相当比例是SP 电子 NT编程。在工程行业信息管理领域的前沿问题上,提供程序化解决方案时,往往伴随着自豪感。然而,这个职位带来的另一种感觉是轻微的内疚,因为在我的成长岁月中,我一直相信这些工作是专门为计算机科学家保留的。有时很容易觉得我正在担任一个更适合由其他人担任的角色。
然而,在我的第一个研究生角色中,我经历了顿悟,激发了我的信念,即也许我毕竟不是一个如此可怕的冒名顶替者。物理学学位是目前最难的学位之一(或者我已经同意我的物理学家同行——我相信这是一个可靠且公正的样本观众),幸运的是,成为一名优秀物理学家所需的许多技能似乎都很有价值可转让;这一发现让我在 4 年的大部分时间里研究了晦涩的天文物体后,感觉有点被证明是正确的。当我考虑到迄今为止我觉得我正是我工作的合适人选的场合时,我经常可以将这种成功视为技能发展的结果,这些技能的发展构成了物理学学位的独特组成部分。
这篇文章是我关于物理学如何为我的开发工作做好准备的个人经验,我敢说我的观察可以被推断出来,以提供关于物理学家如何成为优秀开发人员的有根据的猜测。
问题解决与调试
首先,在物理学学位期间测试一个人的知识和熟练程度的最流行方法之一是通过大量问题。
我在我的角色中遇到的任何问题解决的核心是,每个单独的问题可能与上一个完全不同。要成为一名出色的问题解决者,必须能够理解他们以前从未遇到过的情况。为了做到这一点,一个人的知识的重要性被他们应用知识的能力、创造性思维、有条不紊地思考和独立思考的能力所取代。
解决物理学中的问题几乎完全相同:理解核心概念很重要,但是开发一个工具包和过程,让您能够将这种理解应用于新情况,才是真正获得学位和物理学家诞生的地方。
在我的工作领域,开发人员正在为尚未解决的问题创建程序化的解决方案,这是相当普遍的。我发现自己处于一个真正幸运的位置,(除了一些显着的例外)当面对需要解决的不熟悉的用户问题或现有解决方案中出现的错误时,我不会感到害怕(没有这样的错误与当然是我…)。确切的工具包和解决问题的过程因人和学科而异,但总的来说,它们使新问题成为机会而不是障碍。
我与许多物理学家一起工作,他们在面对陌生的发展挑战时的务实和成熟经常给我留下深刻印象。我认为自己很幸运能够在解决问题方面取得如此领先的开端,因为我真的相信这大大增加了我作为开发人员所能提供的东西。
理解复杂内容
数学家、物理学家和化学家等 STEM 学科专家有一些相当普遍的共同点;他们都有丰富的经验来解决概念上复杂的问题。代码仅与它所体现的过程一样有用,这使得在语法海洋中扎根并牢牢掌握潜在上下文的能力成为一项宝贵的技能。
打个比方,我可能再也不需要利用我对白矮星和中子星的了解了。然而,我在设计数值模拟以预测此类实体的配置时保持相关科学前沿的能力,从而有意义地将结果置于上下文中,这是我在创建工程分析应用程序时经常使用的可转移技能。话虽如此,令我惊讶的是,在过去的几个月里,我又沉浸在特征向量的世界中,我本可以愉快地将这个概念归档到离开大学的经历的夹缝中,以及廉价的 jaeger 炸弹和可疑的葡萄酒。
数学
物理学本质上是应用数学,要成为一名优秀的物理学家,良好的数学技能至关重要。数学技能确实有助于您理解代码背后的上下文并很好地解决问题的能力,但是我已经用尽了这种推理途径。
通过数学,人们可以运用分析方法来优化代码性能。“大 O”表示法是研究算法的性能如何随其操作的数据结构的维度而变化的实践。
在学位期间研究的大多数物理问题实际上不可能在不进行一些近似和假设的情况下通过分析解决(在许多情况下,这还不够!)。解析地解决问题意味着可以单独使用笔和纸来完整地解决问题中的方程。一种常用的近似方法涉及忽略等式中的项,其量级与其他项相比可以忽略不计。我们使用“大 O”符号表示这些可忽略项,其中方程中的可忽略项表示其数量级。当然,物理和代码性能研究之间使用这种符号的方式不同,但是这里的核心数学是可转移的。
我发现算法效率分析对于我目前的角色开发高性能工程分析应用程序至关重要。我还从一位同事那里学到了很多关于“矢量化”概念的知识,在他的物理学研究期间,高功率计算是他的专长之一。当我发现自己戴着科学编程帽子时,我对矢量化的理解使我能够进一步完善我编写的算法。矢量化(或数组编程)是 Python NumPy 库使用的一种方法,例如,某些方法使用矩阵和向量运算来转换整个数组(减轻对数组中每个元素进行操作的需要,并产生 Python 固有的资源开销)循环)。
长话短说,凭借良好的数学技能,在编写高性能代码时,您可以提供很多帮助。
数据处理、数据结构和数据可视化
曾经试图描述任何物理过程的所有理论都基于数据驱动的洞察力得到证实或否定。数据收集、处理、分析和可视化构成了所有实验物理学(以及天文学——非实验性)的基石。因此,物理学家几乎可以在睡眠中将他们的数据从原始数据传播到数字和假设检验中,这并不奇怪。
在我攻读学位的第二年,我们强烈建议不要使用电子表格作为我们的数据管理手段。从那时起,使用 Python 及其无数强大的库来满足我所有与数据相关的需求已成为我的第二天性。因此,作为开发人员在任何成熟阶段使用数据一直是我的强项。从对新项目做出数据架构决策,到自己利用数据在业务洞察平台上呈现视觉效果,处理数据一直是我职责的一部分,我可以支持自己充满信心地交付。这是物理学为我在数字咨询和开发中的角色做好准备的最重要方式之一。
对报告、文档、演示文稿和项目要求的严格方法
可能是一个不太明显的联系,但我已经注意到了。在我学习物理的整个过程中,我逐渐意识到,要使我的任何技术写作获得高分,必须采用严肃的方法。没有重点描述和主观解释的余地。我开始变得相当擅长(即使我自己这么说)以我想象的计算机或机器人的方式编写报告:
- 不属于假定知识的缩写和术语必须先定义(解释),然后才能在文本中自由使用。
- 报告将被分成不同的部分,其中的每条信息都是逻辑流程的一部分,向读者提供他们需要知道的所有重要点。
在我对工作世界的体验中,令我惊讶的是,书面作品经常意外地充满了主观解释的广泛范围。从技术词汇的错误使用到复杂过程的“业务级别”流行语描述,此类文本正文中出现的歧义可能使整个书面作品难以解决其简短问题。
在花了数年时间学习将大到足以占据多个段落的措辞物理问题转化为一个数学问题或一系列数学陈述之后,我现在更喜欢以我将应用于数学问题的客观程度来对待目标和目的。通过严格运用我像计算机一样思考的策略,不仅是为了创造连贯的散文流,而且为了客观地满足简报的每个要求,我已经能够清晰地进行交流,这是我在上大学之前无法获得的。
我从没想过我的主人大部分时间都通过希腊字母(和偶尔的数字)组成的代数表达式进行交流,这会让我更好地掌握英语。我幸运地开发了一个系统,使我的书面交流能够准确传达我需要的意思,我再次感谢我不知道我的物理学学位正在带我走的旅程。
结论
我相当肯定,所有开发人员迟早会发现,在他们可以在他们的角色中利用代码之前,他们不必成为计算机科学家。尽管如此,冒名顶替综合症是一种胆怯的痛苦,我当然没有说的一件事是它是一种合乎逻辑的心理状态。
对负面情绪和感受的不断反思可能不是最令人兴奋的文章(也不是经常写文章)。因此,反思物理如何让我擅长我的工作对我个人来说肯定是有益的,我希望这篇文章也能给任何发现自己处于相同位置的人带来一些积极的影响。
vx zhiyan0112
浙公网安备 33010602011771号