大教堂和市集

大教堂与市集》(The Cathedral and the Bazaar)是埃里克·史蒂芬·雷蒙(Eric Steven Raymond)所撰写的软体工程方法论。以Linux的核心开发过程以及作者自己主持开发的开放原始码软体──Fetchmail为讨论案例。

  1. 好软体都是起源于程式发展者要解决切身之痛。[2]
  2. 优秀的程式师知道要写程式,伟大的程式师知道要改写(和重复利用)程式。[3]
  3. 计画好如何舍弃一条路吧,你迟早会想尽办法这么做的。[4][5]
  4. 抱持正确的态度,就会发现有趣的问题。[6]
  5. 当你对一个问题不再感兴趣时,你最后的责任就是找位能胜任的接棒人。[7]
  6. 把你的使用者视为协同发展人,可以让你伤最少的脑筋,但做到原始码的快速改善,程式的除错有绩效。[8]
  7. 尽早,经常发表新版本,并且倾听使用者的意见。[9]
  8. 以足够多的 beta 版测试者和协同发展者做基础,几乎程式中的每一个问题都可以很快地找出来,并且对某些人而言,,针对发现的问题的解决方法是显而易见的。[10]
  9. 聪明的资料结构配上笨拙的程式码要比相反的组合好。[11][12]
  10. 如果你视 beta 版测试者如同你最珍贵的资源,那么他们会以此做为回报。[13]
  11. 体认你使用者提供的巧思,以获取好点子,有时候越后到的越好。[14]
  12. 通常,最适切和最有创意的解题法来自发觉自己对问题原先的观念是错误的。[15]
  13. 设计上完美,不是“没有东西能再被加入”,而是“没有东西能再被移出”。[16]
  14. 任何的工具以我们所知道的方法来使用都会有用,但一个真正了不起的工具会以你从未想过的使用方法来发挥它的功能。[17]
  15. 写作任何的通信闸软体时,要尽可能地不去扰动到通讯的资料流 -- 并且绝对不要丢掉其中任何的资讯,除非接收方强迫你这么做。[18]
  16. 当你设计的语言不是严谨到“完全 Turing”,你可以采用比较平易的语法。[19]
  17. 一个保密系统是否安全依存于它隐藏的秘密,注意不要有“虚拟秘密”。[20][21]
  18. 为了要解有趣的问题,开始找你感兴趣的问题吧![22]
  19. 假如专案发展协调者拥有至少跟网际网路一样好的媒体,而他也不靠强制力来领导,那么一群人必定胜过一个人。[23]

注解

编辑
  1. 参考资料︰教堂观与市集观
  2. 原文︰Every good work of software starts by scratching a developer's personal itch.
  3. 原文︰Good programmers know what to write. Great ones know what to rewrite (and reuse).
  4. 原文︰Plan to throw one away; you will, anyhow.
  5. 出处︰Frederick P. Brooks, Jr,《人月神话:软体专案管理之道》,台北:经济新潮社,2004年:第十一章 ISBN 9867889185
  6. 原文︰If you have the right attitude, interesting problems will find you.
  7. 原文︰When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
  8. 原文︰Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
  9. 原文︰Release early. Release often. And listen to your customers.
  10. 原文︰Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
  11. 原文︰Smart data structures and dumb code works a lot better than the other way around.
  12. 说明︰相反的组合指笨拙的资料结构配上聪明的程式码
  13. 原文︰If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
  14. 原文︰The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
  15. 原文︰Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
  16. 原文︰Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
  17. 原文︰Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
  18. 原文︰When writing gateway software of any kind, take pains to disturb the data stream as little as possible -- and *never* throw away information unless the recipient forces you to!
  19. 原文︰When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
  20. 原文︰A security system is only as secure as its secret. Beware of pseudo-secrets.
  21. 说明︰以 fetchmail 为例,隐藏的秘密是指“通行密码”;“虚拟秘密”是指把通行密码编码后存于设定档中。
  22. 原文︰To solve an interesting problem, start by finding a problem that is interesting to you.
  23. 原文︰Provided the development coordinator has a medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
 
维基百科中的相关条目: