跳转至

01月16日 - 预学习 1

今日学习

  1. 预学习 - 1. 如何科学地提问

注:链接首选为讲义,其次为视频。

预学习 - 1. 如何科学地提问

提问的智慧-读后感

Date/Time: 2025-01-16 17:32

Author: Haorui Zhang

  • 前言

    呀——已然是2025了。我也已并非完全是一个 Greenhand。“不看广告看疗效”的写法已落窠臼,“追忆式”的历史小故事也索然无味,成长路上也只是不敢开口的社恐er的磕磕绊绊……从当下这个属于我自己的历史节点而言,不如让我分享一些有趣的人和事吧——在被提问的过程中,我也看到了当年懵懂发问的自己。

  • “人机”提问

    以下事例为了保护隐私,已去除故事参考,重构虚拟故事——由GPT辅助。

    1. “时间差里的陷阱”:版本不匹配的隐患

      有个朋友M在配置服务器时,遇到了一些奇怪的问题。他信心满满地说:“这套流程我试过无数次,肯定没错。问题一定是服务器本身有问题!”他拿出配置文件和运行记录让我帮忙看。

      一开始,我也没发现太大问题,配置文件的格式和参数看起来都合规。但当我们一起检查运行环境时,我注意到一个细节:服务器使用的是旧版本的依赖库,而他之前调试成功的设备上使用的是更新版本。

      “这两个版本能通用的吧?”M略带怀疑地问。于是我们查阅了版本更新说明,果然发现旧版本并不支持某些参数组合,而他的配置恰好踩中了这个限制。

      “看来老版本真不行啊。”M摇了摇头笑道,“这真是个意外。”其实,版本问题并非稀奇事,而是许多技术问题的根源之一。习惯性忽略版本兼容性,常常会让人掉入看似意外的陷阱中。

    2. “神秘的默认值”:输入未设防的麻烦

      另一位朋友T在处理数据清洗脚本时,向我抱怨:“我的数据集一团糟,结果怎么都对不上!”他给我展示了脚本和输入文件,逻辑上似乎没有问题。

      我尝试运行了一下,结果发现输出的数据格式和预期完全不同,甚至多了一些奇怪的字段。经过排查后,我们发现问题出在脚本的默认设置上:有个参数在没有显式指定时,会以“自动生成”模式运行,而这会引入额外的处理逻辑。

      “原来是我没设参数!”T懊恼地拍了下脑袋,“明明可以显式定义,却觉得默认值没问题。”这件事之后,他总结了一条经验:默认值不是安全网,而是双刃剑,必须明确地掌控它们。

  • “精彩”提问——大智若愚,大愚弱智(谐音梗x2)

    而什么是“好问题”,什么是“精彩”提问呢?

    从提问者的角度,我想要做到如下步骤:

    1. 把能想到的办法都想一想,并且去尝试,记录尝试过程的电脑反应等

    2. 实在想不起来的时候,想去问朋友之前,再尝试想想办法——“就没有别的办法了吗”

    3. 真的真的想不起来了,好吧,真的要向他人问一问问题,那么就要做到:

      1. 能够列出你尝试过的所有办法;
      2. 每个尝试过的办法有详细记录,且说明出错点;
      3. 出问题之前的的关键性动作(尽管可能是不经意间的)都要列出来。

    我想只要这样做,问题就足够精彩,同时也几乎没有难以解决的了。

    而有的时候我会发现,当我真的按照提问的智慧中提到的——“在提问之前要做的”那样一步步做的时候,不一定到哪一步就已经解决了,并且一定会有前人遇到并解决了这个问题——换句话说,我还没有处于发现bug的第一线。不管是计算机还是做题,其实没有什么是自己真正无法解决的。大智若愚,一步步做就好了;反倒是耍小聪明不可取。

  • 独立解决问题 与 合作共赢 的思考

    RTFM/STFW 自然是一个有能力的开发者必备的技能,但我想这两个技能关联着更根本的能力:观察现象、分解问题、分析问题、搜索问题的能力——我相信只要会正确地搜索,那么问题也就已然抵近解决了。(尤其是准确地描述问题,这很重要,我把它放在了我另一篇文章:信息的编解码能力里面。)

    而我也在想,提升自己能力固然是应当的,但我们在成长过程中也会或多或少的遇到需要“合作”的情况。当新手需要我的帮助时,我该回答傻瓜的提问吗?我又该如何帮助“以前的自己”?我想,引导式回答是更好的办法,这能启发对方的思考,授之以渔。

    在合作中,秉承 “资源共享” “互惠互利” 和 “不重复造轮子” 的原则,作为搜索能力强的一方,可以稍微多承担一些工作;而作为能力弱的一方,则要多多动脑,遵守提问智慧的原则,多问多看多学多做——而其成长后,ta可以帮助更多的新手。这也许是一种传承吧。

(全文1500字左右)