编程问题难解决,学会提问是关键!

什么地方

  找到正确的地方问编程问题可能和问对问题一样重要。如果你跟错误的人问了正确的问题,也许得到了答案,但你不会得到一个好答案。因为你想要一个好答案,就需要知道在哪里问问题。

1. 打电话给朋友

  如果你是因为没人教你、指导你或者引导你而自学编程,那就要改变一下了。事实上,你可以一个人走得很远,但你如果有个朋友可以帮你指点正确方向,你会学得更多更快。有时候,你已经认识一两个程序员,他们可能会很高兴回答你的问题(特别是现在你有了基础,你可以问出好问题)。如果你不认识任何程序员,就去认识一个。多亏了像 www.meetup.com/这样的网站,你可以找到很多在你这个领域的程序员会议。找一个那样的群组,认识些人,跟他们学学。
  问真人问题是学习和寻找答案的昀高效方法。一个真人可以看你的代码,帮你调试,以及帮你找到解决方案。一个真人可以给你量身定制的帮助,因为那个人知道你的背景,以及你当前的知识等级。因为他已经回答了你的其他问题,并且熟悉你工作的项目。朋友可以教你和帮你找到自己的答案,而不仅仅是给你针对你当前问题的答案。如果有一点点可能,一定要问朋友。

