被訪者簡(jiǎn)介:Loren Brichter 是 App Store 的明星加傳奇開(kāi)發(fā)者之一,曾經(jīng)開(kāi)發(fā)了 Letterpress?霸占?xì)W美排行榜首位很長(zhǎng)時(shí)間的游戲。其實(shí) Loren 之前曾經(jīng)在 Apple 任職,擔(dān)任 iOS 圖像方面的開(kāi)發(fā)工作。之后他從 Apple 離職創(chuàng)業(yè),最后成功被 Twitter 并購(gòu)。2012 年 Loren 離開(kāi) Twitter 再次創(chuàng)業(yè),也正是在這之后 Letterpress?橫空出世。
Loren,感謝你特地在假期中抽空參加我們的訪談。這幾天都在忙什么呢?
我整個(gè)假期一直都很忙,大部分時(shí)候都在處理家里的事務(wù)。現(xiàn)在我終于能回到真正的工作中了。
你當(dāng)前的工作是什么?
我現(xiàn)在還不能透露任何細(xì)節(jié),不過(guò)我已經(jīng)做了一陣子底層的實(shí)驗(yàn)了,一些事情已經(jīng)有了眉目。能回到以前的狀態(tài)非常棒,這能在沒(méi)有發(fā)布期限壓力的情況下反映出我現(xiàn)在到底在干什么。
在你走上編程之路之前,是否有其他職業(yè)也讓你產(chǎn)生了強(qiáng)烈的興趣?
我肯定會(huì)選建筑師、機(jī)械工程師、木匠或者攝影師。最近我正逐漸減少花在這些閃閃發(fā)亮的電子設(shè)備上的時(shí)間,這的確很難,因?yàn)樗鼈兒苋菀拙臀宋业囊暰€(xiàn)。
從木匠到攝影師 -- 這跨度真大!面對(duì)這么多的選擇,是什么讓你堅(jiān)持編程?
純粹是因?yàn)閼T性。我適合編程,希望能找到一個(gè)方式,用我的技能來(lái)做些對(duì)大家有益的事情。
你事業(yè)上做過(guò)哪些不起眼的決定?
我覺(jué)得那些對(duì)我很重要的決定反而在其他人眼里并不起眼,比如為了做一些瘋狂的嘗試,多次放棄穩(wěn)定高薪的工作。幸運(yùn)的是其中的有些事情結(jié)果還不錯(cuò)。如果我今天再去做,也許就達(dá)不到相同的結(jié)果。
除了慣性,還有什么其他吸引你的東西讓你堅(jiān)持編程嗎?
老實(shí)說(shuō),編程對(duì)我的吸引力越來(lái)越小了。或許這因?yàn)槲沂恰案啐g工程師”的緣故,我了解的越多,就越感到編程的可怕。我喜歡推倒一切重新開(kāi)始,但現(xiàn)在卻只能逆著浪潮游泳。因此有時(shí)我會(huì)嘗試剔除掉垃圾或者重新定位那些糟糕的技術(shù),來(lái)讓一切變得不那么糟糕時(shí)會(huì)讓我有點(diǎn)滿(mǎn)足感。
隨著編程興趣的下降,你將來(lái)可能涉足完全不同的行業(yè)嗎?
我將一直會(huì)做和編程有關(guān)的事情,不過(guò)這些事情里軟件也許只占一小部分,并不會(huì)成為主導(dǎo)。
既然你還不準(zhǔn)備跳船改行,那我們來(lái)談?wù)劸幊汤锬切┰愀獾牡胤桨伞?/strong>
跟能被修補(bǔ)的船不一樣,這更像是乘著一堆積攢下來(lái)的垃圾進(jìn)行越洋航行。當(dāng)然,總有些東西浮著來(lái)避免其他東西下沉。因此問(wèn)題換成“哪個(gè)部分是好的?”可能更加合適些。而你也只能將各個(gè)組件分離看待才能回答這個(gè)問(wèn)題。比如我就覺(jué)得 Rust 語(yǔ)言不錯(cuò)。但一旦供奉了馮諾依曼的理念,你就能爬下堆棧去質(zhì)疑一切,這也是不切實(shí)際的。
你認(rèn)為這一切都會(huì)朝什么方向發(fā)展?會(huì)變得更好嗎?
我認(rèn)為事情最終都會(huì)變得更好。然后再次變?cè)恪H缓笥钟腥伺軄?lái)感嘆說(shuō)“噢!真是太亂了!”接著他們就會(huì)做一些事情來(lái)讓情況變得好些。然后循環(huán)再次開(kāi)始。因此這就很容易產(chǎn)生抱怨:為什么我一直忙于我已經(jīng)做過(guò)的工作。
當(dāng)你試圖讓一切變得“不那么糟糕”時(shí),腦海里有過(guò)更大的目標(biāo),來(lái)指引你決定的方向嗎?你為什么要做這一切?
當(dāng)然有,但它是如此抽象,以至于人們會(huì)認(rèn)為我瘋了。因此對(duì)于目標(biāo),我只想說(shuō)“創(chuàng)造啟迪人類(lèi)的工具”。我指的“啟迪”是 Carl Sagan 認(rèn)為的那種我們即宇宙,并在試圖了解自己的啟迪。我們很早就達(dá)到了只用大腦所能思考的極限,因此我們需要通過(guò)增加心靈溝通的方式來(lái)提升它。但現(xiàn)在的工具都太復(fù)雜,光嘗試著去使用它們就得耗盡你所有的心力,因此你都沒(méi)有余力來(lái)做一些有趣的事情?;蛘哒f(shuō)至少它們對(duì)我來(lái)說(shuō)太復(fù)雜了。我沒(méi)有那么聰明。
就我個(gè)人而言,我厭煩瑣碎的應(yīng)用程序,而 App Store 并沒(méi)有讓一切變得更有趣。我認(rèn)為下一個(gè)發(fā)生在軟件業(yè)的大事件將跳出這個(gè)圈子。
說(shuō)到軟件業(yè)的下一個(gè)大事件,現(xiàn)在有什么真正有趣的發(fā)展嗎?
當(dāng)然有。有許多希望的曙光:Rust、Swift、TypeScript、asm.js、WebGL的廣泛支持 -- 狹義地來(lái)看這些都很有趣。
Swift 的哪些方面吸引了你?
它有現(xiàn)代的類(lèi)型系統(tǒng),這很棒。(當(dāng)然當(dāng)它完成后會(huì)更棒) 另外我認(rèn)為自定義操作符非常可愛(ài),我希望它們能在 Swift 中出現(xiàn)。
你已經(jīng)將 Swift 用在日常工作中了嗎?
我還沒(méi)有用它來(lái)實(shí)現(xiàn)任何東西:Swift 的各種工具還十分脆弱。而且在它開(kāi)源或者代碼能被克隆之前,除非它不再和蘋(píng)果綁定,我都不會(huì)真正使用它。你看,至少現(xiàn)在我在 Linux 上都能編譯 Objective-C。
你剛剛說(shuō)你在屏幕上花費(fèi)的時(shí)間越來(lái)越少了。我能想象為人父是主要原因。
當(dāng)然。我將要瘋狂地限制在屏幕上花費(fèi)的時(shí)間,這對(duì)于我之前的生活也許是個(gè)諷刺。我也不知道這是怎么發(fā)生的,但是我對(duì)移動(dòng)革命的理解加深了。以前我看到別人拿出 iPhone 時(shí)非常激動(dòng)。現(xiàn)在卻變成“嘿小子,別再盯著你的屏幕!”并且我發(fā)現(xiàn)應(yīng)用程序無(wú)處不在!各種應(yīng)用應(yīng)有盡有。我已經(jīng)成為一個(gè)老頑固。把你的應(yīng)用程序從我的地盤(pán)上拿開(kāi)!
我想我們中有很多人能從限制接觸屏幕的時(shí)間中受益 -- 你想借此機(jī)會(huì)做一個(gè)公開(kāi)的承諾嗎?
哈哈,不行。
好吧。能多透露一些你的工作嗎?你主要是在家工作對(duì)吧?
是的,每次我試圖不在家里工作的時(shí)候,都苦不堪言。我喜歡在家工作。
你是如何規(guī)劃你的一天 -- 你是按照固定的時(shí)間表工作還是靈活地處理事情?
少年,帶孩子這事兒打亂了我的工作日程。我保持了一貫的節(jié)奏,之前我毫不分心地工作到凌晨,然后入睡。而現(xiàn)在我必須在合適的時(shí)間入睡,這樣我小孩早上起床時(shí)我才會(huì)不像個(gè)僵尸。我感覺(jué)我已經(jīng)慢慢地適應(yīng)這種狀況,但是,實(shí)際比想象地更困難。
大部分情況下同一時(shí)間你是只專(zhuān)注于一個(gè)項(xiàng)目還是多個(gè)任務(wù)同時(shí)進(jìn)行?
我的工作日程是互相關(guān)聯(lián)的單線(xiàn)程序列,環(huán)境的切換需要巨大的成本,因此我盡量將時(shí)間片的跨度維持在一周。雖然我有許多項(xiàng)目需要同時(shí)進(jìn)行,并且通常它們彼此之間都存在某種方式的聯(lián)系,但我堅(jiān)持同一時(shí)間只關(guān)注一個(gè)項(xiàng)目。
我完全不能主動(dòng)地進(jìn)行多任務(wù),但是我認(rèn)為我大腦的工作原理有點(diǎn)像 libdispatch。潛意識(shí)可以并行地偷偷執(zhí)行許多東西。所以當(dāng)我清醒的思維切換到之前放到一邊的工作時(shí),經(jīng)常會(huì)有好幾個(gè)好主意等著我。
你的出名之處在于能一人完成偉大的應(yīng)用,并且能整合以往需要不同的人才能完成的任務(wù)。同在團(tuán)隊(duì)中工作相比,這種工作方式在哪方面吸引你呢?
我們用學(xué)科之間的界限來(lái)劃分工作領(lǐng)域,而你們用同樣的方式將程序劃分成了不同模塊、不同對(duì)象或者其他。但無(wú)論何時(shí)你將事物分成兩份,碎片之間難免會(huì)出現(xiàn)分歧,而且當(dāng)你想把各個(gè)碎片拼在一起來(lái)建造東西的時(shí)候,一切就會(huì)變得更難。我發(fā)現(xiàn)過(guò)了一段時(shí)間后,實(shí)際上你在“膠水”上所花的時(shí)間要比處理實(shí)際事物本身、處理不協(xié)調(diào)的阻力以及其他事情都多 (無(wú)論是在架構(gòu)、工程還是在人際交往的水平上,都存在這樣的問(wèn)題)。因此我的小計(jì)策是盡量用更全局的方式來(lái)構(gòu)建事物。這實(shí)際上沒(méi)有增加多少工作,因?yàn)槲抑恍枰冉⒋_定的部分,就像你知道的那樣,先做出一些事情,于是就有了粘合在一起所需要的最小組件。
但是很明顯,你一個(gè)人可以做出來(lái)的事情是有限的。有些項(xiàng)目就是需要更多人才能完成...
沒(méi)錯(cuò),不過(guò)我認(rèn)為個(gè)人的上限遠(yuǎn)比人們想象的要高。歷史上一些了不起的東西都是由個(gè)人完成的 -- 關(guān)鍵是要站在正確的肩膀上。可以肯定的是,我一個(gè)人所能探索的創(chuàng)意空間肯定比我在大規(guī)模團(tuán)隊(duì)工作時(shí)要小,雖然前者永遠(yuǎn)都小于后者,但是它們其實(shí)都是無(wú)限大的。對(duì)我個(gè)人而言,這個(gè)權(quán)衡是值得的。
你認(rèn)為通過(guò)良好的管理,團(tuán)隊(duì)能最小化你所說(shuō)的阻力嗎?
我不確定。我知道組織中壞的代碼架構(gòu)和個(gè)人水平之間沒(méi)有關(guān)系,就像工程師可以以整體的方式建立項(xiàng)目一樣,一個(gè)好的項(xiàng)目經(jīng)理只要了解每個(gè)人并且知道他們將要面對(duì)的問(wèn)題,也可以以整體的方式組織一個(gè)團(tuán)隊(duì)。我沒(méi)有這樣的能力,不過(guò)我并不認(rèn)為這影響某些神奇的例子的存在。如果過(guò)去幾年我真的收獲到了什么智慧,那就是我努力試圖了解 -- 那種真正的了解 -- 了自己在做什么。這很困難,但是長(zhǎng)遠(yuǎn)來(lái)看這會(huì)簡(jiǎn)單一些。
那么當(dāng)你以整體的方式來(lái)進(jìn)行一個(gè)項(xiàng)目時(shí),在制作原型和開(kāi)發(fā)實(shí)際產(chǎn)品之間還會(huì)有明顯的界限嗎?還是說(shuō)你已經(jīng)將兩件事合在一起做了?
它們被完全融合了,這意味著我通常都在代碼中完成我的原型,而不是使用其他原型工具,例如 Quartz Composer 或者 Form。很顯然,這些工具的下一個(gè)發(fā)展階段就是要拋掉原型工具的帽子,直接創(chuàng)造出最終產(chǎn)品。
原型階段與在最終產(chǎn)品的實(shí)現(xiàn)這兩者,時(shí)間上是怎樣分配的呢?
在我找到想要的東西 (或者時(shí)間耗盡) 之前,無(wú)論已經(jīng)完成了多少工作,我認(rèn)為我的產(chǎn)品 100% 是原型,然而在那之后,我就可以叫它最終產(chǎn)品了。雖然我還有退回去處理失敗方案的殘骸,整理一下工程,不過(guò)這也不會(huì)花太多時(shí)間。
我猜你的界面設(shè)計(jì)和開(kāi)發(fā)過(guò)程之間也有非常多的交錯(cuò)?
完全正確,既然界面設(shè)計(jì)和原型是一回事兒,那在開(kāi)發(fā)最終產(chǎn)品時(shí)就已經(jīng)完成了。再一次愉快地說(shuō),我完成了。
在這個(gè)過(guò)程中,你是腦海中現(xiàn)有確定的想法再開(kāi)發(fā)呢,還是跟著開(kāi)發(fā)時(shí)所產(chǎn)生靈感流來(lái)做產(chǎn)品?
最近產(chǎn)生了一個(gè)奇怪的組合。我已經(jīng)在腦海里確定了產(chǎn)品的目標(biāo) (否則這個(gè)項(xiàng)目將以長(zhǎng)草結(jié)束),但是那些已經(jīng)確定的東西在我編碼的過(guò)程中又會(huì)變得抽象起來(lái)。而我所做的越多,我就越能發(fā)現(xiàn)我所做的產(chǎn)品并沒(méi)有不同 -- 或者至少不應(yīng)該 -- 是不同的產(chǎn)品。這就像是把一個(gè)巨大構(gòu)想的每一個(gè)塊拆解下來(lái)推入一個(gè)垂直發(fā)射井。我思考的越多,就越覺(jué)得“應(yīng)用程序”是一種很糟糕的組織軟件的方式。
你在應(yīng)用開(kāi)發(fā)行業(yè)已經(jīng)很長(zhǎng)時(shí)間,并且取得了巨大的成就。那么這些年你是怎么堅(jiān)持學(xué)習(xí)的呢?
要記住,基本上沒(méi)有人能無(wú)所不知。因此在極度的混亂和可怕的敬畏之間,我的大腦處在一種很好的模糊狀態(tài),這使得它能很好的接受和吸收事物。我學(xué)習(xí)主要是通過(guò)紙質(zhì)書(shū)籍。
在你說(shuō)的紙質(zhì)書(shū)里,你最喜歡的是哪些?
有些就在我旁邊的架子上:《C 程序設(shè)計(jì)語(yǔ)言》(The C Programming Language),《Mindstorms》,《Turtle Geometry》,《安德的游戲》(Ender’s Game),《Schild’s Ladder》,《Advanced Global Illumination》,《The Theoretical Minimum》,《Collective Electrodynamics》,《New Kind of Science》。
你有什么建議要對(duì)軟件行業(yè)的新人說(shuō)嗎?
請(qǐng)記住,魔法并不存在。盡管看上去你的工作基于一堆無(wú)法理解的抽象事物,但它們終究還是由人制作的 (他們也許又倉(cāng)促還喝醉了呢)。掌握它們的工作原理,然后再找到如何才能最大限度地減少對(duì)它們的依賴(lài)。
回顧你所創(chuàng)建的所有東西,有那件是你特別自豪的?
沒(méi)有?,F(xiàn)在回想起來(lái),我覺(jué)得我做的一切都糟透了。
好吧,讓我們以一個(gè)更積極的話(huà)題來(lái)結(jié)尾吧:當(dāng)你想把工作從腦子里趕走時(shí)會(huì)怎么做?
陪我兒子玩耍。這是最好的方法。