对提问方式的思考
提问的智慧 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md
在阅读这篇文章以后,总体来说,我希望我尽量能够做到上面所提醒的内容。关于提问,我觉得要获得解答,首先需要让对方完全理解自己的疑问,要做到这一点,应该学会站在别人的角度预设:假设此时是自己遇到了别人的提问,在完全不了解情况的背景下,都可能需要哪些信息;然后,自己在提问时再尽量描述得完整清晰。提问的智慧里提到了一个很好的说法,就是“提前想象别人可能会怎么反问你”,提前写好可能需要的回答,我希望我一直以来也都坚持这么做了。一般情况下,计算机类的问题不只是需要描述自己当前遇到的事件,还需要把一些必要的背景也一并描述。在计算机方面,一个bug未必就是由一个表面问题导致的。
其次,描述问题时应该尽量做到言简意赅,描述精准,不要问一些没意义的主观性内容,比如“我觉得这个设计不好”、“今天天气不错”这样的话。描述清楚自己的问题,表达一下自己的推测,这样的内容就足够了。对于蠢问题,我的一般反应是跳过不看,或者看心情回答几个。我和作者的想法不太一样,我觉得蠢问题也是提问的一环。特别是在一个社区里面,蠢问题也有存在的必要。把解答过的蠢问题做成合集,至少可以避免更多一样的问题反复出现。此外,只要是和主题相关,那解答一次也无甚大碍,因为我觉得人不能保证自己永远不会卡在弱智问题上。当然,该有的礼貌用语都是要有的。
此外,在提问前先尽量自己在网上查找资料也是必要的,一些常见问题,比如环境搭配、安装教程,网上一般已经有比较全的内容了,没有必要为此去询问别人,毕竟,除了顾问,没人有义务为别人解决问题。在查找网络资料时也有技巧:首先,尽量不要使用百度,百度搜索现在已经可以称为残废了。我不知道是因为各个网络服务商都禁止搜索引擎爬取资源、法律法规限制还是因为百度技术倒退,但百度使用体验极差这件事是真实发生的,用百度基本只能搜索到贴吧、csdn和知乎的内容,就连博客园都很难看到,甚至连贴吧内容都很难匹配得到,至于一些个人博客就更不用说了。作为一个程序员,甚至说作为一个使用电脑的人,都应该有一定的英语基础,学会怎么使用谷歌。哪怕是用翻译软件一点点翻译网页,或者是用谷歌去搜索中文内容,你就会发现搜索体验瞬间就强了不少。此外,学会使用git常用操作,学会在github上提issue,学会看stackoverflow等网站,这些技巧对于一个合格的工程师来说真的很重要。
关于社区,至少我个人认为,国内的计算机相关论坛基本上堪称荒凉。要么是在大论坛里分了一个子版块,少有深度话题,比如贴吧和NGA;要么就隐藏的很深,或者限制注册,比如看雪等。就个人观点来看,我觉得遇到了问题还是尽量找专业性更强的论坛,最好只讨论此项目相关内容。此外,对于一个要求专业性的论坛,持续有新鲜血液流入才能保证内容更新,否则只能讨论一些粗浅内容,或者慢慢荒芜。但是国内论坛方面似乎在慢慢收紧,这一方面可能很难再诞生出更好的社区了。对于已有的论坛,我的个人理解是在论坛提问时尽量让问题和答案公开,避免重复问一样的问题。如果有类似的情况,应该考虑在帖子里继续跟帖而不是另开帖子。同时如果有必要的话,尽量附上能辅助理解的图片和报错信息。
除过直接问人和查阅手册,在22年底chatgpt发布以后,一些常见的问题直接问gpt也是挺不错的选择。因为ai不会生气,永远有耐心,常见问题直接问它会方便的多。虽然以目前的神经网络这种模型来看,ai经常产生“幻觉”,经常信口雌黄,但是搭配搜索、数学等插件以后效果就明显好了不少,此时模型的回答依赖的是搜索到的结果而不全是自身的梯度参数。实际体验已经可以代替人去一条条搜索了。除此之外,模型本身就可以堆搜索结果进行总结,这也更加方便使用。
除过这种用法,还可以利用ai学习构建自己的知识库。在本地部署开源模型,把常用的手册收录进去,让ai来根据知识库进行回答也是一个不错的方法。当然,ai不能完全代替人类。在我长时间的使用中,我发现当前的ai实际上对提问方式和提问内容更加敏感。 prompt中最好仔细认真地描述自己的问题,同时尽量带上错误信息和问题背景,这样能显著提高正确答案的生成概率。此外,gpt对双关词、上下文省略等方面识别效果还明显不如人类,再加上有最大长度限制,所以遇到问题还是问人类更靠谱一些。但常见问题,包括诸如怎么部署一个环境、编译器的常规报错这些内容,目前的ai完全可以解决,甚至可能比人做的更好。另一个方面,和ai对话,学习写有效的prompts,其实也是在锻炼一个人的提问能力。
此外,复习已有的教程也算是一个学习、解决疑惑的方法。在学完PA0和PA1的内容后,再次返回查看以前的预学习阶段讲义,以前看的头晕脑胀的部分也有了新的认识,后面的问题其实答案都已经在前面有了暗示。
最后再说一点别的,我觉得提问需要智慧,回答也需要。在学习的过程中存在着“知识的诅咒”:对于已经学会掌握的人,解决问题的步骤信手拈来,但是对于还没有掌握的人来说,问题就像是一团乱麻,根本不知道从何谈起。再加上无法解决问题的焦虑心情,问问题没有逻辑、着急上火也是有可能的事。在这种情况下,怎么帮助别人重新打好基础,纠正错误比直接回答问题可能更重要。