DHH漫談Ruby on Rails的文化
08年8月,Ruby on Rails創(chuàng)始人DHH在芝加哥接受了Oreilly記者的采訪(fǎng)(DHH當(dāng)時(shí)住在芝加哥而不在其老家丹麥),談?wù)摿艘恍㏑uby on Rails的技術(shù)和趨勢(shì)。
原文在:http://news.oreilly.com/2008/08/interview-with-david-heinemeie.html
以下是JavaEye編輯罒呍唲對(duì)訪(fǎng)談內(nèi)容的翻譯(部分內(nèi)容經(jīng)51CTO編輯校訂修改過(guò)):
====================
上周,在芝加哥我采訪(fǎng)了David Heinemeier Hansson,談?wù)摿艘恍㏑uby on Rails的技術(shù)和趨勢(shì)。一開(kāi)始我詢(xún)問(wèn)他對(duì)芝加哥的看法,而后就詢(xún)問(wèn)了他一些有關(guān)Rails的文化和社會(huì)不斷變化的問(wèn)題。我們討論到敏捷,以及許多技術(shù)在追趕他們。
【采訪(fǎng)開(kāi)始】
DHH:您好,我是David Heinemeier Hansson,Ruby on Rails 的創(chuàng)始人,37signals的合作伙伴。我將會(huì)出席12月的柏林 RailsConf Europe。
Tim O'Brien:我們正在芝加哥的Wicker公園,居民區(qū)也叫Wicker,這是遞歸?
DHH:這是一種遞歸。我認(rèn)為居民區(qū)的名字本身是根據(jù)公園的名字而來(lái)。因此我認(rèn)為這就是它如何開(kāi)始的。不管它是所謂的bucktown或是所謂的Wicker,甚至大多數(shù)人使用更長(zhǎng)的版本:“我住在bucktown/Wicker公園”。
TOB:談到芝加哥,是什么原因是您遷往芝加哥?為什么要從丹麥搬來(lái)?
DHH:幾乎我所有的生活都是在丹麥度過(guò)的,提出搬到芝加哥來(lái)是在三年前,因?yàn)?7signals。公司在芝加哥成立,有一半以上的雇員都居住在芝加哥。我的伙伴Jason Fried也居住在這里。我的女朋友要就讀于這里的一所大學(xué),所以我有機(jī)會(huì)來(lái)這,一切都是這么的順理成章。
TOB:你是如何發(fā)現(xiàn)芝加哥的技術(shù)和創(chuàng)新?是否有豐富的文化和技術(shù)呢?跟舊金山比較呢?
DHH:我認(rèn)為它非常不同于舊金山,它的偉大也在于它不同于舊金山。對(duì)我來(lái)說(shuō),并不是看中了它的科技,我不認(rèn)為一個(gè)城市科技的強(qiáng)大是一件好事,這就是為什么我覺(jué)得它好。
芝加哥更多地是處在一個(gè)中立區(qū)。沒(méi)有太多的高科技,但我可以在飯后跟您一起散步,這都是它的好處。芝加哥給人的感覺(jué)更“真實(shí)”,少了虛假,少了喧囂……
TOB:你最近為Y-Combinator開(kāi)辦了start-up學(xué)校。
DHH:Paul Graham ,我不知道他是不是自稱(chēng)VC,可能不會(huì)。在每年春季和秋季的時(shí)候,他們運(yùn)用早期階段的天使基金。start-up學(xué)校開(kāi)始用Y Combinator的錢(qián)來(lái)運(yùn)營(yíng)新的公司。
我被邀請(qǐng)?jiān)谀前l(fā)言。對(duì)我來(lái)說(shuō),這是一個(gè)偉大的機(jī)會(huì)。當(dāng)然我也參加了其他類(lèi)似的會(huì)議,在我心目中的想法是“let's get to VC, let's get eye-balls, let's get big, let's get bought”。所以我提供了一個(gè)候補(bǔ)的想法,如何建立一個(gè)公司,如何讓公司成長(zhǎng),如何能不出售您的公司,如何使它變?yōu)楦鼘?shí)際的東西。在這個(gè)基礎(chǔ)的前提上我們要考慮的是如何獲得更多的在線(xiàn)人數(shù)-這里有三個(gè)因數(shù):有一個(gè)理想的產(chǎn)品,為產(chǎn)品制定一個(gè)合理的價(jià)格,無(wú)需從所有對(duì)立的路線(xiàn)賺取利潤(rùn)。你也可以采用VC的錢(qián),靠廣告或其他任何的方法,只向最終用戶(hù)收取費(fèi)用。
TOB:我們來(lái)談?wù)凾witter。您覺(jué)得人們將Twiteer作為Rails scaling的例子這樣公平嗎?您能不能講一講為什么有人會(huì)說(shuō):Rails不可擴(kuò)展因?yàn)門(mén)witter不能擴(kuò)展,它們之間有什么間接的聯(lián)系?證明或反駁。 (51CTO編者注:當(dāng)時(shí)由于Twitter規(guī)模越來(lái)越大,性能問(wèn)題也變得多了起來(lái)。有評(píng)論說(shuō)是Rails難以擴(kuò)展的關(guān)系導(dǎo)致Twitter的性能問(wèn)題?,F(xiàn)在Twitter的后臺(tái)有一部分已經(jīng)轉(zhuǎn)而使用Scala,原計(jì)劃今年年底應(yīng)該會(huì)大部分后臺(tái)由Scala驅(qū)動(dòng))。
DHH:任何應(yīng)用程序,不管是否能夠擴(kuò)展,通常都不會(huì)有一個(gè)整體的大量的工作要做,導(dǎo)致它與框架或編程語(yǔ)言或其他任何的高新技術(shù)陷入孤立的地步。有些人認(rèn)為T(mén)witter不可擴(kuò)展,這是不正確的,它顯然是可以擴(kuò)展,并且每天都在成長(zhǎng)。我每天都要使用到它,有很多人每天也同樣要使用到它。它存在缺陷是肯定的,但是卻不是不可擴(kuò)展。Twitter從來(lái)就沒(méi)有如今天這般強(qiáng)大,也從來(lái)沒(méi)有如今天這般發(fā)展如此之快。
關(guān)于這些問(wèn)題是否涉及到Rails的網(wǎng)絡(luò)框架或其他,它始終只是一個(gè)不相干的問(wèn)題。對(duì)于我來(lái)說(shuō),它只是作為一個(gè)過(guò)濾器。如果人們固執(zhí)的認(rèn)為是Twitter導(dǎo)致Rails不能擴(kuò)展,我也無(wú)話(huà)可說(shuō)。我不會(huì)深入的去解釋?zhuān)抑幌胝f(shuō),他們根本就沒(méi)有真正的了解這門(mén)技術(shù)。
TOB:我們做了一個(gè)關(guān)于消極和積極情緒的民意調(diào)查。Rails是笨重的企業(yè)系統(tǒng)的反面。你怎么面對(duì)不愿使用Rails的人,他們會(huì)說(shuō),看Twitter吧?
DHH:總體來(lái)說(shuō),Twitter的性能問(wèn)題只是給了長(zhǎng)期以來(lái)對(duì)Rails有惡意的人一個(gè)攻擊的工具而已。而另外有很多人很喜歡Rails,不管反對(duì)者怎么說(shuō),Rails正在迅速普及,所有我們做的都是非常有趣的事情。
如果有人憎恨這些,那么就是他們害怕做有趣的事情,或者不敢面對(duì)反對(duì)常規(guī)的事情。宇宙有一種平衡機(jī)制,我們有大量的熱情開(kāi)發(fā)者每天開(kāi)發(fā)Rails的工具和插件,因此有幾個(gè)反對(duì)者不奇怪,這是一種平衡。
TOB:什么是Rails的文化?從外部來(lái)看,它顯示出一種波西米亞式的隨意,打敗偶像崇拜的沖動(dòng)。Rails在意識(shí)文化方面的引導(dǎo)和挑戰(zhàn)是非常成功的。現(xiàn)在Rails開(kāi)始進(jìn)入穩(wěn)定期,說(shuō)一說(shuō)現(xiàn)在它的文化和它如何改變的?你看到它的改變了嗎?它面對(duì)的意識(shí)文化方面的挑戰(zhàn)少了,革新減少,是否進(jìn)入傳統(tǒng)的波西米亞文化的套路,以及如何在文化上的團(tuán)結(jié)?
DHH:我認(rèn)為你非常正確。Rails一開(kāi)始象一群叛亂份子,它拒絕教條,拒絕其他語(yǔ)言的僵化思路,因此出現(xiàn)了很多觀念上的沖突和爭(zhēng)論?,F(xiàn)在Rails已經(jīng)獲得它的地位,在很多方面被證明是正確的,被更多的人接受,也就意味著Rails開(kāi)始不那么邊緣化了。但是我認(rèn)為事情都是在發(fā)展的,總會(huì)有新的爭(zhēng)論出來(lái),Rails能夠始終保持反傳統(tǒng)的挑戰(zhàn)地位。
現(xiàn)在,就有一個(gè)關(guān)于Web Services的,業(yè)界一直使用極其龐大繁重的SOAP和WS-Deathster方案,而Rails會(huì)尋找更加輕便簡(jiǎn)單的道路。
TOB:我不得不打斷你,是否能夠通過(guò)Soap4R在Rails中使用SOAP?這是一個(gè)驚人的實(shí)踐。
DHH:是的,我不希望把這種方式當(dāng)作我最大的敵人。我們做的很多工作,讓人們來(lái)選擇,我不會(huì)鄙視那些使用SOAP或者其他繁重框架的人,因?yàn)檫@也是他們的工作。雖然選擇新系統(tǒng)的人們或者使用其他技術(shù)方案的人們,他們選擇的技術(shù)很多時(shí)候我不能理解。
Rails會(huì)繼續(xù)采納意見(jiàn)和繼續(xù)成為爭(zhēng)論焦點(diǎn)。同時(shí),我認(rèn)為Rails的內(nèi)心就如同從外部看到的一樣,因?yàn)檫@是很個(gè)在很短時(shí)間建立的新技術(shù)。
同時(shí)有很多很多的開(kāi)發(fā)者使用C#, Java, PHP等等,比使用Rails的開(kāi)發(fā)者多的多。雖然,在Rails發(fā)布的5年來(lái),我們積累了大量的用戶(hù)。通過(guò)各種方式來(lái)為已經(jīng)確立的Rails技術(shù)添磚加瓦是必要的,還有很多事情需要做。
如果我們和身邊的接觸的人都使用同一個(gè)博客,同一個(gè)聊天室,參加同一個(gè)技術(shù)會(huì)議等,你會(huì)趨向認(rèn)為:每個(gè)人和我都很象,每個(gè)人都使用Rails,這是確定的。但是這是錯(cuò)誤的,我們所處的環(huán)境只是整個(gè)大環(huán)境的一個(gè)小部分。我們必須接受很多其他的人和觀點(diǎn)。
TOB:你能談?wù)処ron Ruby或者JRuby是否是Ruby的替代技術(shù)?
DHH:這個(gè)很有趣,因?yàn)樵诤芏嗲闆r,在實(shí)踐和工具以及推送技術(shù)給用戶(hù)的方式,Sun公司象一個(gè)邪惡的帝國(guó)。
TOB:很多方面稱(chēng)Sun公司為邪惡帝國(guó)?
DHH:我認(rèn)為他們是。但是我意識(shí)到技術(shù)領(lǐng)域不止一個(gè)帝國(guó),而且帝國(guó)也不是鐵板一塊。Sun的內(nèi)部有很多部門(mén),他們的工作非常棒。我認(rèn)為Charles Nutter 和整個(gè) JRuby團(tuán)隊(duì)(51CTO編者注:這幾位現(xiàn)在已經(jīng)離開(kāi)Sun,跳槽到了Engine Yard)就是。我和他們?cè)谝黄鸩欢虝r(shí)間,經(jīng)常在不同的技術(shù)會(huì)議遇到,他們是令人敬畏的開(kāi)發(fā)者,做了很多有趣而優(yōu)秀的工作,他們的工作可以形容為:“Ruby 和 Java的對(duì)抗”。
而且,我認(rèn)為他們?cè)谧龊軐?shí)用的工作,很多開(kāi)發(fā)者使用Java環(huán)境,Java是成名已久應(yīng)用廣泛的技術(shù),擁有巨大的應(yīng)用基礎(chǔ),他們不得不在Java環(huán)境下工作,有時(shí)候技術(shù)領(lǐng)域不是看起來(lái)的那樣有很多種選擇。
TOB:在你的起始營(yíng)地談話(huà)中,你特別提到技術(shù)公司雇傭開(kāi)發(fā)者來(lái)設(shè)計(jì)框架和APIs——這是一個(gè)巨大的錯(cuò)誤?
DHH:我認(rèn)為是的。我認(rèn)為這個(gè)事情和一般認(rèn)為的不一樣。例如:在Java中重新應(yīng)用Ruby不是一個(gè)設(shè)計(jì)實(shí)踐,不是和設(shè)計(jì)一個(gè)API庫(kù)的設(shè)計(jì)方式一樣。我認(rèn)為當(dāng)你做這類(lèi)的事情,不要重新應(yīng)用,不要重新修改技術(shù)規(guī)格,也就是說(shuō),重新設(shè)計(jì)架構(gòu)不是一個(gè)好方法。我不喜歡這樣。但是在J-Ruby中重新應(yīng)用Ruby我認(rèn)為相當(dāng)好。當(dāng)你沒(méi)有在真正開(kāi)始做一件事情的時(shí)候,我認(rèn)為視野決定了你不得不選擇最難的方式來(lái)做。
這是一個(gè)抽象的差異,但是我肯定的相信類(lèi)似Ruby和Rails的框架不能被那些全職工作的人所創(chuàng)立。(譯者注:DHH反對(duì)全職工作啊,呵呵。) 你不能設(shè)計(jì)這類(lèi)事務(wù)如果你并沒(méi)有真正開(kāi)始工作,同時(shí)面對(duì)真正的系統(tǒng)環(huán)境。同時(shí)成為客戶(hù)和開(kāi)發(fā)者這種感覺(jué)非常棒。你能夠做更好的決定,并同時(shí)擁有更多樂(lè)趣。
TOB:Robert Lefkowitz 三周前在開(kāi)源大會(huì)(OSCON)上做了演講,他闡述了關(guān)于技術(shù)和慣例的區(qū)別,實(shí)際工作和領(lǐng)導(dǎo)工作的區(qū)別,工程技術(shù)和藝術(shù)以及科學(xué)之間的不同。Rails和其他成功的技術(shù)被歸類(lèi)于工程技術(shù),有實(shí)際的需求和真實(shí)的產(chǎn)品來(lái)支持。那么設(shè)計(jì)一個(gè)API庫(kù)或者設(shè)計(jì)一個(gè)抽象框架,是不是科學(xué)范疇的?
DHH:我肯定的說(shuō),在我的內(nèi)心,我在科學(xué)中成長(zhǎng),技術(shù)也是如此。我認(rèn)為他們舉了錯(cuò)誤的例子,類(lèi)似Rails和API開(kāi)發(fā),我認(rèn)為這兩個(gè)更像藝術(shù)和技巧……我不認(rèn)為我是工程師,我更愿意用工匠(Craftsman)來(lái)形容自己。
TOB:下一步你打算做什么?有什么技術(shù)抓住你的眼球,有沒(méi)有雖然和你現(xiàn)在做的工作無(wú)關(guān),但是你愿意仔細(xì)看看的技術(shù),看能不能帶來(lái)關(guān)于Rails的靈感?
DHH:現(xiàn)在出現(xiàn)了很多新的技術(shù)很吸引我。最近我對(duì)CouchDB和BigTable很感興趣,另外一個(gè)就是Memcached,特別是整個(gè)使用鍵值過(guò)期和生成鍵值的方式。
TOB:BaseCamp和Write Board,你都是水平擴(kuò)展,對(duì)不對(duì)?
DHH:是的,我們使用同一方式,在應(yīng)用方向和web方向,我們水平擴(kuò)展。如果我們需要更多容量,我們添加更多的應(yīng)用服務(wù)器,更多mongrels,更多web服務(wù)器等等。在數(shù)據(jù)庫(kù)方面,我們也在擴(kuò)展。我們剛購(gòu)買(mǎi)了一個(gè)更大的服務(wù)器群集來(lái)容納BaseCamp的數(shù)據(jù)庫(kù)。
TOB:你們?cè)趦蓚€(gè)中間做了二級(jí)制復(fù)制?
DHH:是的,只是用來(lái)備份。所有讀寫(xiě)操作都在單一的"big ass"機(jī)器上,而且我們這樣做只是因?yàn)檫@樣容易,而且經(jīng)濟(jì)?,F(xiàn)在仍然是。這是一個(gè)有128GB RAM的機(jī)器,如果需要我們會(huì)擴(kuò)展到256GB,并繼續(xù)擴(kuò)展。如果不是在一個(gè)機(jī)器上擴(kuò)展會(huì)很痛苦。
【編輯推薦】