软件可重用的"三法则rule-of-three"


本文是世界最大问答社区Stack Overflow和 Discourse 的联合创始人的文章:
2004 年,当我第一次阅读《软件工程的事实与谬误》时,它提到:
软件可重用有两个“三规则”:

  • 构建可重用组件的难度是一次性组件的三倍,并且
  • 一个可重用的组件应该在三个不同的应用程序中试用,然后它才会足够通用以接受到一个重用库中。

是的,这只是工匠的经验法则,但三法则是一个非常强大和有效的经验法则,我已经深深地相信了。
要构建真正可重用的东西,您必须首先说服三个不同的受众彻底使用它
每一个出生的程序员都认为,他们脑中出现的任何想法都是他们所构思的最通用、最灵活、最通用的解决方案。我们认为我们构建的软件是针对某些问题的通用解决方案,但我们几乎总是错的。我们有重用的错觉
如果我在我的编程生涯中学到了什么,那就是:构建可重用的软件,真正可重用的软件,是一个非常困难的问题。
 
当初建立Stack Overflow时,我们并没有着手构建通用问答引擎。我们只想解决程序员为他们的编程问题寻找快速、可靠的技术答案的问题,而不是他们通常得到的无休止的意见和论点。哦,是的,还要处理那个带连字符的网站。我一生中最大的乐趣之一就是认识现在从未听说过这个带连字符的网站的程序员。我希望你能原谅我,但当他们说这句话的时候,我会在他们的头上叠加一个巨大的杜比亚式“任务完成”横幅。我每次都笑很长时间。
不到一年后,我们有了面向程序员的Stack Overflow、面向系统管理员的Server Fault和面向计算机高级用户的Super User——完整的三部曲。三个网站,三个不同的受众,都在嗡嗡作响。
一旦我们证明 Stack Overflow 引擎可以扩展到这三个不同的社区,我就放心地使用 Stack Exchange,它现在是一个由100 多个社区驱动的问答网站组成的网络
当我们在 2 月份推出 Discourse时(它是100% 开源的),即使经过八个月的努力,我对我们实际上已经构建了可行的通用论坛软件的幻想为零。
我们与我们的三个合作伙伴(Stack Overflow、Server Fault、Super User)一起慢慢地运行解决方案,住在他们作为室友的同一个软件屋里,在他们发展讨论社区的过程中与他们并肩同行,并尽我们所能帮助将其打造为一个我们和其他人一样享受的社区。
这需要时间,但是多亏了三条规则,我相信当我们完成与合作伙伴 #3 的合作时,我们最终将拥有一款真正可重用的通用开源讨论软件与世界分享——我可以毫不犹豫地推荐一款给(几乎)任何人,因为它可能也适用于他们的社区。
所以下次当你想“我已经构建了一个可重用的东西!”时,停下来想想“我怎样才能找到三个用户、客户或观众,来证明我已经构建了一个可重用的东西?”