“提问的智慧”之程序员篇

译文
开发
优秀的程序员应该如何提问?在技术社区中,问答是最常见的行为之一。但是无论在英文界也好,中文界也好,都有好问题与不好的问题。本文为开发领域中应如何正确提问进行了一些总结与指引。

【51CTO精选译文】无论你做什么事,你都会遇到需要提问的时候。对于技术人员来说尤其如此。网络上曾流传一文《提问的智慧》(如果你还没看过,请自行搜索),虽然讲的是黑客社区中的事情,但其智慧性令其成为了很多技术与非技术论坛的法典。

下面这篇文章和那篇经典的《提问的智慧》一样,内容都是开发人员在社区中所能够看见的真实的问题(唯一的不同可能是没有那篇长吧)。总之,如果你是一个程序员,遇到问题要在社区里发问,那么请一定不要忽略这位作者提出的建议——它们会帮你更好的得到你想要的答案。

我在stackoverflow.com(51CTO编者注:stackoverflow是英文界一个相当不错的开发问答站,在这里推荐一下)上花费很多时间来回答各种各样的问题,有些问题问得好,但有些问题简直无法回答,优秀的开发人员应该知道如何提问才能最快获得***的答案。

首先,我想说的是,如果你认为你还是一名程序员,如果你每天都没有一点问题要问,那你一定正在错误中前行。问问题不要害羞,这没什么丢人的,大师也会有不懂的地方。

由于我在各种各样的问答网站上混了很长时间,看到过无数怪异的提问方法,根据我遇到的问题,提炼出几点建议:

不要害怕过度描述你的问题

有些人似乎害怕在问题中泄露什么天机,不愿意帖出代码片段,可能无关的详细信息等,其实很多时候这些信息可能是解决问题至关重要的东西,当然也有一个限度,我不鼓励你将整个类库都贴出来,除非确有必要。

包括错误消息

如果我看到类似“它不工作了”,“它失效了”等问题,我一般会直接跳过。你不说清楚一点,叫人家怎么回答你呢?难道要让人家来猜测你想问的是什么?你可能觉得有些信息没必要帖出来,对于你而言,你可能是这么认为的,但对于想帮助你的人,他们肯定不太清楚这些,因此你一定要清楚到底发生了什么,即使是些微不足道的信息也要贴出来,当然包括错误信息。

简要列出你的环境信息

我的另一篇文章“我痛恨那些还不知道如何报告BUG的人”也提到了这个问题,环境变量常常被忽略,多花几秒钟列出象软件的详细信息,版本号等对回答问题是很有帮助的。

你自己的推测

如果在你的问题中将你对问题的看法,以及自己所想到一些思路等帖出来,或许其它人看了就会受到启发,或者发现你的错误之处,这样即使没人能准确回答你的问题,至少也可以获得不少建议。

例子

虽然不是所有问题都可以举一个例子,但如果有一个例子进行表达,那效果会相当好。如你的代码片段,如果可以截图也可以张贴关键的图片,对于CSS这样的问题,可能只有将你的代码贴出来人家才有法回答。

提问前先自己尝试找解决办法

Stackoverflow上每天都有无数的问题通过Google简单搜索一下就可以得到答案,但有些人偏偏要提出来,在张贴问题之前自我探索和研究应该是必需的,不要做一个懒人,那样你会一直提不高;反之,即使你通过自我探索和研究最终也没有找到解决办法,但你会发现你又多学到了好多东西。

不要得罪回答你问题的人

大多数时候回答问题的人都是利用业务时间在帮助人,如果有人对你的提问做了响应,但没有正面回答你的问题,而是进一步询问你一些相关的内容,此时你应该耐心回答他们的询问,可能还有一些人会直言不讳地说你“这个都不懂”或“这个太简单了,搜索一下便知”,你也不要以为自己就很笨了,更不要回复一些不敬的话语。

这几点还是很好做到吧!没有人知道所有问题的答案,因此不要害羞提问,在遇到你能解决的问题时,也不要吝啬你的回答。

提问的智慧,也是程序员的必修课。

原文:How Do GOOD Developers Ask Questions?

作者:Mike Bernat

【编辑推荐】

  1. 程序员必须养成良好的代码习惯
  2. 深入浅出.NET接口:阿猫阿狗和程序员
  3. 程序员如何选择入门编程语言?
  4. 程序员最常犯的五大非技术性错误
  5. 专家级程序员的“饲养”心得
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2021-01-19 15:59:14

程序员算法

2013-08-20 09:33:59

程序员

2011-05-13 14:34:02

程序员

2022-08-15 08:00:00

物联网智慧城市停车场

2011-07-12 13:35:04

程序员

2012-11-22 14:00:26

程序员

2017-11-14 21:30:15

2015-06-30 09:05:16

程序员求职者提问

2012-03-06 09:22:46

程序员

2011-09-21 13:56:56

程序员

2013-04-15 10:55:09

程序员

2012-11-08 09:49:30

C++Java程序员

2009-12-14 09:29:00

程序员

2010-08-27 10:34:51

程序员

2015-09-24 08:43:13

程序员未来

2012-02-14 09:13:51

程序员

2012-03-13 10:55:00

程序员

2012-06-23 17:21:18

程序员

2014-09-23 10:12:38

程序员

2019-01-30 14:14:16

LinuxUNIX操作系统
点赞
收藏

51CTO技术栈公众号