原文链接:

Stack Overflow 是 GitHub 之外的另一个大型男性交友网站。因为有人宣称一个周末可以将其重写,所以有了这两篇文章。

第一篇文章从代码的角度驳斥了这个观点。第二篇文章的作者是 Stack Overflow 的创始人之一 Jeff Atwood,他的回答是:代码「可以是」微不足道的,要让代码成功,还有太多其它的事情需要做。

记得前一阵子也有过关于「招百十个人,投几百上千万,重新开发一个淘宝」的讨论,如果不清楚怎样回复这种问题,就读读这两篇文章。

The One in Which I Call Out Hacker News

The next time you see an application you like, think very long and hard about all the user-oriented details that went into making it a pleasure to use, before decrying how you could trivially reimplement the entire damn thing in a weekend. Nine times out of ten, when you think an application was ridiculously easy to implement, you’re completely missing the user side of the story.

当你下次见到一个你喜欢的应用,在你反驳说你能如何轻易地在一个周末重新开发出这整个玩意之前,花时间认真想想所有那些让人乐于使用的面向用户的细节。当你认为开发一个应用简单得可笑时,十有八九你完全忽略了用户一方的情况

作者能够访问 StackOverflow 的源代码,据他统计源代码文件的大小为 2.3 MB(小于一个普通的 MP3 文件),即使你照着输入一遍的话,一个周末也是不够的。

当程序员看到 StackOverflow,最先出现在他们脑海里的是这两张数据表,以及一些展示这些数据的代码。但使 StackOverflow 成功还需要开发许多其它的功能。

create table QUESTION (ID identity primary key,
                       TITLE varchar(255), --- why do I know you thought 255?
                       BODY text,
                       UPVOTES integer not null default 0,
                       DOWNVOTES integer not null default 0,
                       USER integer references USER(ID));
create table RESPONSE (ID identity primary key,
                       BODY text,
                       UPVOTES integer not null default 0,
                       DOWNVOTES integer not null default 0,
                       QUESTION integer references QUESTION(ID))

Code: It’s Trivial

Writing code is trivial. And fun. And something I continue to love doing. But if you really want your code to be successful, you’ll stop coding long enough to do all that other, even more trivial stuff around the code that’s necessary to make it successful.

写代码确实是微不足道,但也是乐趣,也是我始终爱做的事情。不过如果你真的希望你的代码成功,你会停止写代码,去做那些围绕着代码的、更微不足道的、但是必要的所有其它事情,以使你的代码成功。

作者列举了除编码和开发很酷的功能之外,为了打造 Stack Overflow 的良好体验需要做的事情

  1. 整合更整洁、更合理的 HTML 标签
  2. 优化网页速度和载入时间
  3. 简化或改善网站布局、CSS 以及图片、
  4. 回复技术支持和反馈邮件
  5. 写博客文章解释网站引擎或理念的某个方面
  6. 作自己网站的用户,询问自己的编程和系统管理问题
  7. 在 meta.stackoverflow.com 和社区互动,帮助衡量我们需要做什么,哪些粗糙的地方需要打磨。
  8. 选举社区管理员,开发管理工具,使社区成长时能够自我管理。
  9. 为用户贡献的问题和答案生成 CC 协议的数据转储
  10. 提出「可靠广告」计划,使我们大家都能维持生计
  11. 和 Joel 一起制作 Stack Overflow 博客节目
  12. 帮助 Stack Overflow 开发日会议安排后勤
  13. 创建「Stack Overflow 三部曲」中的下一个网站,搞清楚下一步的方向