社会学家 Ray Oldenburg 认为,除了工作和家庭之外,人类需要一个第三类场所,在那儿可以和朋友相聚,一边呷着啤酒,一边讨论当天事件和活动,尽情享受交流带来的欢乐。咖啡馆、酒吧、美发厅、露天啤酒店、台球房、俱乐部以及其它一些社交场所,它们和人们的生活息息相关,同工厂、学校、公寓一样重要。在 Bowling Alone 一书中,作者 Robert Putnam 披露了大量引人入胜、有据可查的细节,这些证据表明,现在美国社会的第三类场所已经消失了。在过去的25年里,美国人“很少参与和组织活动,对周围邻居知之甚少,很少和朋友见面,甚至和家人的交往也不多”。对于很多的人来说,生活就是由上班、回家、看电视组成的三部曲。工作 - 电视 - 睡觉 - 工作 - 电视 - 睡觉。在我看来,这种现象在软件开发人员当中更为严重,尤其是在硅谷和西雅图郊区。人们大学毕业之后,千里迢迢来到一个人生地不熟的地方,每天工作12小时,基本上都是在孤独中度过。
因此许多程序员纷纷涌向在线社区 - 聊天室、论坛、开源项目以及 Ultima Online(译注:一个大型多人在线游戏),这一点都不奇怪,因为他们极度渴望与人接触。我们构建社区软件,在某种程度上,就是在尝试创建一个第三类场所。就像任何其它建筑项目一样,我们所做的设计决策至关重要。开酒吧太吵,人们在里面无法正常交流。这让我们想做一个与咖啡馆风格迥异的地方。在一个没有很多椅子的咖啡馆,如星巴克,人们将不得不携带他(她)们的咖啡孤独地回到自己的房间。而不是留在那里,就像电视剧《老友记》里所展现的那样。
软件和建筑非常相似,设计决策对于社区的功败垂成至关重要。如果你的产品易于使用,人们就会经常使用它。反之,如果你的产品难以使用,人们就会很少使用它。因此,通过这种方法,你就能够鼓励人们以一种预设的行为方式参与进来,从而奠定社区的风格和品质。感觉友好吗?这里是一个有着深度谈话、有趣思想的知识分子沙龙?亦或是一个广告传单洒落满地而无人收拾的脏乱地方?
如果你去浏览一些在线社区,你会立刻注意到它们有着不同的社区氛围。如果你仔细观察,你会发现这些变化通常是软件设计决策的副产品。在新闻组里,谈话线索会持续好几个月时间,涉及很多不相关的话题,你永远不知道他们都在那里说些什么。当一个新人陷入迷惑而试图请教一下时,老家伙们就会向他大喊,让他去读 FAQ。带有“>”符号的引用真是一种变态,阅读任何一个单独的谈话,你都要重读一连串论点的整个历史信息,而这些内容你刚刚在原帖中读过,就在几秒钟之前,一遍又一遍,周而复始,这样的阅读过程真的无聊极了。
在 IRC(互联网中继聊天)上,你不能拥有自己的昵称,也不能拥有一个频道 - 一旦最后一个人离开房间之后,任何人都能接管它。这是该软件的工作方式,结果就是当你第二天再返回 IRC 时,你通常找不到你的朋友,因为别人可能会锁定你的聊天室,而你的朋友也可能会被迫选择不同的昵称。当孩子们去睡觉以后,唯一阻止澳大利亚珀斯的同性恋破坏者接管同性恋频道的方法就是,去创建一个软件机器人一天24小时在线守候该频道。许多 IRC 参与者在复杂的“机器人大战”(bot-wars)上投入很多的进来精力试图接管频道,实际上,这和进行交谈相比实在是一个愚蠢的举动,而且这样的做法常常会破坏其他人的正常交流。
在大多数的投资论坛,跟随一个线索从始至终几乎是不可能的,因为每一个帖子都有自己单独的页面,目的当然是用于显示大量的横幅广告,因此耗时惊人的阅读过程最终能把人逼疯。讨论周边大量闪烁的商业垃圾会让你觉得,你是在纽约时代广场上交朋友,而闪烁的霓虹灯则会不断吸引你的注意力。在 Slashdot 上,每一个谈话线索都有成百上千的回复,其中许多是相同的,所以这样的交流总给人一种平淡和愚蠢的感觉。等一下我就会向你揭示,为什么 Slashdot 上存在许多相同的回复,而 Joel on Software 上不存在这种现象的原因。
在 FuckedCompany.com 上,讨论板完全、彻底地没有价值,绝大多数文章由不相干的亵渎和咒骂组成,感觉就像兄弟会举办的一场粗鲁比赛,没有任何友爱可言。
所以,我们似乎发现了一些在线社区的基本原理:
很小的软件设计细节最终可能导致在线社区发展、行为和感觉上的巨大差异。
IRC 用户组织本身之所以会陷入机器人之战,是因为软件不能让你预定一个频道。新闻组讨论充斥着大量的冗余内容,因为最早的新闻组阅读器 rn,是专门针对300波特的调制解调器而设计的,从来不向你显示旧帖,只显示新的,所以如果你想给某人发表的观点挑点毛病的话,你必须先引用他们的观点,否则你的评论将会由于失去上下文而变得毫无意义。考虑到这一点,我想回答关于 Joel on Software 论坛最常见的一些问题,为什么它被设计成现在这个样子,如何让它有效运转以及如何改进。
问. 为什么软件设计的如此简单?
答. 在 Joel on Software 论坛的早期,达到一个让人们之间的谈话热闹起来的关键临界点非常重要,这样就可以避免空餐厅现象的发生(没人喜欢到一家空餐厅就餐,他们宁愿去隔壁那家人多的,即使这家餐厅很垃圾。) 因此一个重要的设计目标就是,消除发帖障碍。不用注册,甚至表面看来缺乏特色的根本原因就在于:无需学习。
经营 Joel on Software 论坛的业务目标是为 Fog Creek 公司的产品提供技术支持。这是为了公司发展而做的必要投入。为了完成这个目标,必须让软件变得超级简单以便用户能舒适地使用它,没有什么比这个更重要了。所有让论坛有效运转的操作步骤都异常地显而易见。我还没听说过有谁不能马上明白如何使用它。
问. 你能做一个复选框吗,在我选择它时,能实现“如果有人回复了我的帖子就给我发一封邮件”这样的功能?
答. 这一功能很容易实现而且对程序员来说也颇具诱惑力,然而它却是让任何成长中的论坛走向灭亡的最佳途径。实现这一功能,你可能永远不会达到临界点。Philip Greenspun 的 LUSENET 有这个功能,你可以看到它正在不断削弱新兴讨论组的生命。
为什么?
情况就是人们去讨论组里提问一个问题。如果你提供了“通知我”复选框这一功能,那么这些人发布完他们的问题,然后选中复选框,之后就再也不回来了。他们只需在邮箱中阅读回复就可以了,剧终。
如果你移除这一复选框功能,人们除了每隔一段时间回来检查外别无选择。当人们回来检查回复时,他们可能会阅读其它看起来很有趣的帖子。而且他们也可能再为那个帖子做点贡献。在你试图让讨论组起飞的早期关键日子里,增加讨论组的“粘性”,以及让更多的人来光顾讨论组,这都有助于让讨论组更快达到临界值。
问. 好的,但是论坛能不能至少有分支功能呢?如果有人沿着某个回帖回复下去,这就创建了属于自己的分支,你可以沿着该分支继续讨论也可以回到主分支。
答. 分支概念对于程序员来说非常合乎逻辑,但是却与现实世界中发生的讨论不符。带有分支功能的讨论将导致跟踪脱节以及注意力分散。你知道我发现分散了什么吗?当我试图在银行网站上进行操作时,网站是如此慢以至于我不记得从一个点击到下一个点击到底在做些什么。这让我想起了一个笑话。三个老太太的对话。第一个老太太:“我很健忘,不久前某一天,我领着袋子在公寓,我不记得我刚刚是倒过垃圾还是拿杂货上楼了。”第二个老太太:“我也很健忘,我在路上正开着车,但我不记得我究竟是要回家还是要去教堂了。”第三个老太太:“感谢上帝,我还有点记性,非常清楚,敲木头(敲敲敲)。进来,门打开!”分支使讨论偏离轨道。阅读一个带有分支的谈话令人感到不知所措、不自然。如果人们想离开主题,最好是强制他们开启一个新的主题。这也时刻提醒着我...
问. 你的论坛话题列表排序有问题。应该把具有最新回复的话题排在前面,而不是按照原帖的发布时间来排序。
答. 当然可以这么做,许多网上论坛就是这么做的。但是如果这样做的话,某些话题往往永远占据顶部的附近位置,因为人们愿意讨论有关“H1B 签证或者大学计算机科学存在什么问题”这样的话题,这样的讨论会持续到宇宙的终结。每天新增100人进入论坛,他们首次进入论坛时,通常是在列表的顶部开始,并且会逐步地深入到这些话题中。
我这样做有两大优势。第一,话题可以快速消失,因此讨论能得以保持相对有趣。最终人们不得不停止讨论一些话题。第二,使得主页上话题的顺序变得相对稳定,因此很容易再次找到你感兴趣的话题,因为相对于其前后邻帖来说,它的位置是固定不变的。
问. 为什么你不提供‘我已阅读过哪些帖子’这一功能呢?
答. 我们有最好的系统,它具有分布式和可伸缩的特点:我们让每个人的浏览器都能跟踪它。网页浏览器会改变你已经访问过的链接颜色,从蓝色变成紫色。所以我们要做的就是巧妙地改变每个话题的 URL,让其包含可用的回复数;使用这种方法,当有额外回复时,帖子的链接颜色将再次变成未读颜色。
其它比这更优雅的解决办法实现起来很难,而且也会给用户界面带来不必要的复杂性。
问. 那个该死的“回复”链接始终在底部。这一功能使用起来令人恼火,因为你必须总是滚动到最底部才能看到它。
答. 这是故意(这么设计)的。我更喜欢你在回复之前读完所有帖子,否则你可能会发布一些重复或者听起来和前面最后一贴脱节的内容。当然,在你发帖之前,我不能从生理上去抓住你的眼球并让其从左侧移动到右侧,迫使你阅读完整的上下文,但如果我把“回复”链接放在除了页面底部的任何地方,在他们读完已有的帖子内容之前,这将积极鼓励人们喷出一颗颗“小宝石”(译注:相同或无聊的内容)。这就是为什么 Slashdot 的话题有多达500个回复,但是仅有17个有趣评论的原因,也是为什么没有人喜欢阅读 Slashdot 讨论的原因:它们听起来像一个坐满学生的教室,所有孩子同时喊出相同的答案。(“哈哈... 比尔.盖茨!这真是一个矛盾!”)
问. 那个该死的“开始一个新话题”链接始终在底部...
答. 嗯哼,同样的道理。
问. 为什么你不提供预览功能,让他们在正式发帖之前进行确认呢?这样一来,人们就不会犯诸如拼写之类的错误。
答. 根据经验,这是不正确的。它不仅不正确,而且事实与此正好相反。
第一点:当存在一个确认步骤时,大多数人只是点击一下就过去了。很少有人仔细重读他们的帖子。如果他们想要仔细重读他们的帖子,他们完全可以在编辑的时候做到这一点,但是他们已经对自己的帖子感到厌倦了,那些帖子就如同昨日黄花,他们已经准备好继续前进了。
第二点:缺少确认步骤实际上使得人们更加谨慎。一些专业研究结果显示,在曲曲折折的,去掉防撞护栏的山路上开车反而更安全,因为它使人感到害怕,所以开车时格外小心谨慎。不管怎样,小而脆弱的铝制防撞护栏不足以阻止一辆重约2吨、时速50英里的 SUV 坠入山崖。从统计学角度上来看,你最好吓唬那些司机,使他们感到心惊胆战,这样他们就会以2英里的时速在山路上蠕动。
问. 在我撰写我的回帖时,你为什么不让我查看我所回复的帖子呢?
答. 因为这将吸引你在回帖的时候去引用部分原帖内容。我所采取的任何降低引用数量的举措都会提高讨论的流畅度,使得阅读帖子的过程变得有趣。每当有人引用上面的内容时,阅读这个话题的人将不得不阅读同样的内容两次,这是毫无意义且注定是无聊的。有时人们仍然试图去引用帖子内容,通常是因为他们准备回复的帖子距离当前位置间隔三个以上,或者因为他们盲目地去找碴,他们需要反驳12个没有联系的观点。
这些人都不是坏人,他们只是程序员,编程需要考虑周到并且做到滴水不漏,这样你才能进入一种心境:不会忽略任何一个编译器提示的未赋值参数错误。但是如果我放你一马的话,我就会受到惩罚。我力图找到一种把文章显示为图片的方法,这样你就不能剪切和粘贴了。如果你的确需要回复三个帖子之前的内容,请花一点时间组织一个像样的英语句子(“当弗雷德说废话,他一定不会认为...”),不要在此地像丢垃圾似地放置你的 <<<>>> 标记。
问. 为什么帖子有时候会消失?
答. 论坛是由版主管理的。这意味着有那么几个人有神奇的力量可以删除帖子。如果他们删除的帖子是一个谈话线索中的第一个,那么这个谈话线索本身似乎就被删除了,因为没有办法再看到它。
问. 这是审查制度!
答. 不,这就像是在公园里捡垃圾。如果我们不这么做,信噪比会发生戏剧性的变化,变得很糟糕。人们会发布垃圾信息和致富计划,发布和我有关的反犹太主义评论,或者发布没有任何意义的废话。有些理想主义的年轻人可能会把完全未经审查的世界,想象成一个可以自由交流聪明想法的地方,藉此用于提高每个人的智商,就像一个理想化的牛津辩论社或者演讲角那样。我非常清楚一个完全未经审查的世界看起来就像你的收件箱:80%的垃圾邮件、广告、以及欺诈,这些将会迅速赶走很多有趣的人。
如果你正在寻找一个能充分表达自己而且不受任何约束的地方,我给你的建议是(a)创建一个新的论坛(b)使其广受欢迎。(向 Larry Wall 致歉)
问. 你如何决定要删除什么内容?
答. 首先,我会删除从完全偏离主题的帖子,或者在我看来,只有极少数人感兴趣的帖子。就是说,如果帖子的内容与 Joel on Software 论坛主题或宗旨不完全相符,可能仅仅对某些人有用,但却无法引起让大多数来我网站,希望了解软件开发的人的兴趣。
我过去奉行的策略是,“题外话”包括任何关于论坛自身、论坛设计、以及论坛可用性的讨论。有一个稍微不同的原因,几乎成为另一个公理。每一个论坛、邮件列表、讨论组、以及 BBS,在所有其它条件相同的情况下,每隔一到两周时间就会陷入关于论坛自身的讨论。总有人进入论坛闲逛,并发表他为论坛提出的改进意见,要求我们马上改正,这样的频率差不多一周一次。然后有人会说,“看呀伙计,你这样做没有意义,Joel 不会理你的”。其他人则会说“Joel 不是那样的人,这只是 Fog Creek 公司的营销策略”。实在是太无聊了,因为此种情景每周都在上演。这就好像在无话可说时去谈论天气一样。对刚进入讨论版的新人来说,可能令人兴奋,但对软件开发主题来说,毫无意义。所以,像大个坏蛋一样说声“删除”。
不幸的是,据我所知,试图阻止人们讨论论坛本身这一话题,就像试图阻断河流一样困难。但是,如果你正在阅读这篇文章,并且你想在论坛上讨论这个问题,拜托了,请帮我一个忙吧,抵制住你内心的冲动。
我们将删除那些对非公众人物进行人身攻击的帖子。人身攻击意味着是一种针对个人人身的攻击,而不是针对他的想法。如果你说“真是一个愚蠢的想法,因为...” 这没问题。如果你说“你是个傻蛋”,那么这就构成人身攻击了。如果它是恶意的、不文明的、或诽谤的,我会删除它。有一个例外:因为 Joel on Software 论坛是一个批评 Joel 的最好地方,所以关于 Joel 的恶意的或者不文明的帖子是允许存在的,但前提是它们必须包含一些有用的观点或想法,哪怕是极其微小的一点也好。
我会自动删除那些对之前发帖人的拼写或语法进行评论的帖子。我们会谈论面试,有人就会说,“按照这样的拼写,你能找到一份工作,真是奇迹啊。” 谈论别人的拼写超级无聊、超超级无聊。
问. 为什么你不公开发帖规则而是让其成为一个秘密呢?
答. 不久前某一天,我乘火车从新泽西的纽瓦克机场回到曼哈顿。车站除了年久失修之外,唯一可以让人阅读的东西,就是一块言辞犀利且非常详细的大告示牌。内容大意是,如果你不遵守规矩的话,你将在下一站被赶下去,而且警察还会找你麻烦。我在想,99.99999% 阅读这块牌子的人不会行为不端,而真正行为不端者也不会在乎告示牌说些什么。所以告示牌的最终结果是,使得诚实的公民们感觉自己遭到了指控,它根本不可能阻止任何反社会人士(或反社会活动),而只是无休止提醒新泽西善良的公民们,他们正位于纽瓦克这个犯罪之都,犯罪分子已经上了火车,他们会做一些令人不愉快的事情,引发大吵大闹,随后,警察会把他们带下火车。
几乎每一位在 Joel on Software 论坛的人,不知何故,似乎与生俱来就会知道,发表恶意的人身攻击,或者在一个软件论坛发布关于学习法语的问题,或者通过批评某人的拼写引发一场辩论,这些都是不文明的行为。只有 0.01% 的人才不在乎这些潜规则。所以发帖规则只是侮辱了大多数遵纪守法的公民,却不会阻止那些把自己的大便当作美味,而且认为他们发布的帖子不可能违反规定的白痴们。
当你在公共场合成为麻烦制造者时,其他人会认为你是一个偏执狂,或者在他们被骂时也感觉很生气,因为他们没有做任何错事。这就好像在小学,一个白痴孩子打破了一扇窗户,结果现在每个人都不得不坐在那里聆听老师的严厉训斥:为什么你不能打破窗户。所以任何关于为什么关于某个帖子被删除的公开讨论都是禁止的。
问. 和删帖相比,为什么你不搞一个温和点的方案呢,人们可以对他们喜欢的帖子进行投票,这样的话,人们就可以在阅读之前根据投票的高低去选择是否阅读它们了?
答. 当然,这是 Slashdot 的工作原理,我敢打赌 50% 经常访问 Slashdot 的人从来没有搞明白这个问题。
我不喜欢这样做有三个原因。第一:它增加了 UI 的复杂度,人们不得不去学习如何使用它。第二:它创造了复杂的政治,让拜占庭式帝国政府看起来就像一个低水平学校的行政管理机构。第三:当阅读 Slashdot 时,如果你把过滤器调得很高以至于你只能看到有趣的帖子,那么叙事部分的功能就会完全丧失了。你只能得到一群随机杂乱且没有上下文的语句。
问. 你为什么没有一个注册方案用来排除粗鲁的发帖者呢?
答. 我前面曾就此做过解释,一个论坛软件的设计目标在于其易用性。(记住,论坛软件是用来为发帖提供技术支持的。)注册方案至少会把 90% 想要发帖的人排除在外,在技术支持的情景中,那 90% 的人就会拨打我们的免费电话。
除此之外,我不认为注册有何帮助。如果有人想滥用,注册方案对此无效,他们可以重新注册。通过要求注册来改善社区的想法是一种很过时的手段。我认为以下情景采用注册方案才是合适的:对于那种需要打电话邀请的会议,你可以创建一个和你们讨论话题匹配的网站,并且对所有人收取费用。
要求注册无法提高讨论的质量和参与者的平均素质。如果你仔细观察 Joel on Software 论坛上的信噪比,你可能会注意到那些吵闹的人(即发表文章最多而贡献想法最少的人)通常是论坛的长期中坚分子,他们每十分钟就访问一次论坛。这些人觉得很有必要以“我同意”加入谈话,即使他们没有独到的见解,也要回复每一个话题。这些人可都是注册用户噢。
问. 未来有什么计划吗?
答. 论坛软件上的工作并非我或者我公司的当务之急:它现在就挺好,能正常工作,它创建了一个有趣的地方,在这里不仅可以讨论计算机管理方面的难题,而且也可以了解世界上一些最聪明的人的想法。我有太多更重要的事情去做。兴许别人能让论坛的可用性更上一个台阶吧。
我刚刚创建了一个纽约论坛,想看看基于地理位置的论坛是否能鼓励人们互相认识,无论线上还是线下。根据我的经验,区域性社区可以让社区产生巨大飞跃,从一个简单的网站变成一个真实的社会,一个真正的第三类场所。
不管怎样,创办社区是一个崇高的目标,因为我们中的许多人都严重缺失这一追求。让我们继续努力吧。
作者: Joel Spolsky,Fog Creek、Trello & Stack Exchange 联合创始人。
原文: Building Communities with Software(2003)
感谢: Jodoo 帮助审阅并完成校对。