在网上求助计算化学问题时的注意事项

在网上求助计算化学问题时的注意事项
Things to note when asking for help online for computational chemistry questions

文/Sobereva @北京科音
First release: 2011-Mar-1  Last update: 2024-Feb-4


 如今喜欢在论坛里、QQ里、邮件列表里求助计算化学问题的人越来越多,笔者也经常接到各种各样的人提出的形形色色的问题。但提问方式经常十分不恰当,令笔者和很多人很不悦。关于提问的方法笔者有很多话要说。问问题关键的原则我认为是“减轻回答问题者的负担,激起回答者的兴趣”,这样才能得到有用的回复。也就是说你的提问必须让回答者能够准确理解你的意思,并且答案一定通过较少的字数就足矣阐明,并且你的提问必须让答疑者觉得有价值,觉得你是值得被帮助的。然而做到这一点绝对不是单纯靠一些行文技巧实现的,只有满足下述要求的提问才能满足这条原则。这和提问者自身的素质、态度是关系密切的,不合格的科研工作者是提不出合格的问题的。此文有的地方措辞强硬,有些人可能会发现自己中枪,但实际上绝非在批评任何个人,撰文目的是希望有更多的人认识到什么问题该求助,什么问题不该求助,以及应该怎么求助,使得网上求助问题的质量、档次能够提升。