2. StackOverflow

  即使你有程序员朋友,他不可能回答你所有的问题。所以 StackOverflow(http://stackoverflow.com/)是一个很棒的资源。 StackOverflow是一个在线的程序员问答社区。网站上的每个东西都通过点数来评分。如果你问了一个问题,很多人都觉得有用,那些人会给你的问题投赞成票。

  如果你对一个问题提供了很好的答案,人们会给你的答案投赞成票。

  相反,不好的问题和不好的答案会得到反对票。昀好的问题在搜索结果中会获得高优先级,而昀好的答案会被显示在页面的昀顶部。声望点会奖励给(或者移除)用户的每一个赞成 /反对票,累积的声望值还会显示在页面上所有的用户名旁边。所有这些投票和点数的背后理念,是要让好东西浮现出来,而不好的东西逐渐隐藏起来。这个系统非常好;你几乎可以找到任何编程问题的答案。如果问题还没有被问过,你可以问一下,通常可以在一小时内得到答案。

3. 论坛

  在我刚开始编程的时候,在线论坛是当时找到编程问题答案的昀佳方式。在我学 Perl的过程中,我在 Perl论坛花了很多时间。

  尽管我很感激这些论坛,我还是很高兴 StackOverflow及其他类似的问答排名网站很大程度上取代了论坛。你知道,论坛很难做信息筛选。一个问题可能会得到好多页的回答,而问题的昀佳答案可能在任意一页,或者可能根本就没有昀佳答案。要想知道答案的唯一方式,就是通读每一页的每一条回复。如你在上图中看到的,论坛通常都不怎么好看。然而,论坛的一个优势是它们一般是针对某个特定的编程语言,因此,论坛会吸引这门语言的世界级专家。专家的聚集会让论坛变成一个对初学者不友好的地方。一般我建议就用 StackOverflow来解决问题,但论坛在 StackOverflow没解决的情况下可能会有帮助。

什么时候

  程序员很看重效率,不仅在代码上,也在生活中。他们愿意提供帮助,但也会珍惜他们的时间。在你尽全力自己寻找答案之前,不要问问题。我在 StackOverflow上问问题之前,会问自己:

  1. 我 Google了吗?从 Google上得到了什么结果,为什么这些结果没有回答我的问题?
  2. 我读过文档了吗?我读了文档的哪一节,为什么文档没有回答我的问题?
  3. 有人问过同样的问题吗?为什么之前问题的答案在我这个场景不能工作?

作为程序员,我也看中效率。我想要自己找答案,但我不想没有目的的搜索,所以如果我已经试过了 Google,试过了文档,也试过了搜索 StackOverflow,还是找不到答案,那我知道,是时候问一个问题了。

玩具鸭
通过问问题,你可以经常找到答案。不断地尝试用简洁的语言描述问题,可以帮你更好理解你的问题,也许甚至可以揭示问题的答案。找一个毛绒玩具(鸭子就不错),放在电脑旁边,当你遇到问题的时候,问问鸭子。玩具鸭是一个好的倾听者,而且有很多空闲时间。如果问了鸭子之后你还没有搞清楚,去问一个真人吧。告诉他你已经问过鸭子了。

怎么问

  当要问问题的时候,你应该意识到“世界上没有愚蠢的问题”这种说法在像 StackOverflow这种编程论坛上并不适用。我这么说并不是因为刻薄,而是让你知道,如果你问了一个坏问题,你可能会被上课而不是得到答案。社区成员会专注于如何修复你的坏问题,而不是如何修复你的问题。另一方面,如果你问了个好问题,你会得到好答案,看你的问题有多好,你也许还能得到些奖励。

1. 尽量简单

  在 StackOverflow和其他论坛上回答问题的人都是志愿者,他们不会因为回答你的问题而得到补偿(除了声望点),所以你应该尽可能让你的问题更容易回答。写一个清晰的问题描述,列出在你自己搜索答案时找到的资源,以及为什么那些资源没有回答你的问题。你的问题应该全面但不要长篇大论,如果问题很长,你应该加一个概述,读者理解你的问题所花时间越少,他们用来找解决方案和写答案的时间就越多。

2. 不要害羞:贴出你的代码

  我第一次在 StackOverflow上问问题的时候,没有包含我的代码,因为我不太好意思。我怕人们会取笑我的代码,而不是回答我的问题。事实上,在没看到导致问题的代码时,编程问题是很难回答的。这就像是医生用电话进行诊断,“听起来你有胃肠感冒,或者也许是阑尾炎。 ”贴出跟你问题相关的代码会帮助你得到更好的答案。

通过教别人来学习

  通过做项目,你可以学到很多,但你可以通过教别人学到更多东西。在你学习如何编程的过程中,正是昀适合教别人如何编程的时候。通过把刚学到的东西及你正在学的东西教给别人,刚好是你以一个初学者需要的视角理解这些知识。老程序员们也许比你知道得更多,但那也意味着他们解释问题的方式会很复杂,而且难以理解。这么看来,你要比其他人更适合教初学者。

1. 回答问题

  你不需要找一个编程老师的工作来开始教学。你可以通过回答问题开始。在 StackOverflow上找找你能回答的问题。你已经了解了一些关于 HTML、JavaScript,以及 Google Chrome扩展的知识,你可以尝试回答跟这些相关主题的问题。如果你不习惯在 StackOverflow上回答问题,你还是可以回答问题。找其他在学编程的人(或者说服一个朋友学习编程),然后你们可以互相回答问题。你们两个会比各自独立学习学到的东西更多。

2. 写博客

  写作也是个学习的好方法(我猜这就是为什么你上学时要写那么多论文的原因)。你已经学习了很多可以写得好内容,比如 JavaScript的函数如何工作,源代码是什么,以及为什么要使用 Grunt和如何使用 Grunt,如何使用 Chrome开发者工具,以及如何创建 Chrome扩展。在你开始写这些主题时,你会发现你的理解是有缺口的。在你尝试填补这些缺口时,你会更深刻地理解这个概念。记住,你具有教别人的昀佳角度,因为你自己正在学习这个概念。如果你不习惯写一个给全世界看的博客,你可以给你的玩具鸭写封信,它是个很好的聆听者。
  本文选自《一路编程》,点此链接可在博文视点官网查看。
                    
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

时间: 2024-10-14 19:32:07

编程问题难解决,学会提问是关键!的相关文章

为什么编程这么难?!

对每一个决心学习编程的程序员来说,入坑之前,你也许只是一个"穿着正装在办公室里上班"的人. 你的学习历程可能是这样:如同一片树叶,开始被各种建议拽着走,直到学完了每一个你能想象到的在线课程. 最后,虽然你成功拿下了一份软件开发的工作,但也对程序员有了新的认知:"那些看似正常的程序员们其实都是些"反社会"的怪人,鬼才知道他们经历了什么样的精神创伤." 一份常见的编程学习过程:先从Ruby着手.很快,开始穿梭在Scala, Clojure和Go等其他

感想——学会提问

提问?谁不会?这可能真是一件简单的事,但也未必. 我正在看一本书<学会提问>.提问里有大学问.还有一本书,浏览了一遍,书名叫<你的灯亮着吗>. 通过网络为人解惑已经有些日子了.近日一些事情让我深深感觉到不少同学在提问题方面存在的差距. 一名我的学生,显然是要问我问题,他采用的方式是发表博文: 这种方式的博文想让我看到.答复之余,我真被自己感动了,我居然能够及时看到这篇博文.(见<程序能看懂,但就是不会写>) 下面又是我的一位学生的一篇博文: 我给他做了些评论,提醒他这样

为什么编程那么难?是我脑子不行吗?

"现在,导航到那个你希望程序在终端中打开的小文件夹.好的,下面需要在PATH文件夹中创建符号链接,但是,在我们创建之前,先使用nano ~/.bash_profile来检查配置文件." 在我的大脑还在全速运转消化理解这些意思拼凑出连贯的指令之前,讲师已经转移到下一个主题. "什么快捷键可以再次打开终端?命令和空格键--快点在Mac电脑上试试." 咬紧了牙,尽量不去想已经拉下了多少Treehouse讲师的内容,我开始第八百次手忙脚乱地打开谷歌去查找键盘命令. &quo

求助 编程 就业 能力-编程到底难不难?编程这一行业一定要智力很高么?

问题描述 编程到底难不难?编程这一行业一定要智力很高么? 我是一个"貌似"很热爱编程的人,我想把这个编程作为我的职业.我现在学的专业是临床医学,我觉得这个很烂,没兴趣,很抵触.我唯一能走的可能就是软件.但是,我不知道我是不是真正的能在这个领域做出什么成就来,不需要很高的成绩. 或者说,我不知道我到底适不适合干编程这行?这行业,将来会面临什么样的问题? 所以,我问问,这行业最难得是什么,不仅仅是知识方面,还有将来就业方面?或者,怎么才能知道我是不是叶公好龙,是不是真真适合这个行业?有没有

VC7中使用MSDATGRD.OCX出现没有编程授权,如何解决?

问题描述 VC7中使用MSDATGRD.OCX出现没有编程授权,如何解决? 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子被推荐(加精)后,帖主可以获得88分的可用分奖励:2:帖子结帖后会返还帖主50%的悬赏分,无满意结帖不返还分数:3:接下来会

Socket编程 (异步通讯,解决Tcp粘包) - Part3

原文 http://www.cnblogs.com/zengqinglei/archive/2013/05/14/3078842.html Socket编程 (异步通讯,解决Tcp粘包) 从上一章的通讯中,我们发现如果使用Tcp连续发送消息会出现消息一起发送过来的情况,这样给我们编程造成一定的问题,给我们的信息解析造成一定的问题.那么这篇文章就将针对以上问题给出解决方案......   问题一般会出现的情况如下,假设我们连续发送两条两天记录("我是liger_zql"): 模拟发送示例

Socket编程 (异步通讯,解决Udp丢包) - Part4

原文http://www.cnblogs.com/zengqinglei/archive/2013/05/15/3079007.html Socket编程 (异步通讯,解决Udp丢包) 对于基于socket的udp协议通讯,丢包问题大家应该都见怪不怪了,但我们仍然希望在通讯方面使用Udp协议通讯,因为它即时,消耗资源 少,响应迅速,灵活性强无需向Tcp那样建立连接消耗很长的时间等等很有优势的理由让我们对Udp通讯寄予了厚望.但它也存在一个不好的特点,经常丢包是 时常发生的事.可能各位大侠已经有了

“宽带中国”将是解决此问题的关键之一

中国政府网发布<国务院关于大力推进信息化发展和切实保障信息安全的若干意见>,交银国际7月19日发布研究报告指出,有关意见预示着以互联网为代表的信息化技术产业将向社会生活各个方面渗透,维持互联网行业领先评级,行业首选为腾讯控股(00700.HK). 根据这份7月17日发布的<意见>,我国信息化建设和信息安全仍然存在一些问题,"宽带中国"将是解决此问题的关键之一.<意见>并提出更加有力的政策措施来推进信息化发展,保障网络信息安全. 交银国际指出,&quo

运营商应对录取通知书新规遗留问题恐难解决

飞象网讯(魏德龄/文)尽管工信部下发了<关于规范基础电信运营企业校园电信业务市场经营行为的 意见>相关规定,但据记者亲身走访发现,运营商仍不放弃校园宣传促销机会,尽管录取通知书中不得夹寄号卡,但却寄来运营商的宣传资料.而运营商的广告标志也印到了一些通知书及学校的标志牌上.而此前的运营商在校园中已经建立的计费系统.教育系统等则难以避免将不触犯"不得强制校园用户使用指定的电信业务或终端设备"的工信部校园新规. 运营商应对校园新规 据悉,工信部已经向三大运营商通报了其"