by lostfire
1. Every good work of software starts by scratching a developer's personal itch.好的軟件都起源于開(kāi)發(fā)者本身的切身之痛
??? 這一條或許可以解釋為什么開(kāi)源的程序往往質(zhì)量比較高。
2. Good programmers know what to write. Great ones know what to rewrite (and reuse).優(yōu)秀的程序員知道寫什么程序,偉大的程序員知道改寫
??? 一個(gè)很簡(jiǎn)單的邏輯是,在現(xiàn)有基礎(chǔ)上工作總比什么都沒(méi)有強(qiáng)
3. ``Plan to throw one away; you will, anyhow.'' (Fred Brooks, The Mythical Man-Month, Chapter 11)計(jì)劃拋棄一種途徑吧,因?yàn)槟銓?lái)一定會(huì)這么做的。(選自
? 針對(duì)一個(gè)問(wèn)題, 在尚未作出第一個(gè)解法前, 你通常并不真正了解這個(gè)問(wèn)題. 也許第二次的時(shí)候你才能充分了解怎麼做才對(duì), 所以即使你想做對(duì)一件事, 但起碼你要準(zhǔn)備從第一次做起.
4. If you have the right attitude, interesting problems will find you.如果你有正確的觀念,你就會(huì)發(fā)現(xiàn)很多有趣的問(wèn)題。
5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.當(dāng)你對(duì)一個(gè)問(wèn)題失去興趣的時(shí)候,你的最后一個(gè)責(zé)任就是把它移交給一個(gè)勝任的繼承者。
6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.把使用者當(dāng)成合伙的開(kāi)放者是進(jìn)行快速代碼改進(jìn)
??? 事實(shí)上, 開(kāi)放源碼世界的所有人, 幾乎都嚴(yán)重低估了因使用者增多而產(chǎn)生用以對(duì)抗系統(tǒng)復(fù)雜度的力量, 直到 Linus Torvalds 明白地揭露了這一點(diǎn).在開(kāi)源界很多軟件的使用者同時(shí)就是開(kāi)發(fā)高手,他們有更好的直覺(jué)和開(kāi)
??? 每一個(gè)成功的軟件幾乎都經(jīng)過(guò)若干次重寫或重構(gòu),而迫使重寫或重構(gòu)的
??? 其實(shí)現(xiàn)在我們很多熟知的公司或軟件都自覺(jué)不自覺(jué)的通過(guò)這種方式來(lái)提
??? 看看Eric對(duì)Linus的評(píng)價(jià):
8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.如果有足夠的beta測(cè)試者和合作開(kāi)發(fā)者基礎(chǔ)
??? 足夠多的人來(lái)看程序,所有的問(wèn)題都變得很淺顯。
??? 我想這就是教堂模式和市集模式最主要的不同, 以教堂建造者的觀點(diǎn)來(lái)看程序發(fā)展, 程序錯(cuò)誤和相關(guān)問(wèn)題難以處理,并潛伏在深處, 需要數(shù)個(gè)月的工夫仔細(xì)查看來(lái)找到他們, 而這對(duì)程式開(kāi)發(fā)者的自信少有加許. 發(fā)布的周期越長(zhǎng), 一旦經(jīng)長(zhǎng)期等待的新版本發(fā)布后便不如預(yù)期完美, 使用者的失望也越大.
??? 開(kāi)發(fā)者和單純使用者對(duì)于軟件模型的認(rèn)識(shí)是不同的,開(kāi)發(fā)者從內(nèi)向外看
10. If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.如果你把beta測(cè)試者當(dāng)作你最寶貴的資源
???? 看看Eric使用的方法吧:
2) 對(duì)于每一位與我討論 fetchmail 的人, 我把他們列入 beta 測(cè)試者的名單 , 所以名單越來(lái)越長(zhǎng).
3) 每當(dāng)我開(kāi)發(fā)出新版本, 一定發(fā)出像聊天般的通知給 beta 測(cè)試者名單上的人, 鼓勵(lì)他們一起來(lái)參與這個(gè)項(xiàng)目.
4) 而我也總是傾聽(tīng) beta 測(cè)試者的心聲, 詢問(wèn)他們對(duì)于這個(gè)程序的設(shè)計(jì)上有無(wú)意見(jiàn), 并且回應(yīng)他們送來(lái)對(duì)程序的修補(bǔ)和回饋.
11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.下一個(gè)獲得好點(diǎn)子的最好的方法是識(shí)別那些從使用者中
??? 你將會(huì)發(fā)現(xiàn)一件很有趣的事: 如果你很誠(chéng)實(shí)并很謙虛地知道你欠人多少, 那么全世界都會(huì)認(rèn)為你發(fā)明了全部, 而且對(duì)你先提出的天才創(chuàng)作, 也會(huì)以為你非常謙虛, 這些我們可以在 Linus 身上得到印證.
??? 當(dāng)你在開(kāi)發(fā)程序的過(guò)程中撞到障礙物時(shí) -- 也就是當(dāng)你發(fā)現(xiàn)很難想出下一步要怎么修復(fù)時(shí), 通常是反省的時(shí)候了, 但不是問(wèn)是否已找到正確的答案, 而是我們提出正確的問(wèn)題了么?也許問(wèn)題需要再重新整理一番.
14. Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.用所期待的方式使用任何工具都應(yīng)該有用
???? 這個(gè)是一個(gè)多么偉大的境界,或許可以好比說(shuō)你在解析了一千種表達(dá)式
15. 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! 在寫任何網(wǎng)關(guān)軟件時(shí),盡可能不去弄亂數(shù)據(jù)流,永遠(yuǎn)都不要丟棄任何信
當(dāng)CPU和存儲(chǔ)都變得便宜時(shí), 設(shè)定的語(yǔ)法的簡(jiǎn)潔已不再是我們的目標(biāo), 現(xiàn)在的情況是: 一個(gè)電腦語(yǔ)言中符合人性易於使用的重要性已超過(guò)節(jié)約電腦的計(jì)算資源.
集市模式的條件:
要讓你的設(shè)計(jì)使人能夠相信你的軟件將來(lái)會(huì)大有可為。
事實(shí)上,協(xié)調(diào)者是否具有天才設(shè)計(jì)并不重要,重要的是他要能夠識(shí)別別
開(kāi)放源碼社區(qū)對(duì)于名譽(yù)的重視給人一種微妙的壓力,如果無(wú)法勝任項(xiàng)目
領(lǐng)導(dǎo)人良好的溝通技巧。
19: Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.給開(kāi)發(fā)協(xié)調(diào)者一個(gè)至少像Internet一樣好的溝通媒介
注:
1,藍(lán)色字體部分是在下的一些理解。
2,詳細(xì)文本,F(xiàn)rom:http://www.catb.org/