当卡住时,应该多快才能使用堆栈溢出?[关闭]


51

我正在通过iTunes U CS193p课程自学iOS开发,并且经常发现自己陷入困境。我一直在努力摆脱自己的困扰,但可能要花我几个小时才能弄清楚我在做什么错,是因为缺少一种方法还是没有真正得到像委托这样的整体概念。

我担心自己可能会浪费太多时间,最好在卡住后立即进入Stack Overflow,这样我才能继续前进。

以您的经验,对堆栈溢出的快速询问是否会阻碍学习过程或改善学习过程?


45
值得注意的是,寻找SO的答案是您应该尝试的第一件事。即使没有与您的问题完全匹配的答案,也有可能使您有所了解。但是,问自己的问题是不应该的,除非您真的非常努力地为自己回答这个问题,并且做出了真正的努力来以清楚表明您拥有和没有的方式提出问题已经尝试过。
达伍德·伊本·卡里姆

1
@DavidWallace无法同意。太多的人只问不加思考(低质量的问题),有些人认为,问(更好的问题,而是问(以下(接近)重复之前我也希望更多的人实际上搜索)。
马里安Venema

3
与问任何问题一样,如果您自己先搜索了可能的答案,则在看到实际答案时会学到更多:您会看到忘记搜索的地方,下次也可以在此处搜索。您不仅会学习答案,而且还会学习寻找答案。如果您事先没有想到自己的答案,那么您只是获得答案并继续前进,而总的来说则学得更少。你不会提高自己。
Konerak

3
务实的方法:SO最适合简单的问题,所以我会说几乎立即问(尽管您需要能够提出问题)。输入标题后,将显示最接近的问题列表-您应确保问题不在列表中,但无需对SO进行任何额外的搜索。
Grzenio'2

6
我认为应该在SO的Meta上提出这个问题。
hugomg

Answers:


35

当我与新开发人员一起工作时,我鼓励他们在五到十分钟后仍未取得进展的地方问问题。

这有两个好处:第一个好处是他们可以得到帮助,而不必花费太多时间盯着问题,但是他们只问何时不去解决问题。如果他们正在学习-甚至在最终不是答案的事情上-他们更有可能有效地保留这些信息。

第二个问题是,在花费了很多时间之后,他们不得不向其他人解释问题。这解决了很大一部分问题,因为从头到尾依次进行处理意味着您可以发现您在早期工作中遗漏的事物。

由于听起来好像您是一个人在做,所以请尝试转向毛绒玩具,时钟或墙壁,然后再问问题。像对一个人一样解释它,看看是否可以解决问题。

如果没有,并且您没有取得进展,请询问某人。花超过五到十分钟的时间浪费时间-除非您继续做其他事情,然后以崭新的心态回到问题上来。


17
没有什么比跟你的狗说话要粘滞了。:-)
Marjan Venema'2

2
当您意识到自己在做错事情时,您的狗会像“ 哇!从来没有想过!” 击败一些支持自我的人。;-)
CVn 2012年

4
+1这是从与玩具小鸭子说话开始的“鸭子调试”。我有一个巫毒娃娃。我称它为伏都教调试。
Sardathrion

4
好答案+1。这些年来,我“被困”了很多次,发现当我向别人解释时,答案对我来说很清楚。我还发现经常走开/做一些事情以使头脑清晰。我不会太快地求助于Stack Overflow,如果您自己解决方案,您将永远不会忘记它!这些天来,有很多脑筋急转弯的程序员过度依赖网络。
AnthonyBlake

2
在我起草有关SO的问题时,我的许多问题都得到了解答。为您的问题构筑细节的行为揭示了一些答案
aldrin 2012年

22

我对其他人的绝妙答案是唯一的补充:

在StackOverflow问题界面中键入问题是确保您全面考虑问题的好方法。我无法开始告诉您在清楚地进行布局以正确提出问题的过程中我为自己回答了多少个问题。我已经开始但尚未提交的问题远远超过了我实际提出的问题。

因此,我想说问(当然是在搜索后),只是不喜欢实际点击“提交”。


+1-不能夸大其词。这就是为什么认真提出问题如此重要的另一个原因。(并且边栏中的自动答案建议算法将更加准确地显示其他相关问题)。
kmote 2012年

@kmote-喜欢那个东西。为我解决了很多问题。
丹·雷

1
我的人生故事..解决了很多问题后才提交。
Ayush Goyal '10 -10-8

20

Stack Overflow和所有其他Stack Exchange站点都有一组提出问题的准则:

  • 做你的作业
  • 请明确点
  • 使其与他人相关
  • 成为话题
  • 保持开放的心态

“做功课”意味着您不要太快问。“具体”意味着您对问题的领域足够了解,可以简要地概述问题。如果不是,则“做功课”适用。“保持开放的态度”意味着您应该准备好探索从未想到与问题相关的解决方案。

