译文丨为什么做程序员会让我成为一个更好的医生?

clipboard.png

Stanford Medicine Unplugged 是一个为学生提供的论坛,记录他们在医学院的经历。学生们撰写的文章在学年期间每周在Scope上发表一次;整个系列博客可以在Stanford Medicine Unplugged分类中找到。

原文链接:https://scopeblog.stanford.ed...


Tim Keyes Published on March 18, 2020

作为一名医学博士生,我的研究方向更多的是机器学习和算法开发,而不是生物学,我花了大量的时间来思考我所需要的研究技能和作为一名未来的医生提供良好的临床护理所需要的技能之间的脱节。

我的研究重点是建立小儿癌症治疗反应和复发的预测模型,所以我的大部分时间都是在写 R 和 Python 代码,用来整理、可视化和建模从患者那里收集的数据。然而,尽管我把大部分时间都花在了编程上,但我知道,在临床环境中,编码并不是护理病人所需的前 20 名(.........或者说前 100 名)的技能。

不过,几年来在这两种环境下的经验告诉我,我从做程序员的过程中学到的一些教训,可以很好地应用到我作为一名医学生的生活中--这也是我未来平衡这两个世界的好兆头。

以下是我的一些感悟。

将问题分解成子问题

对于任何数据科学或编程项目来说,将你的总体目标分解成一系列更小、更易管理的目标,每次都能处理好的目标是至关重要的。例如,如果你要实现一个有三个不同步骤的算法,一个最佳的策略通常是先写出分别实现每个步骤的代码,然后再写出一个将它们结合在一起的函数。通过这样做,你可以让你的代码保持有条理、高效和易懂。

我发现自己在医学上也应用了同样的原则。例如,在记录病史时,将对话分成几个独立的步骤,即 「现在的病史」、「过去的病史」、「社会史」等,每一个步骤都对应着病人的背景和需求的一小部分。这样一来,我就能可靠地获得我所需要的所有信息,不会遗漏任何重要的信息。

备忘录式记忆法

在计算机科学中,「备忘录化」是一种编码技术,可以通过重用之前已经解决过的问题的答案来加快算法的速度。换句话说,「备忘录化」的算法只需要花时间从头开始解决一个问题一次 —— 以后每次遇到同样的问题,它就会简单地查找旧的解决方案(就像备忘一样),而不是第二次从头开始重新解决问题。这意味着,算法第一次解决问题的速度会比较慢,但在以后解决同样的问题时,效率会提高很多。

从很多方面来说,我觉得做医学生就像上了一堂记忆力的大师课。很多东西刚开始学的时候都会让人应接不暇,必须要掌握好小的步骤,才能向大的方向发展。比如说,在医学院的第一个季度,我在听诊器上挣扎着要通过听诊器听出任何心脏的声音,我和同学们练习了好几遍才终于成功。他们向我展示了他们的听诊器放置方法,如果对我也有效,我就把它作为我的过程的一部分。

一年后,全面的心脏检查 -- 包括听杂音、摩擦和心跳加速--成为我的反射性工作,以至于我几乎不需要考虑。尽管一开始很慢,但我最终还是掌握了每一个步骤,并结合过去对我(或我的同学们)有效的方法,形成了一套完全「备忘录式记忆」的方法。

经常检查边缘案例

在编程中,「边缘案例」指的是你通常不会想到的情况。例如,在一个计算机程序中,比较两个数字并告诉你哪一个大,「边缘情况」可能是指当两个数字完全相同时发生的情况(因为从技术上讲,两个数字都不比另一个大)。一般来说,思考和测试边缘案例对于确保你的代码不会在看到一些意料之外的东西时崩溃是很重要的 -- 这可能会导致灾难性的结果!

在医学中,对边缘案例的核算需要对边缘案例进行核算,这就要求我们在编写代码时,要考虑到边缘案例的重要性。

在医学上对边缘案例进行核算,需要和编程中一样的创造力和前瞻性思维。通常情况下,医生们必须进行「如果」的思考,以考虑到多种诊断的可能性,即使看起来只有一两个可能性。例如,我和我的顾问有一个病例,一个病人在开始化疗前一天就出现了流鼻涕。基于病人过去的季节性过敏史和那天的高花粉量,大多数迹象似乎表明没有什么可担心的。但是,为了排除病人感染了急性病毒性感染的可能性不大,当他的免疫系统被化疗压制后可能会变得严重的「边缘情况」,我的顾问在开始治疗前一定要做一些常见的虫子的测试。

尽管计算机科学和医学看似不同,但我已经开始欣赏他们的许多相似的思维方式。其中包括对创造力、深思熟虑和高效解决问题的共同承诺。基于这些原因以及更多的原因,我希望 —— 尽管我不太可能在病房里直接使用我的编码技能 —— 但作为一名程序员最终会让我成为一名更好的医生。

clipboard.png

你可能感兴趣的:(程序员思维工具)