Tim Keyes
Published on March 18, 2020
编译:徐九
作为一名医学博士生,我的研究方向更多的是机器学习和算法开发,而不是生物学,我花了大量的时间来思考我所需要的研究技能和作为一名未来的医生提供良好的临床护理所需要的技能之间的脱节。
我的研究重点是建立小儿癌症治疗反应和复发的预测模型,所以我的大部分时间都是在写 R 和 Python 代码,用来整理、可视化和建模从患者那里收集的数据。然而,尽管我把大部分时间都花在了编程上,但我知道,在临床环境中,编码并不是护理病人所需的前 20 名
(.........或者说前 100 名)
的技能。
不过,几年来在这两种环境下的经验告诉我,我从做程序员的过程中学到的一些教训,可以很好地应用到我作为一名医学生的生活中--这也是我未来平衡这两个世界的好兆头。
以下是我的一些感悟。
将问题分解成子问题
对于任何数据科学或编程项目来说,将你的总体目标分解成一系列更小、更易管理的目标,每次都能处理好的目标是至关重要的。例如,如果你要实现一个有三个不同步骤的算法,一个最佳的策略通常是先写出分别实现每个步骤的代码,然后再写出一个将它们结合在一起的函数。通过这样做,你可以让你的代码保持有条理、高效和易懂。
我发现自己在医学上也应用了同样的原则。例如,在记录病史时,将对话分成几个独立的步骤,即 「现在的病史」、「过去的病史」、「社会史」等,每一个步骤都对应着病人的背景和需求的一小部分。这样一来,我就能可靠地获得我所需要的所有信息,不会遗漏任何重要的信息。
备忘录式记忆法
在计算机科学中,「备忘录化」是一种编码技术,可以通过重用之前已经解决过的问题的答案来加快算法的速度。换句话说,「备忘录化」的算法只需要花时间从头开始解决一个问题一次 —— 以后每次遇到同样的问题,它就会简单地查找旧的解决方案
(就像备忘一样)
,而不是第二次从头开始重新解决问题。这意味着,算法第一次解决问题的速度会比较慢,但在以后解决同样的问题时,效率会提高很多。
从很多方面来说,我觉得做医学生就像上了一堂记忆力的大师课。很多东西刚开始学的时候都会让人应接不暇,必须要掌握好小的步骤,才能向大的方向发展。
比如说,在医学院的第一个季度,我在听诊器上挣扎着要通过听诊器听出任何心脏的声音,我和同学们练习了好几遍才终于成功。
他们向我展示了他们的听诊器放置方法,如果对我也有效,我就把它作为我的过程的一部分。
一年后,全面的心脏检查 -- 包括听杂音、摩擦和心跳加速--成为我的反射性工作,以至于我几乎不需要考虑。尽管一开始很慢,但我最终还是掌握了每一个步骤,并结合过去对我
(或我的同学们)
有效的方法,形成了一套完全「备忘录式记忆」的方法。
经常检查边界案例
在编程中,「边界案例」指的是你通常不会想到的情况。例如,在一个计算机程序中,比较两个数字并告诉你哪一个大,「边界情况」可能是指当两个数字完全相同时发生的情况
(因为从技术上讲,两个数字都不比另一个大)
。一般来说,思考和测试边界案例对于确保你的代码不会在看到一些意料之外的东西时崩溃是很重要的 —— 这可能会导致灾难性的结果!
在医学中,经常需要对边界案例进行核算,这就要求我们在编写代码时,要考虑到边缘案例的重要性。