程序员,你会问问题吗?

在工作和生活中,总是会有很多人问题我很多技术方面的问题。有一些时候,问问题的和答问题的总是会有一些不爽的事情发生。如下面的几种情况:

  • 比如:“我的电脑老是蓝屏,怎么办?”,通常这样的问题90%以上的回答是:“重装吧”。这让问问题的人感到很沮丧,但你不能不承认那不是答案。而且有时候让人无法解答,比如:“我的makefiel出错了,你帮我看看我的makfile”,我通常会非反问,报了什么错吗?
  • 另一种情况是,回答问题的人首先先对问问题的人的抱怨,你问的问题就不对,或是,你问的这个问题是什么意思,而导致问问题的人却在不停地解释,结果花了好长时间来讨论问题本身是什么。
  • 还有一种情况是,问的问题太简单了甚至太白痴了,比如你自己试一试或是读读文档就知道了的问题,或是问这个问题直接表明了你的无知或是懒惰。这种问题会相当影响别人对你的印象。
  • 第四种情况是,提问者滔滔不绝,扯这扯那,讲了一大堆,听得听累了。最后都不知道你要干什么。

所以,怎么去问问题,怎么问一个好的问题,是一个很重要的事。你提问的技术直接关系到了你是否能够很快得到你满意的答案。
这里有一篇文章推荐给大家《How To Ask Questions The Smart Way》,中文版在这里《提问的智慧》(链接无效了 囧),我把其中的几个亮点总结如下:

  • 提问前先自己尝试查找答案,读读文档、手册,看看有没有相似的问题,看看那些方法能不能帮你解决问题,自己去试一试。如果你是程序员,你应该先学会自己调查一下源代码。(不然,人家回答你的一定是——RTFM – Read The Fucking Manual)这样的问题很多。我有时候很不愿意回答这样的问题,因为我觉得问问题的人把我当成了他的小跟班了。
  • 提问的时候,找正确的人或是正确的论坛发问。向陌生人或是不负责的人提问可能会是很危险的。不正确的人,会让你事倍功半。如果你问Linux的人Windows太慢怎么办?他们一定会让你把Windows删了装Linux去的。
  • 问的问题一定要是很明确的,并且阐述你做了哪些尝试,你一定要简化你的问题,这样可以让你的问题更容易被回答。对于一些问题,最好提供最小化的重现问题的步骤。
  • 你一定要让问题变得简单易读,这和写代码是一样的。只有简单易读的邮件,人们才会去读,试想看到一封巨大无比的邮件,读邮件的心情都没有了。而且,内容越多,可能越容易让人理解错了。
  • 你问问题的态度应该是以一种讨论的态度,即不是低三下四,也不是没有底气。只有这样,你和你的问题才能真正被人看得起。要达到这个状态,不想让别人看不起你,你就一定需要自己去做好充足的调查。问题 问得好的话,其实会让人觉得你很有经验的,能想到别人想不到的地方。
  • 不要过早下结论。比如:“我这边的程序不转了,我觉得是你那边的问题,你什么时候能fix?”,或是“太难调试了,gdb怎么这么烂?!”。当你这么做的时候,你一定要有足够的信息和证据,否则,你就显得很自大。好的问题应该是,“我和你的接口的程序有问题,我输入了这样的合法的参数,但是XX函数却总是返回失败,我们能一起看看吗?”,“我看了一下gdb的文档,发现我在用XXX命令调试YYY的时候,有这样ZZZ的问题,是不是我哪里做错了?”

http://coolshell.cn/articles/3713.html  转自酷壳

数据分析是什么

摘自《谁说菜鸟不会数据分析》,基础理论到哪里都是一样的,这里就没写个人心得了。只想强调一点:Hadoop可以作为数据分析的一种工具!
PS:如果你是一个研究hadoop的程序员的话,在你的心里一定是hadoop更重要,但是在数据分析这个领域,hadoop只是其中的一种工具,还有大量做数据分析的在使用其他工具。
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总、理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这里数据也称观测值,是通过实验、测量、观察、调查等方式获取的结果,常常以数量的形式展现出来。
数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来,总结出研究对象的内在规律。在实际工作当中,数据分析能够帮助管理者进行判断和决策,以便采取适当策略与行动。例如,如果企业的高层希望通过市场分析和研究,把握当前产品的市场动向,制订合理的产品研发和销售计划,就必须依赖数据分析才能完成。
在统计学领域,有些学者将数据分析划分为描述性数据分析、探索性数据分析以及验证性数据分析。其中,探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于验证已有假设的真伪性。
从另一个角度看,描述性数据分析属于初级数据分析,常见的分析方法有对比分析法、平均分析法、交叉分析法等;而探索性数据分析以及验证性数据分析属于高级数据分析,常见的分析方法有相关分析、因子分析、回归分析等。我们日常学习和工作中涉及的数据分析方法主要是描述性数据分析,也就是大家常用的初级数据分析。