用软件构建社区
翻译的《乔尔谈软件》的一篇关于他们的论坛的谈话
社会科学家 Ray Oldenburg 谈到,除了工作和家庭,人们还需要第三空间,与朋友见面,喝啤酒,讨论当天的事情,享受人际交往。咖啡店、酒吧、美发沙龙、啤酒花园、台球厅、俱乐部和其他场所与工厂、学校和公寓一样重要[“The Great Good Place”, 1989]。但是,资本主义社会正在侵蚀这些第三空间,社会陷入贫困。在《Bowling Alone》一书中,Robert Putnamdebi以引人入胜且记录充分的细节提出了大量证据,表明美国社会几乎失去了第三空间。在过去的25年里,美国人“参加的组织越来越少,与邻居见面的次数越来越少,与朋友见面的次数越来越少,与家人交往的次数也越来越少。”[2000]对很多的人来说,生活就是工作,然后回家看电视。工作-电视-睡眠-工作-电视-睡眠。在我看来,这种现象在软件开发人员中要严重得多,尤其是在硅谷和西雅图郊区。人们从大学毕业,跨越国界搬到一个他们不认识任何人的新地方,最终每天工作12个小时,基本上是为了摆脱孤独。
所以毫不奇怪,那么多的程序员,渴望一点点人际联系,涌向在线社区-聊天室,论坛,开源项目或Ultima Online。在设计社交软件的过程中,我们在某种程度上试图创建第三个地方。和其他任何架构项目一样,我们所做的设计决策是至关重要的。把酒吧弄得太大声,人们就不能交谈了。这里和咖啡店是完全不同的地方。像星巴克那样,在一家咖啡店里摆放很多椅子,人们就会把咖啡带回自己孤独的房间,而不是像《老友记》(Friends)里那样,呆在周围,参加社交活动。我们会看这样的节目,因为假冒的第三空间比没有第三空间的痛苦要少。
在软件中,就像在架构中一样,设计决策对于开发或未开发的社区类型同样重要。当你让一些事情很简单,人们就会更频繁地去做。当你让这些事情变困难,人们就不会那么频繁地去做。通过这种方式,你可以温和地鼓励人们以某种方式行事,这种方式决定了社区的特点和质量。它会让人感觉很友好吗?这里有密集的谈话吗?是不是像一个充满拥有着有趣想法的知识分子的欧洲沙龙?还是说这个地方一片荒凉,地板上散落着几张肮脏的广告传单,根本没人去捡?
看看一些在线社区,你会立刻注意到不同的社会氛围。仔细观察,您会发现这种变化通常是软件设计决策的副产品。
在Usenet上,一个帖子甚至可以持续几个月,会有很多你永远找不到它们在哪里的切入点。每当一个新加入的用户跌跌撞撞地走过,问一个相关的问题,老前辈们就会让他停下来,告诉他去阅读 FAQ。带有“ >”符号的引用是一种疾病,它使你不可能阅读任何一条话茬,而不得不烦得要死的重新阅读整个系列争论的历史,这些争论你刚刚在几秒钟前读过,一遍又一遍。
在IRC上,你不能拥有属于自己的昵称,你也不能拥有一个频道——一旦最后一个人离开这里,任何人都可以接管它。这就是软件的工作方式。这样的社交的结果是,当你第二天回来的时,你往往不可能再找到你的朋友,因为其他人可能已经把你锁在了聊天室之外,你的朋友可能被迫选择了不同的昵称。唯一能解决这种问题的方式是,创建一个机器人,一天24小时运行并在人们睡着的时候守卫这个频道。许多IRC的参与者把更多的精力投入到复杂的机器人战争中,试图接管频道,做一些愚蠢的行为而不是真正地进行交谈,经常毁了我们其他人的事情。
在大多数投资讨论板上,几乎不可能从头到尾跟踪一条帖子,因为每个帖子都有它自己的页面,这就产生了大量的横幅广告的空间,阅读一段对话的延迟最终会让你抓狂。对话的四周闪烁着大量的商业废话,让你觉得自己正试图在时代广场上交朋友,但霓虹灯一直吸引着所有的注意力。
在Slashdot上,每个帖子都有数百条回复,其中许多都是一样的,所以那里的对话感觉平淡无奇、愚蠢至极。稍后我将揭示为什么Slashdot有那么多相同的回复,而Joel的软件论坛上却没有。
在 fuckedcompany.com 上,讨论板是完全的,完全没有价值的; 绝大多数的帖子都是无关的亵渎和普遍的辱骂,它感觉像是一个兄弟会的粗鲁竞赛,没有任何兄弟。
因此,我们发现了在线社区的基本原理:
小的软件实现细节导致了社区发展、行为和感觉方式的巨大差异。
IRC用户围绕机器人战争组织自己,因为软件不允许你预订频道。Usenet的帖子是非常冗余的,因为最初的 Usenet 阅读器“ rn”是为300波特调制解调器设计的,它从来不显示旧的帖子,只显示新的帖子,所以如果你想挑剔某人说的话,你必须引用它们,否则你的挑剔就没有意义了。
考虑到这一点,我想回答关于 Joel on Software 论坛最常见的问题,为什么它是按照设计方式设计的,它是如何工作的,以及如何改进它。
Q:为什么这个软件如此简单化?
A:在 Joel on Software论坛的早期阶段,获得一个关键的群体来启动对话对于防止餐厅空无一人的现象非常重要(没有人去空荡荡的餐厅,他们总是会去隔壁那个空荡荡的餐厅,即使那个餐厅完全是垃圾)因此,设计的目标是消除发帖的障碍。这就是为什么没有注册,也没有任何功能,所以没什么好学的。
运行该论坛的软件的商业目标是为 Fog Creek 的产品提供技术支持。这就是开发费用的来源。为了实现这个目标,没有什么比让软件变得超级简单更重要的了,这样任何人都可以舒服地使用它。所有关于论坛如何运作的事情都是显而易见的。我不知道还有谁不能立即想出如何使用它。
Q:你能不能做一个特写,让我选中一个方框,上面写着“如果有人回复我的帖子,请给我发邮件”
A:这个特性非常容易实现,因此对程序员非常有吸引力,是扼杀任何年轻论坛的最佳方式。实现这个功能,你可能永远不会达到临界质量。菲利普 · 格林布恩的 LUSENET 就有这个功能,你可以看到它正在逐渐侵蚀年轻讨论小组的生活。
Q:为什么?
实际情况是,人们走到群组中提出一个问题。如果你提供“通知我”复选框,这些人会发布他们的问题,勾选复选框,然后就再也不回来了。他们只会在邮箱里看回复。结束。
如果你消除了这个复选框,人们就别无选择,只能隔一段时间再检查一次。当他们检查的时候,他们可能会看到另一篇看起来很有趣的帖子。他们可能会对这个帖子有所贡献。在关键的早期阶段,当你试图让讨论组起飞时,你增加了“粘性”,有更多的人在周围徘徊,这有助于更快地达到关键规模。
Q:好吧,但是你至少能有分支吧?如果有人离开了一个话题,那应该是它自己的分支,你可以离开或回到主分支。
A:对于程序员来说,分支是非常合乎逻辑的,但它并不符合现实世界中对话的发生方式。分支式的讨论会脱节,以便跟进和分散注意力。你知道我觉得什么让人分心吗?当我试图在我的银行网站上做一些事情时,网站是如此缓慢,我不记得我从一个点击到下一个点击在做什么。这让我想起一个笑话。三个老太太在说话。女士1: “有一天我太健忘了,我拿着一个袋子走在回公寓的台阶上,我不记得自己是在倒垃圾还是带着杂货上楼。”女士2: “我太健忘了,当时我开车在车道上,我不记得我是回家还是去犹太教堂了。”女士3: “谢天谢地,我的记忆还在,清晰如钟,敲敲木头。(咚咚咚)。进来吧,门开着!”分支使得讨论偏离了轨道,而读一条分支的话题则是令人困惑和不自然的。如果人们想跑题,最好强迫他们开始一个新的帖子。这倒提醒了我。
Q:你的主题列表排序错误。它应该把最新回复的主题放在第一位,而不是根据原始帖子的时间列出它们。
A:它可以做到这一点; 这是许多网络论坛所做的。但是当你这样做的时候,某些话题会永远浮现在顶端,因为人们会愿意争论H1B签证,或者大学里的计算机科学有什么问题,直到宇宙的尽头。每天都有100个新人第一次来到论坛,他们从列表的顶部开始,兴致勃勃地讨论这个话题。
我这样做有两个好处。第一,话题很快就会消失,所以谈话仍然相对有趣。最终人们不得不停止争论一个给定的观点。
第二,主页上主题的顺序是稳定的,因此很容易再次找到您感兴趣的主题,因为相对于它的邻居,它保持在相同的位置。
Q:你为什么不建立一个系统让我看看我已经读过的文章呢?
A:我们有最好的系统,可以用分布式的、可扩展的方式实现: 我们让每个人的浏览器都能跟踪它。网络浏览器会将你已经访问过的链接的颜色从蓝色改为紫色。因此,我们所要做的就是巧妙地改变每个主题的URL,使其包含可用的回复数量; 这样,当有其他回复时,文章将再次以“未读”的颜色出现。
任何比这更复杂的东西都会更难构建,并且会不必要地使用户界面复杂化。
Q:该死的“回复”链接一直在底部。这是一个可用性的烦恼,因为你必须滚动到底部。
A:这是故意的。我希望你在回复之前先阅读所有的帖子,否则你可能会在看到一篇帖子之后发布一些重复的或者听起来杂乱无章的回复。当然,我不能强行抓住你的眼球,从左到右移动它们,强迫你在发帖之前阅读整个帖子,但是如果我在页面底部以外的任何地方放置一个“回复”链接,肯定会鼓励人们在读到已经存在的内容之前吐出他们的小宝石。这就是为什么Slashdot的话题有500个回复,但只有17个有趣的回复,这就是为什么没有人喜欢阅读Slashdot的讨论: 它们听起来像一个教室里的孩子都在同一时间喊出同一个答案。(“哈哈… … 比尔 · 盖茨!这是矛盾修饰法!”)
Q:该死的“开始一个新主题”链接一直在底部..。
A:嗯,一样的。
Q:你为什么不在发帖子之前让用户看看他们的帖子,确认一下呢?这样人们就不会犯错误和拼写错误。
A:从经验上讲,这是不正确的。不仅不正确,而且正好相反。
一: 当你有一个确认步骤时,大多数人只需点击它。很少有人仔细地重读他们的帖子。如果他们想仔细地重读他们的文章,他们可以在编辑的时候完成,但是他们已经厌倦了他们的文章—- 这是昨天的报纸,他们准备继续前进。
二: 缺乏确认步骤实际上使人们更加谨慎。就像他们做的那些研究表明,在蜿蜒曲折的山路上,移除防撞栏会更安全,因为这会让人们害怕,所以他们开车更小心,不管怎样,这个薄薄的铝制防撞栏,不能阻止一辆2吨重的 SUV,以50英里每小时的速度从悬崖上飞下来。从统计学的角度来看,你最好只是吓唬吓唬司机,让他们以每小时2英里的速度在山道上爬行。
Q:为什么你不给我看看我正在回复的帖子,而我正在写回复呢?
A:因为这会诱使你在自己的回答中引用其中的一部分。我所能做的任何事情,只要能减少引用的数量,就能增加谈话的流畅性,让主题读起来更有趣。每当有人引用上面的内容时,阅读主题的人必须连续读两遍同样的内容,这是毫无意义的,而且保证是无聊的。
有时候人们仍然试图引用一些东西,通常是因为他们回复了三个帖子之前的东西,或者是因为他们盲目地吹毛求疵,他们需要反驳12个不同的观点。他们不是坏人,他们只是程序员,而编程需要你在每个 i 和 t 之间加上点点滴滴,所以你进入了一种思维框架,你不能留下任何未得到解答的参数,就像你不能忽略编译器中的错误一样。但是如果我让你轻松一点,我会被诅咒的。我几乎忍不住想找个方法把帖子显示成图片,这样你就不能使用剪切和粘贴了。如果你真的需要回复三个回复之前的东西,请花点时间写一个像样的英语句子(“当弗雷德说了一堆废话,他一定没有考虑到…”) ,不要在这个地方乱扔你的东西。
Q:为什么有时候帖子会消失?
A:论坛由主持人主持。这意味着少数人会有权利来删除一个帖子。如果被删除的帖子是楼中的第一个帖子,那么全部帖子本身就会被删除。
Q:但那是审查制度!
A:不,是在公园里捡垃圾。如果我们不这样做,信噪比会急剧变坏。人们发布垃圾邮件和致富计划,人们发布对我的反犹太言论,人们发布毫无意义的废话。一些理想主义的年轻人可能会想象一个完全不受审查的世界,在这个世界里,智慧思想的自由交流提高了每个人的智商,一个理想化的牛津辩论协会或演讲角。我是务实的,我知道一个完全不受审查的世界就像你的收件箱: 80% 的垃圾邮件、广告和欺诈,迅速赶走了少数有趣的人。
如果你正在寻找一个地方来表达自己,不会有任何节制,我的建议是: (a)创建一个新的论坛和(b)使它流行起来。(向拉里 · 沃尔致歉)。
Q:如何决定删除哪些内容?
A:首先,我会删除那些完全偏离主题的帖子,在我看来,这些帖子只有极少数人感兴趣。如果有些东西不是关于像 Joel on Software那样的一般话题,那么对于某些人来说可能是非常有趣的,但是对于大多数来我的网站了解软件开发的人来说,这可能不会引起他们的兴趣。
我过去的政策是“偏离主题”包括任何关于论坛本身、论坛设计或可用性的讨论。这里有一个稍微不同的原因,几乎是另一个公理。在其他条件相同的情况下,每个论坛、邮件列表、讨论小组和 BBS 每一两周都会陷入关于论坛本身的讨论。字面上来说,每周都有一个人走进来,宣布他要求立即对论坛软件进行改进的清单。然后有人说,“听着,伙计,你不用付钱,Joel在帮我们的忙,滚开。”还有人说: “Joel这么做不是出于好心,而是为福格克里克做市场营销。”这太无聊了,因为每周都会发生。这就像你没什么可说的时候谈论天气一样。这可能是令人兴奋的新人谁刚刚出现在董事会,但这里仅仅是关于软件开发,因此,正如斯特朗怀说,“删除”。很不幸,我学到的是,试图让人们停止谈论论坛就像试图阻止一条河流。但是,如果你正在阅读这篇文章,并且你想在论坛上讨论它,请,请,请帮我一个大忙,抵制这种冲动。
我们将删除那些针对非公众人物的人身攻击的帖子。我最好给它下个定义。人身攻击意味着对个人的攻击,而不是对他的思想的攻击。如果你说“这是一个愚蠢的想法,因为… …”这没关系。如果你说“你是愚蠢的”,那么这是一种人身攻击。如果它是恶毒的,不文明的或者诽谤的,我会删除它。只有一个例外: 因为 Joel on Software 论坛是批评 Joel 的最好地方,关于Joel的恶毒或不文明的帖子被允许发布,但前提是它们包含一些有用的论点或想法。
我会自动删除那些对前一张帖子拼写或语法有评论的帖子。我们在谈论面试的时候,有人会说,“你能用那样的拼写找到工作真是个奇迹。”只是谈论别人的拼写太无聊了。超级,超级无聊。
Q:你为什么不把规则贴出来,而不是让它成为一个谜呢?
A:有一天我坐火车从纽瓦克机场回曼哈顿。除了常见的年久失修,唯一可以阅读的就是一个巨大的标志,上面非常严肃详细地解释说,如果你行为不端,你将在下一站下车,警察将被召来。我想,99.999999% 看到这个标志的人不会是无礼的人,而那些无礼的人根本不在乎这个标志说了什么。所以这个标志的最终结果就是让诚实的公民感觉他们被指控了,而且它根本没有阻止反社会者,它只是提醒新泽西的好市民,他们永远在纽瓦克,犯罪之都,在那里反社会者上了火车,做些不愉快的事情,大吵大闹,不得不被拖延,被警察传唤。
几乎每个在Joel on Software论坛上的人,不知怎么的,都生来就有一部分大脑告诉他们,发表恶毒的人身攻击,或者在软件论坛上发表关于学习法语的问题,或者通过批评别人的拼写来进行辩论是不文明的。另外0.01% 的人不在乎规则。因此,发布规则只是侮辱大多数守法公民的一种方式,并不能阻止那些认为自己的粪便闻起来很香,而且他们发布的任何东西都不可能违反规则的白痴。
当你在公共场合向捣乱分子发表演讲时,其他人都会认为你是偏执狂,或者因为他们没有做错什么而被责骂而感到愤怒。这就像回到了小学,一个白痴小孩打破了一扇窗户,现在每个人都得坐在那里听老师严厉地教导全班同学为什么不能打破窗户。因此,任何公开讨论为什么一个特定的帖子被删除,这样的例子是一种忌讳。
Q:与删除帖子不同,为什么不设立一个适度的方式,让人们投票决定自己对帖子的喜好程度,然后人们可以在阅读帖子之前选择投票高的?
A:当然,这就是 Slashdot 的工作原理,我敢打赌,定期阅读 Slashdot 的人中,有50% 从来没有弄明白过它。
我对此有三点不满意。第一: 它的用户界面更加复杂,这是人们需要学习如何使用的一个特性。第二: 它制造了如此复杂的政治,使得拜占庭帝国看起来像是三年级的政府。第三: 当你阅读 Slashdot 的时候,过滤器开得足够高,你只能看到有趣的帖子,故事就完全失去了意义。你只会得到一堆没有上下文的随机杂乱无章的陈述。
Q:为什么你们没有一个注册要求来消除粗鲁的帖子?
A:正如我之前解释的,这个论坛的目标是使它更容易发布。(请记住,该软件是为技术支持而编写的。)注册要求至少消除了90% 可能发帖的用户,而在技术支持方案中,这90% 的用户会拨打我的免费电话。
此外,我不认为注册会有什么帮助。如果有人在辱骂你,那么禁止他们也无济于事,他们可以轻易地重新注册。通过要求注册来改善社区的想法是一个古老的想法,而且我认为,它适合于 Echo/Well 类型的会议,在这种会议上,你创建一个人际网络,就像你在讨论一个话题一样,你向人们收取现金作为条件。
但是要求注册并不能提高谈话的质量或者参与者的平均质量。如果你仔细观察 Joel on Software 论坛上的信噪比,你可能会注意到最吵的人(也就是说,发布最多文字、贡献最少想法的人)往往是那些每十分钟访问一次论坛的时间最长的核心成员。这些人觉得有必要附和一句“我同意”,然后回复每一个话题,即使他们没有一个原创的想法来贡献。他们当然会注册。
Q:未来有什么打算吗?
对我和我的公司来说,为讨论论坛开发软件并不是优先考虑的事情: 它已经足够好了,它可以工作了,它创造了一个有趣的场所来讨论计算机硬件管理问题,并从世界上一些最聪明的人那里获得想法。我还有很多更好的事情要做。其他人可以为论坛的可用性创造一个巨大的飞跃。
我刚刚创建了一个纽约市论坛,来看看基于地理位置的论坛是否能够鼓励人们在网上和现实之间相互了解。根据我的经验,以地区为基础的社区使社区从一个简单的网站跨越到一个真正的社会,一个真正的第三空间。
无论如何,创建社区是一个崇高的目标,因为对于我们中的许多人来说,这是一个非常缺失的目标。让我们继续努力吧。