因此,这不是关于Stack Overflow的问题,而是您的问题是否很好。本质上,所需的努力本身就是学习经验。如果做对了,仅搜索重复项就可能会学到一些新东西。如果没有,请ping我,我有几张反对票。:P


1
在过去的几个月中,我才开始使用该系列网站(StackOverflow等),我必须说,我对一件事印象深刻:拼写和连贯的写作。即使只有一小部分注册会员以英语为母语,但实际上每个人都非常小心自己的写作方式。我认为互联网上没有其他地方可以保持如此庞大的用户群。很奇怪,但令人印象深刻。PS:我想说一段时间,只是需要一个地方使其变得像题似的:)。
Radu Murzea

1
@SoboLAN这是Wiki的哲学。我们会不断编辑彼此的帖子,即使是拼写错误。作为一个不讲英语的人,当我第一次加入Stack Exchange时,我习惯了观察人们所做的编辑工作,并从他人的错误中学习。我猜想,Stack Exchange体验还有另一个积极的副产品。谁知道,在某个时候,我什至会对我的英语充满信心,可以在English Language&Usage Stack Exchange上尝试答案。:P
yannis

3

就个人而言,当我开始编程时,我花费了大量时间来尝试解决问题。我可能会花费数小时来尝试修复某些问题。我不认为这些时间不是很有效,在这些时间里,我学会了如何在线查找东西,并且我真的对编程语言的工作方式有了深刻的了解。因此,我认为对SO的询问过快会剥夺您的学习经验。进入编程只需要很长时间。

接下来是一个问题,要问多久才能提出,我会说在一个特定问题上花费几个小时并不长(请注意,我来自学术背景,也许在商业背景下这是不太被接受的)。

当您确实提出关于SO的问题时,请花时间在该问题上:

  • 出现错误时,请张贴错误的确切文本。还要张贴导致错误的代码,最好是在任何计算机上运行的自包含示例。
  • 显示您已经尝试过的内容。
  • 提及所用软件的版本:编译器版本,python版本。

这些只是几点。通过花时间在您尊重SO上的人的问题上,您可以免费使用他们的时间。更重要的是,您可以构造问题。这可能已经解决了您的问题:)。

只是我的2克拉...


1

我相信这里重要的是要真正了解您所坚持的内容并尝试解决原理性问题。在真正了解真正的问题之后,使用Stack Overflow是我要做的第一件事。

但是,这不是在问一个问题。

它正在搜索所有出色的答案。可能是您现在遇到的问题已经被其他人遇到,他们已经问过您的问题。如果您不得不使用Stack Overflow,请记住,当您陷入困境时,这不仅仅是一个向您提出问题的网站。它也是一些有关计算机编程的非常好的信息的存储库。使用搜索功能。

如果您使用几个不同的术语/关键字搜索后仍然不满意,并且已经完成了功课并拥有代码示例,则可以炫耀一下,并且您可以确定自己的问题不是重复的,请务必提出以下要求:您对堆栈溢出的问题。那就是我最近检查过的那个网站。


1

这完全是主观的,但这是我使用的基本规则。

1)我的房子着火了吗?显然,这不是字面上的问题,而是一个不仅需要立即解决,而且需要紧急解决的问题。如果是这样,请对其进行破解,迅速失败,并获得最佳帮助。

2)这是我可以研究的东西吗?如果这是我有时间的地方,并且可以研究,那么我会走那条路,并将SO作为免费资源。SO非常棒,Wiki也是如此,其他数十种资源也是如此。
大量阅读,可以帮助您理解何时有不同的方法来解决问题,但是请首先花时间尝试看看是否可以将您现有的知识重新应用到该问题上,然后再为自己构建一个新的心理工具。

3)这是否超出我的技能范围/太晦涩难懂,以至于可能有100个人看过?这种情况经常发生。我通常会尝试研究一两个小时,然后前往此处或其他资源。

我知道坐下来做研究并花费时间是更高尚的做法,但是通常我们会受到时间的限制,即使您感觉像在“欺骗”系统,您也会使用所有可用的资源。


0

本质上,“多快”将是主观的。每个人都有不同的意见。

如果您在查看实际代码后约5分钟内仍找不到问题的原因,那么我至少会使用Google。如果一个好的搜索没有答案,那么我将开始在SO上写下您的问题。

请记住,不实际发布该问题也可以;有时候,以书面形式表达问题时,解决方案已经提出来了,而我并没有真正将其提交给你们。


0

您可以提早提出问题,但是在您对问题的来源进行了适当的研究之前,您不可以发布它。写下您已经消除的事物以及如何消除它们。您还应该检查其他类似的问题,如果您确实要发布问题,请解释为什么这不是同一问题。

如果做得正确,您会发现很多次您都可以解决自己的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.