2021-Oct-18注:后来笔者又写了一篇《在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚》(http://sobereva.com/620),是对本文内容的关键性补充,务必一读。

笔者之前还写过一篇《有感于如今许多超懒的科研工作者》(http://sobereva.com/342),也与本文主题有一定关系,有兴趣者可以看看。


========== (1) 提问前该做的事 ==========


1 在问问题前,必须自己先仔细思考、查阅资料、尝试自行解决。我认为最起码先得自己花一天时间研究这个问题,如果得不到答案才能去问,而我建议是先得自己琢磨一周才能去问。不幸的是,现在的诸多提问者恐怕连一分钟都没好好思考过就问,一遇见不懂就问,仿佛回复者都是免费的活字典,而且问的问题甚至令人啼笑皆非,连入门的知识都没有,诸如“怎么计算p轨道键长”、“我优化一个原子,为什么程序报错”。有些问题则极其基础,比如“HF和DFT有什么区别”,HF、DFT的介绍在所有现今的量化基础书籍里都有,为何不自己先去看而非要提问,耽误别人时间?这是一种严重科研惰性、依赖性、缺乏自主独立性的表现。有些人,一本书摆在他旁边他绝对不看,但是你要是把书里的内容通过QQ一段一段发给他,他没准才会好好看、好好理解,可是谁有时间陪着他?如果别人问我这类问题,凡是预感300字以内不可能给他讲明白,我就不回复了,让他自己看书。提问基础问题的人必须明白,书之所以厚,别人回答问题之所以相对简练,绝不是因为书里几乎全是废话,那些内容对读者更深入理解问题往往是关键的。另外,过于基础的问题根本无法引发高人回答问题的兴趣,但往往会有对问题一知半解、表现欲强的人回复,听了这些人的回复很可能会被误导,以至于提问者对问题的理解从一开始就被歪曲了,给以后研究带来麻烦,还不如自己好好看经典书籍。另外,学习、思考的过程往往比解决一个具体问题更重要,比如执行某个程序出错,别人说加入某个参数,虽然可能这样做之后问题立刻解决了,但是其它的什么也没学到。或许凭自己找到相同答案得花很多精力,绕不少弯路,但这个过程绝不是浪费时间,这锻炼了分析问题解决问题的能力,只有这样不断锻炼才能逐渐成长,从提问者变成答疑者,而如果光靠问,菜鸟永远是菜鸟,永远超越不了给你答疑的人。网络的发达便利使得提问变得过于方便,导致了一大批懒汉的出现,虽然一方面促进了沟通和交流,却也使得年轻一批计算化学工作者(尤其是研究生)的平均学术水平和科研能力有极为显著的降低。如果早生20年,或者网络断了,那些人找谁问去?

顺带一提,如果你没有理论计算的基础知识,强烈建议先完整、系统学过一遍,然后有具体问题再问别人。理论计算的背景知识根本就不可能靠别人在网上的三言两语或者一些零七八碎的帖子就能给你真正讲明白的,绝对不要指望能纯靠网络答疑的方式学理论计算。北京科音的各种计算化学培训给零基础初学者提供了最好的一次性正确入门的机会,理论知识和程序使用都讲得极其系统和详细,量子化学可以通过北京科音初级量子化学培训班(http://www.keinsci.com/workshop/KEQC_content.html)入门、分子动力学模拟可以通过北京科音分子动力学与GROMACS培训班(http://www.keinsci.com/workshop/KGMX_content.html)入门、第一性原理计算可以通过北京科音CP2K第一性原理计算培训班(http://www.keinsci.com/workshop/KFP_content.html)入门。
 
2 不要请求别人帮助干那些应该自己干的事。有时看到有人发这类帖子,甚至内容只有一句“谁能帮我计算XXX?”,这分明是文章作者该干的事,这样的人脸皮实在太厚,太不把别人当外人。如果自己没能力做而需要找别人合作,起码得把回报写清楚。笔者曾接到不少这类求助,有数次都是对方说不知道怎样才能实现分析动力学轨迹的xxx特征,我说用VMD的Tcl脚本来实现,并且还把主要原理都说明了,对方却说自己不会Tcl语言、没有编程基础、时间紧迫之类,就让我帮她们编。这种事我是反感的,在我看来无外乎是给科研的懒惰找借口。不过,笔者还是过于心软,最后都帮她们编了,以后再遇上此事,笔者决心要铁石心肠毅然拒绝。

3 如果问题是关于程序运行出错的,别上来就把报错信息贴出来然后说“XX程序出错,怎么解决”,要好好阅读输出信息。我经常遇到匪夷所思的提问,比如有人问MOPAC程序出现这样的错误怎么办:
KEYWORD 'ANALYT' CANNOT BE USED HERE: ANALYICAL C.I. DERIVATIVES MUST USE FINITE DIFFERENCES TO CORRECT, REMOVE KEYWORD 'ANALYT' OR ADD 'NOANCI'。程序都清清楚楚地告诉了用户是什么原因、怎么解决,为什么还要问?再比如,某人用Gaussian做counterpoise任务出错了,说提示Error termination via Lnk1e in c:\g03 e01 install\l301.exe,从她后来贴的信息来看,这句错误前面一句提示就是The combination of multiplicity 1 and   233 electrons is impossible.,错误是什么原因已经明摆着,稍微过一下脑子就知道怎么处理。另一个经典例子就是菜鸟常说的高斯L502出错,95%情况在Error termination的上一行就显示Convergence failure,可是却总被无视。这样的提问绝不在少数,令人汗颜。所以,一定要好好看程序提示,好好分析,起码7成以上的错误都是能靠自己轻易解决的。另外要说的是,那些将量子化学作为工具研究具体体系的人,必须重视理论的学习,这样才能自行搞懂程序错误的原因。

4 要习惯Trial & Error方法解决程序使用中的问题,别直接就问“xxx关键词怎么用”、“是不是要输入xxx命令”、“输出中xxx代表什么意思”之类,要自己多试试、分析、比较,试了也毫无损失,又不是配置炸药弄不好就爆炸,比起等待别人回复,往往还不如自己去摸索速度更快。

5 Google is your friend。要习惯求助Google,我在网上见过的提问中多半都是可以通过Google找到答案的。尤其是程序运行、编译出错这类,把错误提示扔进Google一搜,就算不能直接找到管用的解决方法,起码也能得到诸多有用的提示。另外,书籍、文献、各类文档(比如程序手册、教程)都是你的老师,“不懂就问”这话没错,但在问活人之前先要询问无声的老师们。

值得一提的是,计算化学公社论坛(http://bbs.keinsci.com)是最具活力、专业性最强、可信度最高的计算化学交流场所,其中过往的讨论帖子是巨大的计算化学宝库,其首页就有google搜索栏可以对站内进行全文搜索,常见计算化学问题在里面一搜,基本都能找到答案。就连很多外国人甚至都通过google翻译来此论坛取经。

PS:不要用百度来搜索学术内容,也别因为通过百度搜索,找不到自己问题的解决方法就立马去问。百度是用来搜八卦的,而绝对不是用来搜学术、科研相关的信息的。向别人说“我百度搜了xxx,但没找到解决问题的办法”,这必定会遭到内行人的鄙视和耻笑。用Google搜索找到对解决问题有价值的内容的概率和效率皆是百度之流的十倍以上。

6 要想得到快速、有效的回复,就一定要选择合适的求助场所。比如计算化学公社论坛有量子化学版和第一性原理版,因此你问量子化学问题就别跑到第一性原理版去问。再比如Multiwfn程序有专门的交流论坛,中文版论坛为http://bbs.keinsci.com/wfn(是计算化学公社论坛的一个下属板块),英文版论坛为http://sobereva.com/wfnbbs,既然都提供了专门的论坛了,开发者在上面回复问题也特别勤快,显然就不应该再到别的乱七八糟论坛去问。求助的地方也应该是正经、上档次、有高人的地方,比如去什么百度贴吧、百度知道、小*虫、小红书等市井之地去问计算化学问题,能得到靠谱、有价值回复的几率必然微乎其微。另外,别忘了购买商业软件的时候价钱里也包含售后服务,一些高难问题,尤其是可能涉及到程序bug以及只有开发者才能说清楚的事情,应当直接联系软件销售商和开发者寻求解决,他们有义务提供解答,而且如果是从程序开发者处得到的回复,通常是最权威的。对于一些很冷门的程序(比如Terachem、ADF等)的使用问题应该直接问开发者或代理商,而没必要试图问其他人,毕竟根本没多少人用过这样的程序,即便用过通常也不会了解太多程序的细节问题。

7 如果提问的问题没人解答,未必是没有人懂,而很可能是你的提问方式不对,令别人无法或者不愿意解答,要好好检查提问是否符合本文提出的诸多要求。如果发现有不符合之处,建议先自己继续琢磨一阵子,如果还是无解,再把问题重新改写,使之充分满足本文要求,然后重新发出来,说不定就有人解答了。

8 你提问的场所的规章制度应当在提问前了解清楚,以免造违反规矩,扰乱秩序,引起他人不快,甚至被管理员逐出。比如计算化学公社论坛有置顶的新人必读贴,思想家公社QQ群的群公告里有详细的群规(http://sobereva.com/QQrule.html),这些都必须好好看看再发言。

9 切忌同时在两个及以上地方同时问相同问题,否则会招到回复者的不悦,甚至惹火回复者以及管理员。比如在思想家公社QQ群问了一个计算化学问题,马上又把问题直接复制到计算化学公社上作为帖子问了一遍,那么回复者刚在群里回完你,又看见你在论坛里发的同样的问题,心里肯定不舒服,仿佛自己白在百忙之中回复了你似的;要是在论坛里又回复你一遍等于回复了两遍,而如果不在论坛里回复一遍,又仿佛这问题没人能够回复。可见多处同时问同一问题是在给回复者增添麻烦。就算你想在多个地方问,提升获得解答的概率,那也应当是在一个地方问过,经过了很长时间,没有得到有效的回复,那才能在另一个地方再问,而且问的时候尽量换个问法。



========== (2) 提问的态度、礼仪 ==========


1 问问题时一定要态度谦虚、语言客气、高度尊重提问者。要记住在一对一的请教时,对方完全没有义务回复,人家不是你免费的导师,对方不会因回复而得利,如果回复了则完全是出于好心,应该怀着感激的心情。所以发问应注意措辞、语气。通过电子邮件提问时要有问候和落款。并且一对一提问时千万不能催促对方回复,否则容易惹火对方,记住高人都很忙,也不欠你的情。

2 提问的内容一定要认真撰写,提问者都不认真,还指望有人会认真回复?总看到一些帖子只有两三句话,甚至只有一句,且和标题相同,不仅态度不端正,也没把问题描述清楚。曾经有些人QQ问我问题时比如就说一句“XXX出错”,或者什么也不说,只把一段程序提示直接贴出来,我都没法确定他的意思,再加上这种随随便便的态度,直接无视。

3 问题描述要详细,必须提供回答者足够的信息使之能够得出答案。常见到某人只说“运行XXX任务出错,怎么办”,或者说Gaussian出现Error termination via...怎么办,这正如最令我头疼的“我的电脑老死机怎么办”这种问题一样,没有唯一的答案,解决办法都罗列出来足够写本小书了,大多数高人也不爱回复这样需要大费口舌的问题。正确的方式是:比如编译某个程序在某处出错,应当详细交代之前完整操作步骤、操作系统版本、相关的库文件版本、所用编译器等等;再比如咨询几个理论方法哪个更适用,应当描述清楚自己研究的问题、体系、计算能力、精度要求等等;还比如询问文章中一句话的意思,起码要把所在的段落以及上下段落都给出,或者直接把原文作为附件贴出。提供的信息越多,答案的范围越小,越容易在短时间内获得有效的回复。

4 重视对方每一条回复,切忌重复问相同的问题,因为这等于不尊重他人之前的回复,反复解释同一个问题容易让人恼火。如果上次的提问没问清楚,起码语言表述上要进行恰当的修改。在论坛上问,则一定要先搜老帖子,几乎完全相同的问题由不同的人问N遍的情况屡见不鲜。曾经详细回答过问题的人不会喜欢再重新复述一遍。笔者还经常碰到一个火大的情况就是,我给某人回复了、贴了好多对于解决其问题有直接关系的博文,居然他直接无视掉我的回复,给他的资料根本不看,还在继续自顾自地交代其自己的问题。既然都不理睬别人的回复,一点想获得解答的诚意都没有,干嘛还要问?这些人很容易惹火回复者,可能以后回复者再也不回复他的问题了。

5 得到某人认真的回复后,应当表示谢意,如果根据回复中的提示解决了问题,最好也告诉一下回复者,这样回复者知道自己的回复起到了实际作用,一般会感到高兴,觉得没有白回复。但是对于论坛里经常出现的毫无意义的胡乱回复,应当坚决无视。另外,如果某些网上的人的解答对自己的工作有重要的帮助或启发,必须在文章的acknowledgement中写上他们的名字(除非他们不同意)。然而,这样做的人却没多少,别人花了不少时间写了一堆文字帮了自己的大忙,连一个正式感谢都没有,实在是不道德。

6 不要缠着回复者。经常有些人整天追着某人问问题,刚回答完上一条问题新的一条问题又来了,例如往往有人这样问“A是什么意思?”,回答曰“A是由B经过xxx处理得到的”,然后他紧接着就问“B是什么意思?xxx是什么意思?”,反反复复问,没完没了。持续数日甚至数周,每次上线都会看到离线提问的留言,仿佛问题永远回复不完,搞得回复者很反感,以至于不愿回答或者推迟回答时间。而且这种做法严重违背了上一节的第一条,即问问题先要自行研究。每次得到回复后先要好好想一想,如果其中出现不懂的概念要先自己查资料,然后实在搞不明白再继续问。

7 问问题时能不私聊就不私聊。高手普遍都很忙,很难抽出时间给各个提问者一对一回复。当高手在论坛、QQ群等公共场所回复问题的时候,其他人也能看到他的发言,能令许多人同时学到知识,因此高手此时所敲的文字所产生的价值远高于一对一回复的时候,故高手通常倾向于在公开场所答疑和讨论。一般情况,对于QQ私窗向我提问一般计算化学问题,我都是直接无视掉的(笔者在QQ签名里也特意写明了不接受一般计算化学问题私聊)。还有些人,别人明明还没同意通过QQ向他私聊回复问题,他上来就突然通过QQ发一大堆文件等着对方接收,这显得更是很不礼貌,简直就像去别人家也不事先打招呼,上来就敲门一样。


========== (3) 语言表达问题 ==========


1 不要问“有没有人算过/用过/知道xxx?”这类问题,这是很不好的问问题的方式。那些算过/用过/知道xxx的人看见这种问题都不知道提问者究竟想干什么、遇到了什么具体问题,往往不想理会。而那些很热心帮忙的人还必须回复一句“我算过/用过/知道xxx,你有什么问题?”,接下来提问者才会说出具体内容,回复者才能知道详情并回答,这纯粹是给回复者添麻烦,也拖延了得到有效回复的时间。所以说,遇见什么问题必须直接说出来,把信息交代清楚,其他人如果知道就能直接回答了。

我还专门写了一个帖子《注意提问时的措辞方式和逻辑性》(http://bbs.keinsci.com/thread-43063-1-1.html)建议一看。
 
2 在论坛、邮件列表上发问时,标题应尽量简明清楚地概括问题,至少让别人知道问题是哪个领域、关于哪个程序的,毕竟高人一般没功夫把论坛里每个帖子、邮件列表的邮件都仔细看一遍,只会从标题上判断出自己感兴趣的问题然后点进去阅读。所以,标题不要写诸如“xx程序出错”,别人不知道是哪类任务出错,也不要写比如“坐标导出问题”,别人不知道你用的是什么程序、自己是否熟悉。有些人甚至标题只写诸如“请求高人指点”,这样更不好,等于什么都没说。写帖子标题时,必须拿出自己给论文命名标题时的认真态度。

3 在QQ中问某人问题时,不要先试探对方是否在线,笔者对“在么”这种话颇为反感,一概无视。其原因和上一条一样。有问题就直接说,回答者如果不在线,在他在上线时就能看到关于具体问题的离线留言并进行回复。

4 在QQ中,不要把一段话拆成好几个片段发送。比如笔者遇到的诸多这类情况的一例
------------
Miku 17:22:54
老师
Miku 17:22:59
问个问题
Miku 17:24:39
怎样用amber做出小分子和蛋白之间的作用能
就是electrostatic energy和Van der Waals energy
Miku 17:24:56
随模拟时间的变化
Miku 17:25:04
类似这样的图
------------
这样很不好,严重破坏了语句连贯性,让人看着费劲,这又不是写诗歌。而且若是提问者在发问时回复者也在线,回复者就得反复激活聊天窗口,看看提问者到底把话说完没有,很浪费回复者的时间。另外,这种语言表达也显示出提问者的浮躁。还经常有人问问题的时候先把一张图发出来,不知道他想干嘛,然后过了好久他才把要问的问题写出来。这种做法极为不好,问问题时候干嘛不把文字和图片一起发上来,让人家立刻就知道你想问什么?

5 在QQ中,不要使用可能使别人看着难受的字体、字号、颜色。比如,某个常问我问题的人总是使用字号很大的黑色粗体隶书,一个字占一般9个字的大小,看着极其难受,还有的人用巨大的粉色字,而且一次发一堆文字,令人头晕。使我不得不把信息拷到记事本程序(无格式文本)里面看。还有的人用青色字体,与白色对话窗口对比度低,难以识别。虽然某些人喜欢特色字体是自己的事,但是在群里,或者向别人单独请教问题时,应当考虑其它人的感受,文字建议用黑色宋体10~12号字。

6 说话不能带病句、错字,否则将显示出提问者对提问不认真,而且造成回答者理解困难,必须去猜,或者再反问提问者一次。若是回复者本来就不太想回答,这可能造成回复者根本就无视提问了。

7 有时候语言不好表达清楚必须用图片。但如今由于拍照手机的高度普及,特别是年轻人,整天抱着手机,连问问题都喜欢直接给屏幕拍照,而且拍照往往还看不清楚(对焦不准、有条纹、曝光度太低等),而且拍照的图片区域中往往有大量无关区域,这实在很不好,一方面会导致刷屏(特别是纵拍时),另一方面让别人看着费劲。所以,能截图的时候一定要截图,绝对不要拍照!就算不得不拍照,比如是个没有网的服务器上遇到的问题,那也应当尽量拍清楚,摆好角度。还有些人拍照拍出来是歪着的,甚至是旋转了90度的,别人看图还得扭着脖子看,非常难受。把图片旋转合适再发,这是提问者必须要做的事,如果能把图片剪切到合适尺寸更好。

8 问问题别口语化。比如“xxx怎么算啊”这种提问的句式我就特别讨厌,末尾那个“啊”字显得提问者特别浮躁。如果改成“请问xxx如何计算?谢谢”看着就舒服得多。还有一个常见情况是给某人回复后,他接下来的回复的开头老是带一个“额”、“呃”字,比如“额...那怎么办啊”、“额,我不会算啊”,这种多余的口头禅不要在交流讨论中出现,同样会显得此人特别浮躁,招人烦。

9 使用“好吧”作为句子开头是绝对的大忌,因为很容易让问题的回复者有被轻视、蔑视的感觉。详见《向“好吧”作为句子开头宣战!》(http://bbs.keinsci.com/thread-334-1-1.html)。


最后总结一下上述的求助的要点:谦虚、礼貌、严谨、认真、多思考少提问、不要厚脸皮。


========== (4) 对于回复者的建议 ==========


对回复者们我也要说几句。

1 在论坛上看到一个问题时,如果你对这个问题没有90%~95%以上的把握(或者把握不大,但是见解独到也可以),那么我建议不要回复,万一因为自己的回答而误人子弟,良心上是过不去的,而提问者发现得不到回复,或许就会自己研究琢磨,没准儿还能得到正确答案。如今网上有很多不懂装懂,一知半解也要凑热闹回复的人,他们有的是为了获得论坛上积分、金币什么的(现实中拜金主义在虚拟世界的写照),有的则是为了炫耀知识。后者的确这会赢得不明真相的菜鸟们一片叫好声并获得自我满足,然而回答中的缺陷或幼稚会被隐藏在论坛深处的扫地神僧们一眼识破,等菜鸟们长成了老鸟,也会逐渐认识到那些人回复中的错误,最终不仅没炫耀成还反倒失了面子,所以劝那些人还是别回复,这些回复还往往把正确、有意义的回复给掩盖了,等于给求助者添麻烦。另外,如果你对问题完全不懂,而且提问者没有专门问你,就不要回复“不知道”,这根本没意义。对于那些发一堆无聊表情符号的回复者应当严厉批评,这纯粹是捣乱。总之,回复者要对自己的回复认真负责,尤其是学术论坛,不可灌水,应当使每条回复都有意义。不过,如果帖子主题就是学术方面的杂谈八卦,那无所谓。

2 不要直接复制粘贴别人曾经的相关的回复,这无疑于侵权、抄袭。如果已经将别人的知识、观点完全消化并构成了自己的语言,那么无妨,但如果需要直接引用别人的回复,要么给出那帖子的链接,要么注明那人的ID,并将所引内容用引号或分割线括起来,或者利用一些论坛中的标记代码将内容放在引用域里(一般会显示为深色框)。另外也绝对不能大段大段复制文章、书籍的内容作为回答,这根本没有显示出帮助人的诚意,好在在学术论坛上这种情况见到的不多,然而在“百度知道”这种地方此行为却屡见不鲜,而且那些人复制的内容总是对解决问题根本没直接帮助,甚至根本驴唇不对马嘴。

3 如果有人问那些基础书籍上都有叙述的问题,或者说从文字上看明显没经过思考、研究就问的问题,我不建议回复,或者只是给他们指出应该看的资料就够了。只有对那些钻研过,但是对问题理解出现误区,或者卡在某些环节的人,才应当积极帮助。否则会使提问者变得懒惰,这不仅不是帮忙,反倒害了他。对于态度不诚恳,脸皮太厚的提问者应一律无视,否则将助长歪风邪气。

4 对于有意义的问题,如果自己清楚或者有独到见解,时间允许的情况下建议积极回复。虽然网上回答问题在现实中看似得不到什么利益,但这绝不是吃亏的事,在撰写回复的思考过程中有助于深化对问题的认识,巩固对概念的理解,还可能萌发新的idea。