引言:自学编程是个困难的事情,因为你可能找不到人来帮你解决编程问题。幸运的是,我们有互联网,所以尽管你个人并不认识任何程序员,你还是可以向真人提问编程问题,并且得到真实的(好)答案。不过获得问题答案的关键在于在什么地方、什么时间,以及如何问问题。本文选自《一路编程》。

什么地方

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

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扩展。在你开始写这些主题时,你会发现你的理解是有缺口的。在你尝试填补这些缺口时,你会更深刻地理解这个概念。记住,你具有教别人的昀佳角度,因为你自己正在学习这个概念。如果你不习惯写一个给全世界看的博客,你可以给你的玩具鸭写封信,它是个很好的聆听者。 
  本文选自《一路编程》,点此链接可在博文视点官网查看。 
                      
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。 
                      

转载于:https://blog.51cto.com/bvbroadview/1890411

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

  1. 学会python编程容易吗-Python编程入门难不难

    原标题:Python编程入门难不难 可能很多人都会觉得,IT行业非常高大上.Python编程入门难不难?很多同学还没开始进行Python编程的学习呢,就被恐惧拦在门外了.实际上,真的是这样的吗?不妨跟 ...

  2. python太难学了-为何编程那么难?新手该怎么学Python?

    点击蓝字"python教程"关注我们哟! 为何编程那么难?新手该怎么学Python? 1 因为入门编程并不是一件分分钟就能做到的事情 具体的建议是先把整本书从前到后翻一遍,有印象就 ...

  3. 为什么编程这么难?!

    大数据文摘作品 作者: Erik Trautman 编译:Shan LIU .Niki.新知之路.笪洁琼.亭八 对每一个决心学习编程的程序员来说,入坑之前,你也许只是一个"穿着正装在办公室里 ...

  4. 学会提问(尼尔·布朗、斯图尔特·基利)

    前言 研一在英语A班学习,Mr.Su是我们的男神老师,简直就是一个gentle man!这位男神给我们灌输了整整一年的critical thinking!!而自己课下参加的一些英语角也发现了,中西方的 ...

  5. 为什么很多人都认为编程很难学?

    很多进入计算机专业就读的学生,最初至少有一大半对真实的软件开发完全不了解,是"一张白纸". 不幸的是,学了四年之后,许多张"白纸"又变成了许多罐"浆糊 ...

  6. 读《学会提问:麦肯锡工作法》

    本书的目标,是让读者意识到,学会提问的重要性.高质量的提问,甚至决定高质量的人生.书很薄.每章用浅显的语言快速阐述要点,其实对于介绍软技能的书籍,短篇幅足矣.关键是给读者植入一个idea,意识到无论是 ...

  7. 读书笔记:《学会提问》

    <学会提问>,[美] 尼尔.布朗  斯图尔特.基利 著  吴礼敬 译 批判性思维 关键问题 慎思明辨,有效的提出关键问题,寻找关键问题的答案 发展相关技能,树立正确态度,判断出哪些观点能为 ...

  8. 计算机编程好难啊,揭秘|为什么我们觉得编程好难?

    原标题:揭秘|为什么我们觉得编程好难? 编程真的好难呀,孩子真能学会吗? 家长常问的这句话翻译一下就是:我一个成人人都觉得编程难,小孩子恐怕更学不会吧. 今天就来聊聊,为什么我们会觉得编程难?是真的所 ...

  9. 编程很难?很枯燥?那我们就玩起来燥起来。

    编程很难?很枯燥?那我们就玩起来燥起来. 今天我们继续利用米思齐软件,来玩转物联网开发板,今天我们玩点好玩的又实用的,那就是利用开发板和DH11温湿度模块以及1602A LCD显示屏等材料制作一款高精 ...

最新文章

  1. 怎么用树莓派制作web服务器,用树莓派做web服务器,靠谱吗?
  2. Mysql 5.5的编译安装 在ubuntu 10平台上面
  3. LATEX调整公式、图片与正文间距离,文字间距离,调整空白大小
  4. c语言程序中的if-else语句,C语言if else语句
  5. 微服务模块综合管理(模块视图管理,自动化热部署,前端资源实时刷新......)
  6. PHP curl get post通用类
  7. Power BI Desktop交互式和弦图
  8. python覆盖数据库重复数据_如何在数据库中插入唯一数据/处理重复数据
  9. 命令行参数解析函数 getopt
  10. python有哪几种数据结构_Python最常用的数据结构6种
  11. ASO优化:App从0到1进行ASO优化
  12. python调用手机摄像头识别二维码_JS调用安卓手机摄像头扫描二维码
  13. C语言进阶 之 字符串函数(4)
  14. python adb读取手机中短信_python+adb实现自动化获取手机信息
  15. 怎么在手机上赚钱?分享5个赚钱方法,生活费是足够了!
  16. 吴恩达 tensorflow
  17. Jenkins基础:Jenkinsfile使用实例:5:使用when进行条件分支处理
  18. 常见漏洞之 struts2+ jboss
  19. 一个小小黑点乱了我的芳心
  20. 编写程序,从键盘输入任意一个字符,输出该字符是英文字母(不区分大小写)、数字字符还是其它字符。

热门文章

  1. C#中HttpClient使用注意:预热与长连接
  2. 关于搜狐焦点房产的数据分析
  3. 用GCD来处理大量for loop任务
  4. git常用命令及配置
  5. GitLab搭建详细过程
  6. linux命令总结----转载
  7. 蓝桥杯练习系统—算法训练 s01串
  8. iOS:步进UIStepper、滑动块UISlider、开关UISwitch的基本使用
  9. oracle错误:1067进程意外终止
  10. [转]asp.net中常用的一些小技巧