乔尔·斯波斯基(Joel Spolsky):如何正确地问更多有经验的程序员问题

流行和洗脑Usenet,Burning Man和Stack Overflow规则


图片


乔尔·斯波尔斯基(Joel Spolsky),2018年4月

,开发人员中有一辆流行的单车,如果您的代码行不通,那么您需要带个橡皮鸭,并告诉她-是的,鸭-该代码应如何工作:解释每一行应该发生的情况,到底发生了什么,等等。开发人员对自己的生活进行了测试,他们认为在详细讨论问题的过程中,无生命的对象常常设法找到解决方案。

这是可以帮助您在编程过程中自行解决问题的技巧之一。另一种方法是学习如何在``分而治之''的基础上调试程序(调试)。。一个错误不可能破坏一千行代码。但是您可以将代码分为两部分,看看上半部分会发生什么,而下半部分会发生什么。进行五到六次,您将到达错误的最末端。

基于上述内容,阅读John Skeet的清单编写完美的问题很有趣。约翰问:“您是否认真阅读过这个问题,以欣赏它对于一个看不到您眼中信息的人的可理解性和可理解性?”总的来说,这是对橡皮鸭的测试。另一个选择:“如果问题中包含代码,您是否在完整但简短的程序中输入了代码?”实际上,对简短程序的强调是对您是否尝试“分而治之”的考验。

粗略地说,约翰的清单建议人们首先尝试做有经验的程序员已经尝试过的事情,然后再向其他人寻求帮助。

不幸的是,并非所有人都听说过此清单。也许他听到了,但选择了忽略。这个人的代码有问题,他知道有一个可以帮助他的Stack Overflow问答系统,并且他没有时间阅读一些书呆子关于如何提问的协议。

经常有关于堆栈溢出是否应允许新手提出的问题的讨论。

当Jeff和我讨论系统的初始设计时,我告诉了他一个有关C编程语言的小组,该小组在Usenet网络上很流行。它被称为comp.lang.c

C是一种简单且受限制的编程语言。您只能找到100Kb的C编译器,因此,您可能会猜到,如果仅针对C创建讨论,那么对话主题很快就会结束。

还有一件事情。在90年代,C是一种语言,适用于刚开始参与编程的学生。这些相同的学生最常遇到C的最原始的问题。。他们立即在comp.lang.c中遇到了问题。

老人在那里很无聊。很无聊。他们厌倦了每年9月进入小组并问为什么他们不能从函数中返回一系列字符的学生的恶心。每。九月。

这些老朋友还发明了FAQ(常见问题)的概念。因此,他们似乎在说“看在上帝的份上,别再问Usenet已经被回答了一百次了”,也就是说,老派只想回答99%的普通C程序员普遍认为最奇妙而深奥的问题。不需要。该新闻组正在逐渐消失,因为实际上,它仅服务于徘徊了大约十年的一小部分人。

那就是杰夫和我所说的。初学者的问题该怎么办?
最后,决定应该是新来者。 Stack Overflow并没有“太简单”的问题的概念……但是,仍然最好先自己找到答案,然后再寻求他人的帮助。

我们了解到,更多“高级”程序员可能会觉得阅读相同的简单问题很无聊,因此不再联系我们。没关系-Stack Overflow不会强迫任何人终身坐在那里。厌倦了阅读新手有关它们不会返回本地字符数组的问题(“对我有用!”),您是否愿意在余下的时间里整理音乐专辑?如您所愿,您的权利。

您仅参加编程的事实并不意味着您的问题就不会在Stack Overflow上出现。我什至专门问了一个问题但是如何在LOGO中移动乌龟呢?“以示网站设计师很高兴看到绝对的初学者在家里。

但是与往常一样,根据意想不到的后果定律,这个问题几乎引起了丑闻-根本不是因为它的简单性。问题是我是出于恶意处理此事。杰夫·阿特伍德(Jeff Atwood)在这方面说得很好:“一个简单的问题也不错。没有努力寻找答案的做法很糟糕。” (嗯,那个)。

对于初学者而言,在提出问题之前必须填写的分数似乎没有必要,有时甚至很奇怪。这就像一个燃烧的人的节日。您是否认为您要去沙漠中某个地方的煽动性聚会,一到达目的地,他们就会在您的脸上大喊约10条原则,“自由基自我表达”,因此,洗碗后,您需要从干燥的湖泊中收集每一滴水,然后带回家-必要时移交。每个社区都有自己的规则,乍一看它们似乎很奇怪,很有趣,或者,如果您只是想使一些代码正常工作,那就很奇怪也很抽象。

许多使这个节日如此成功的《燃烧的人》规则看起来非常抽象,但它们是有道理的。美国土地管理局(US Land Administration Bureau)允许举办沙漠庆典,要求不要将污染的水倒在地面上,因为粘土无法很好地吸收土壤,这可能导致微生物生长和疾病,但是如果可以,为什么要对所有这些原因进行解释说如果游客不带走水,那么节日将不再举行吗?

堆栈溢出也是一样。我们不允许发布过于抽象的问题(“如何编写程序?”)。我们的一般规则是:如果您的问题的答案是整本书的大小,那么您想要太多。就像您写“我的肾脏似乎受伤了。怎么切呢?”对于已经学习了十年的外科医生来说,这样的问题听起来是不够的,甚至令人反感。

让我感到困扰的是,在依靠多样性和包容性来尝试教育新一代开发人员时,我们也为想要学习编程的人设置了障碍。实际上,从许多方面来说,堆栈溢出的特定规则只是一个障碍。但是更糟糕的是,新来者对论坛的忽视和粗鲁无礼。

我对此很担心。作为开发人员,您将有空前的机会来创建未来的方案。而且,Stack Overflow面对年轻程序员的局限性不仅损害了他们,而且损害了Stack Overflow系统本身,吓跑了社区中潜在的成员。编程并非没有问题。我们的目标是使其变得更容易。

明年,我们计划在这一领域努力。我们不能改变别人,使他们变得更友善。但是我认为我们可以改善Stack Overflow用户界面的某些方面,这将激励人们变得更加有文化。例如,我们可以调整“问问题”页面上的提示,或者进行被动审核,以便社区成员自己可以标记和抱怨粗鲁的评论,而这种评论目前还没有发生。

我们还在开发一项新功能,借助该功能,您可以将您的问题发送给您自己团队中的一小部分人,这可能有助于在一个巨大的大都市(即Stack Overflow)中营造某种友好的氛围。

尽管我们努力使Stack Overflow更加舒适,但我们的主要目标始终是为程序开发人员创建世界上最好的资源。

普通的静态程序员会给我们打电话340次。那就是我们的力量。还有其他有关编写程序的信息源,但是只有一个站点得到开发人员的高度信任并需要照顾,这就像程序员的国会图书馆一样。



图片
通过参加SkillFactory在线课程,了解如何从头开始获得热门职业或技能和薪资水平提高的详细信息:



阅读更多



All Articles