问问题的艺术[转载]

这是转载自网络
建议有些同学看看吧。

每个人都是由菜鸟发展而来的,我们现在处于菜鸟并将长期处于菜鸟阶段,所以我们需要努力努力再努力。但是在这个通往牛人的道路上,充满了各种艰险,有的时候,只依靠我们自己的力量是远远不够的,这时候我们需要寻求各种帮助。问牛人问题也成了一种快速而且简单的方法。

我平时也喜欢回答一些别人的问题来提高自己,但是从一些帖子,我看的出来一些人问的问题相当不”标准”,或者说很不能吸引牛人。不能吸引牛人,你的问题也许被优秀的回答的几率就非常小了,所以我想了一下,总结了几个问问题的要点。如果跟大家有出入还请见谅,如果你有意见或者建议也欢迎讨论补充,以下只是个人见解。

1. 谦虚

这点为什么我要放在第一位?我想大家都知道其重要性了,无论你现在处于一种什么境界,都有可能会遇到各种问题。如果你遇到的问题一个很菜很菜的菜鸟给解决了,这样他也是你的老师。为人一定要谦虚,山鸡前段时间去了yahoo面试,他告诉我那个技术主管特别平易近人,特别谦虚。

但是有的人发帖子很不够谦虚,比如”谁帮我解决下XX问题啊..(问题描述)..好几年没碰PHP了..都忘了..谁给解决下啊..”,我想我要表达的意思已经不言而喻了吧。

2. 手册

在我学习了几种语言之后,PHP手册是我最心仪的手册了。几乎每个函数或者类都有相应的例子,尤其是常用的函数会有多达几种例子。学习例子来学习函数这个途径既快捷又理解深刻,大家肯定还记得学数学是怎么学的,不都是由例题而学会知识点的吗?更让人欣慰的事,几乎每个函数下面都有大牛的讨论,他们不光是针对函数的解释,还有弥补,还有一些问题的解决方法等。

所以说,看PHP手册绝对是一种享受,她就像一本圣经一样指引着我。有这么好的手册我们为什么不用呢?对吧,查手册,对于任何一种语言或者知识的学习绝对是一种能力,这种能力不是别人可以教会的。

我在PPC呆了有一年多了,在这一年中,我看了很多人问的问题都是手册上的问题,有的甚至是例题,我想说的是,你学PHP不看PHP手册,真是白学了。

3. Google

上面说了手册,下面来说说Google。我很幸运我出生在一个互联网的时代,很多事情只需要点点鼠标和键盘就可以知道答案,Google的强大我就不说了,我这点想要表达的意思我想大家通过标题也看出来的。

我希望大家以后养成良好的习惯,遇到问题后,先查手册,手册上没有解决方式的,Google下看有没有解决途径,如果还没有,这时候也不要着急着问别人,那接下来怎么办?正是我下面要说的。

4. 思考

一个达标的程序员有一种思维方式,他们的思维是敏锐的,他们可以联系起来不同的事物,根据一些事物找出圆满的答案。他们对于程序的设计,写出来的程序更可以说是由思维变换成代码的过程,这种由抽象变为具体的能力是在潜移默化中锻炼出来的。一个达标的程序员总是勤思考的,程序不光是要设计,更重要的一点是解决问题。因为在现实中,并没有我们想像的完美,程序总会出现这样或者那样的问题。所以到后期,我们要做的并不是设计程序,而是修改完善程序。

一个程序员会为自己解决了一个问题而兴奋好几天。记得我在大二的时候半夜睡不着,还在想AJAX(那时候正在学习AJAX..正在写一个留言板..),但是遇到个问题,卡住了我半天,好几天都没有前进,但是有天晚上睡觉,不知道为啥,鬼使神差的突然想到了解决方法,那种兴奋不言而喻。简直就马上想从床上奔起来,打开电脑马上完成这段程序,但是苦于宿舍半夜没电:(。

所以接上上面的,当你遇到问题,查手册后,Google后,都没有得到你满意的答案。这时候先不要放弃,先坐下来冷静的思考下,也许手册上面没有答案,Google上面也没有答案,但是也许手册上面的几个知识点连接起来,或者Google上面的一些提示,已经足够解决问题了。

5. 勤奋

其实这点与上面的是相互促进的。一个程序员,也许生活上特别邋遢,几天的袜子都没洗,特别懒惰,但是他不会对他的程序懒惰的,程序员对待自己的程序就犹如自己的孩子一样认真,一个懒惰的人,别说程序员,其他的职业也会一事无成的。

6. 不打诳语

记得看过《悟透JavaScript》,这篇文章不长,但是写的非常生动,也有些佛教的思想参杂其中,只是很少,一笔带过,但是为这篇文章增色不少。

程序员从来不打诳语的,一些标题党,诸如“我发现了宇宙超级无敌大难题,看看你们谁可以解答”,问这样的问题问的人不是真正的程序员。

7. 问题的描述

这个我承认是程序员天生的弱项,程序员每天都和电脑打交道。逐渐的才发现,忘记怎么跟人交流了,叙述能力不强,沟通能力不强,这已经成为程序员的通病。所以如何把一个问题描述好,这已经是一个难题。

那么如何将一个问题描述的更好?我觉得这我也回答不上来,我觉得如果有一个例子会更好。你的宗旨是如何让答题人理解你的问题,或者有些问题可以有期望答案的,比如字符串转换,你可以写出你期望的效果,再如果你语言实在无法描述的情况建议你可以做一个图,类似UML或者流程图那样,就会更容易让人理解了。

8. 帮助答题者更好的回答问题

你除了问问题可以做的之外,还可以帮助答题者回答你的问题,是不是听的很莫名其妙?我来举个简单的例子。

比如有人问了这样一个问题“如何将下面的三维数组转换成一维的?”

然后内容就是一个很大的三维数组,写出了期望的效果,是一个一维的数组。

你可能会问,这个问题我们怎么帮助答题者更好的回答问题呢?

原因就在这里,你的三维数组往往都是print_r出来的,这是PHP中的一种输出方式,用来观看数组的。你这样打印出来的数组如果复制一下,是无法转换成代码的,如果你换个函数,换成var_export就大不同了。答题者可以直接复制过来你的数组,然后前面写个$array = 就可以了,相当简单,省去了大部分时间。

另外,如果你的问题中包含了大量的数据,这样回答问题的人没有时间去创造这些数据,你就可以在附件中上传一下。

9. 细心与耐心

我回答过一些问题,不是问问题的人不会,更不是思路有问题,只是他很大意,把一些变量名弄错了。

还有另外一个,耐心也很重要,如果一个回答你问题的人都很有耐心,你凭什么没有耐心呢?不要在标题上面说非常急之类的话,我觉得任何问问题的一个人都想尽快的解决掉这个问题,这样的字眼并不是吸引答题者的字眼。

10. 谢谢

人要一直心存着感恩,任何帮助过你的人,都是你感谢的对象,那个哪怕没有帮上你,只帮你顶了下帖子的人也值得你感谢。

感谢你该感谢你的人,同样,帮助你该帮助的人,以后你成长了更要回答别人的问题。