1968年秋季,當蓋茨即將升入八年級時,他和艾倫組建了湖濱編程集團。這個組織從某種程度上來說是一個由極客組成的黑幫。艾倫說:「說到底,湖濱編程集團是一個男生俱樂部,空氣裡充滿爭強好勝和睪丸素的味道。」但它很快就變身為一項賺錢的生意,而且具有很強的競爭力。蓋茨宣稱:「我是其中的推動者,我是那個說『讓我們走進現實世界,想辦法賣點東西給他們』的人。」17 艾倫後來有點嫉妒地說:「雖然我們都在努力表現出自己的才華,但動力最強、最有競爭力的那個人是比爾,而且他做得毫不費力。」18
湖濱編程集團還有兩個學校計算機房的常客。一個是艾倫十年級的同班同學裡克·韋蘭(Ric Weiland),他是當地一家路德會教堂的輔祭,父親在波音公司當工程師。兩年前他曾在自家地下室裡組裝了他的第一台電腦。韋蘭看上去和躲在計算機房裡的其他宅男有很大區別,他帥氣逼人,臉型稜角分明,身材高大、肌肉發達,日後他將艱難面對自己的同性戀身份。在20世紀60年代的高中,同性戀還是一個難以啟齒的話題。
另一名夥伴是蓋茨八年級的同班同學肯特·埃文斯(Kent Evans)。埃文斯出生在一個牧師家庭,他外向而友善,笑容燦爛,只是笑起來嘴有些歪斜,因為他出生時有唇顎裂,後來做了手術矯正。他無所畏懼、勇往直前,不論是面對冷不丁打來電話的成年高管還是攀登峭石嶙峋的懸崖。「湖濱編程集團」這個名字就是他取的,目的是從在電子雜誌上做廣告的公司那裡索要免費材料。埃文斯也對商業很感興趣,他會和蓋茨一起閱讀每一期的《財富》雜誌。他成了蓋茨最好的朋友。蓋茨說:「我們準備一起征服世界。我們曾在電話裡聊個沒完,我至今還記得他的電話號碼。」19
湖濱編程集團在1968年秋季接到了第一份工作。當時華盛頓大學的一些工程師在一家廢棄的別克車行裡成立了一家從事分時業務的小公司,名叫「計算機中心公司」(Computer Center Corporation),暱稱C-Cubed。他們向DEC公司購買了一台PDP–10型計算機(這是一台多功能大型計算機,注定要為蓬勃發展的分時行業立下汗馬功勞,同時也將成為蓋茨最喜歡的計算機),計劃向波音公司等客戶出售分時服務,客戶可以通過電傳打字機和電話線來連接主機。C-Cubed有一名合夥人的孩子在湖濱中學上學,她交給蓋茨這幫人一項工作,這項工作有點像找一群三年級學生在巧克力工廠試吃。他們的任務是:晚間和週末在這台新的PDP–10上開足馬力編程和玩遊戲,想用多久就用多久,以發現哪些操作會讓這台計算機崩潰。根據C-Cubed與DEC公司的協議,在這台計算機的漏洞全部清除並能穩定運行之前無須支付租金。不過,DEC公司並沒有想到做測試的是湖濱編程集團這幫魯莽的毛頭小伙。
他們要遵守兩條規則:在計算機崩潰時要描述他們進行了什麼操作,而且不能再進行同樣的操作,除非公司讓他們這樣做。蓋茨回憶說:「他們把我們當成找漏洞的猴子。於是我們就用凶暴的方式把計算機用到極致。」PDP–10有三卷磁帶,為了讓系統崩潰,這些湖濱男孩會讓這三卷磁帶同時轉動,然後讓計算機運行十幾個程序,盡量佔據其內存。蓋茨說:「這是很可笑的事情。」20 作為這項測試工作的回報,他們可以隨心所欲地編寫自己的程序。他們製作了一個帶有可擲骰子的隨機數生成器的大富翁遊戲,癡迷拿破侖(拿破侖也擅長數學)的蓋茨則製作了一個複雜的戰爭遊戲。艾倫解釋說:「你手下有軍隊,可以用他們來打仗。這個程序越寫越大,最後全部展開的時候,電傳打字機紙帶足有50英尺長。」21
這些男孩會乘坐公共汽車去C-Cubed,晚上和週末都待在終端室裡。蓋茨自豪地說:「我成了中堅分子,沒日沒夜地在那裡工作。」他們會編程編到肚子咕咕叫,然後到馬路對面一家名叫「黎明之城比薩店」的嬉皮風格餐館吃飯。蓋茨深深沉迷在編程中。他的臥室裡,衣服和電傳打字機紙帶扔得到處都是。他父母曾試圖規定他的作息時間,但沒有任何效果。他父親回憶說:「特雷太投入了,他會在我們上床睡覺之後偷偷從地下室裡溜出去,幾乎一整夜都泡在那兒。」22
擔任他們的指導的C-Cubed主管不是別人,正是在麻省理工學院唸書時發明《太空大戰》的「鼻涕蟲」史蒂夫·拉塞爾,他是一位富有創造力又愛挖苦人的程序員。這時,創新的火炬正在傳遞給新一代黑客。拉塞爾說:「比爾和保羅覺得讓計算機崩潰太有意思了,我不得不一再提醒他們不可以再進行同樣的操作,除非我們讓他們這樣做。」23 他說:「我去看他們在搞些什麼的時候,他們會問我問題,少則一個,多則五個,而我習慣於給出很長的回答。」24 最讓拉塞爾驚訝的是,蓋茨能把不同類型的錯誤和DEC總部特定的程序員掛上鉤。蓋茨典型的漏洞報告是這樣的:「瞧,法博裡的這行代碼,他又犯了同樣的錯誤,他改變狀態的時候沒有檢查信號量(semaphore)。我們只要在這兒插入這行代碼就能解決問題。」25
蓋茨和艾倫開始認識到計算機操作系統(就像計算機的神經系統一樣)的重要性。艾倫解釋說:「操作系統做的是讓中央處理單元進行運算的「後勤」工作:在程序之間進行切換;把存儲空間分配給各個文件;讓調製解調器、磁盤驅動器和打印機輸入和輸出數據。」PDP–10的操作系統軟件名為TOPS–10,拉塞爾准許蓋茨和艾倫閱讀說明書,但不允許他們把說明書帶回家。於是兩人有時候會在公司研讀說明書,一直到破曉時分。
蓋茨意識到,要想吃透操作系統,就必須獲得源代碼(程序員會在源代碼中詳細說明須執行的每一步操作)。但源代碼就像聖盃一樣牢牢掌握在公司高級工程師手中,這些湖濱中學的男孩根本拿不到。有個週末,他們發現這些程序員打印出來的紙張被扔在辦公樓後面一個很大的垃圾桶裡。於是艾倫握緊雙手撐了蓋茨一把——艾倫說:「他體重不會超過110磅。」——讓蓋茨跳進垃圾桶,在咖啡渣和垃圾裡翻找一沓沓污跡斑斑、皺巴巴的連續打印紙。艾倫說:「我們把這堆珍貴的紙張拿回終端室,鑽研了好幾個小時。那時候可沒有什麼羅塞塔石碑(Rosetta Stone,美國多媒體語言數學軟件)來幫助我,10行代碼我可能只認識一兩行,但我已經被源代碼的嚴密和優雅折服了。」
於是,蓋茨和艾倫想再深挖一步。要想把握操作系統的架構,他們就必須掌握彙編碼,也就是直接與計算機硬件對話的深層命令,比如「Load B」(載入B)、「Add C」(添加C)、「Store in A」(存入A)等。艾倫回憶說:「史蒂夫·拉塞爾發現我對這個感興趣之後,把我拉到旁邊,遞給我一本用亮光塑料紙裝訂的彙編程序說明書,然後告訴我:『你得讀讀這個。』」26 他和蓋茨會閱讀這些說明書,但有時候仍然弄不明白。這時,拉塞爾便會遞給他們另一本說明書,告訴他們:「現在該讀這個了。」過了一段時間,兩人便掌握了集複雜性和簡潔性於一體,讓操作系統變得強大且優雅的彙編語言。
當DEC公司的軟件調試完成後,這兩個湖濱中學的男孩就不能再免費使用PDP–10了。蓋茨表示:「他們大致就是說:『好了,你們這些猴子回家吧。』」27 這時,湖濱中學母親俱樂部出手相助了,她們至少是幫了一部分忙。該俱樂部出錢為這些男孩建了個人賬戶,但有時間和錢數限制。不甘忍受限制的蓋茨和艾倫想設法突破這個系統,於是他們弄到一個管理員密碼,侵入了內部會計系統文件,並破解了密鑰。這樣他們就能使用免費賬戶了。但還沒等他們捅出大簍子,兩人就被抓住了:他們的數學老師發現他們有一卷電傳打字機紙,上面寫著所有賬戶名和密碼。這件事一直傳到C-Cubed和DEC頂層高管那裡,他們派了一個十分嚴肅的代表團到學校,在校長辦公室裡開會討論這件事。蓋茨和艾倫垂頭做了深刻檢討,但無濟於事。他們被禁止在這個學期剩餘的時間和整個暑期使用該系統。
蓋茨說:「我發誓在一段時間內不碰計算機了,我努力讓自己保持正常。我決定證明自己即使不帶一本教科書回家也能門門得A。在這期間,我讀了拿破侖的傳記和《麥田里的守望者》等小說。」28
湖濱編程集團的活動中斷了近一年。到了1970年秋季,湖濱中學開始向俄勒岡州波特蘭的信息科學公司購買PDP–10計算機分時服務。這項服務價格不菲,一小時高達15美元。蓋茨和他的朋友們很快就掌握了侵入系統並免費使用的方法,但這次他們又被抓住了。於是他們改變了策略:他們給信息科學公司寫了封信,表示願意提供服務,以換取免費的使用時間。
信息科學公司的高管不太相信他們,於是這四個男孩便帶著打印件和程序代碼來到波特蘭,以證明他們有多麼出色。艾倫回憶說:「我們簡述了我們的經驗,並提交了簡歷。」當時剛滿16歲的蓋茨用鉛筆把簡歷寫在一張從筆記本上撕下的橫格紙上。最後他們接到了一項編寫工資程序的任務,該程序要能生成帶有正確扣除額和稅額的工資表。29
這時,蓋茨和艾倫之間的友誼第一次出現了裂痕。該程序不能用BASIC(蓋茨最喜歡的語言),而要用比較複雜的COBOL編寫。COBOL由格雷斯·霍珀等人開發,是一種標準化商用計算機語言。裡克·韋蘭懂COBOL,他為信息科學公司的系統寫了一個程序編輯器,艾倫很快就掌握了。這時候,兩個年紀較大的男孩認為他們不需要蓋茨和肯特·埃文斯了。蓋茨回憶道:「保羅和裡克認為沒那麼多工作可做,於是他們說,我們不需要你倆。他們認為工作可以由他倆來做,然後計算機時長就全歸他們了。」30
蓋茨坐了六個星期的冷板凳,在這期間,他讀了些代數書,並且避免跟艾倫和韋蘭打照面。蓋茨說:「後來保羅和裡克發現,哦該死,這是個頭疼的問題。」因為該程序不僅要求開發人員有編寫代碼的能力,還要有人能搞清楚社保扣除、聯邦稅和州失業保險等問題。「於是他們對我說:『嘿,我們遇到麻煩了,你能不能回來幫幫我們?』」這時候,蓋茨便利用自己的優勢要挾了一把。蓋茨是這樣描述當時情況的:「當時我說:『好,但你們都得聽我的。而且我會逐漸適應這個角色,除非讓我掌權,否則從現在開始你們都別想跟我打交道。如果你們讓我負責,那麼這件事還有我們做的任何事情都要由我說了算。』」31 後來他與艾倫的關係也一直都保持著這種模式。
於是從那時開始,蓋茨便成了老大。蓋茨回歸隊伍之後便堅持把湖濱編程集團改造成一個合夥制組織,他在父親的幫助下起草了一份協議。當時還只有16歲的蓋茨開始自稱總裁,儘管一般合夥制企業並沒有總裁。隨後,蓋茨對他們即將賺得的價值18 000美元的計算機時長進行了分割,給艾倫的份額最少。蓋茨回憶說:「我把4/11分給自己,4/11分給肯特,2/11分給裡克,1/11給了保羅。他們覺得我用11做分母很好玩。保羅太懶了,從來不做任何事情,所以我是這樣決定的:裡克的貢獻是保羅的兩倍,而肯特和我的貢獻是裡克的兩倍以上。」32
蓋茨一開始也想讓自己的份額比埃文斯略多一些。但他說:「肯特根本不會讓我得逞。」埃文斯和蓋茨一樣有生意頭腦。他們完成工資程序後,埃文斯在自己那本有詳細記錄的日記上寫下一段話:「週二我們要到波特蘭交付程序,另外,用他們的話說,還要『為今後的工作制定一項協議』。到目前為止,我們做的每件事都是為了學習和獲得大量昂貴的時長。從現在開始,我們也想獲得一些金錢上的利益。」33 雙方進行了緊張的談判,由於程序缺少文檔,信息科學公司一度想收回一些原定支付給他們的計算機時長。但蓋茨的父親寫了封信給該公司,幫助他們解決了爭議並商定了新的協議。
1971年秋季,在蓋茨剛剛升入十一年級的時候,湖濱中學與一所女子學校合併了。兩校的合併導致班級排課變得非常麻煩,於是校方讓蓋茨和埃文斯寫一個程序來解決這個問題。蓋茨知道,學校的課程安排包含幾十個變量(必修課、教師課表、教室大小、快班課程、選修課、錯時安排、雙課時實驗課等),操作起來極其困難,於是他拒絕了。一位老師接受了這個挑戰,而蓋茨和埃文斯負責代他教計算機課。但次年1月,這位老師還沒寫出可用的程序,就在乘坐一架小飛機時因空難喪生了。蓋茨和埃文斯同意接手這項任務。為了從頭寫出新的程序,他們會在計算機房泡上很多個小時,還常常睡在那兒過夜。到了5月,他們還在掙扎著編寫程序,想盡量趕在下一學年開始前完成。
這時候,埃文斯雖然已經筋疲力盡,但還是決定參加他已經報名的登山訓練,而他其實並不太擅長運動。蓋茨回憶說:「他報名參加這個登山訓練真的很意外。我認為他是想挑戰自己。」埃文斯的父親知道兒子有多麼疲憊,他懇求埃文斯取消這次活動,他說:「我跟他的最後一次對話是勸他不要去,但他決心要完成這件事。」這個登山訓練班當時在學習如何用繩索攀登一座比較平緩的山峰,其間埃文斯被絆倒了。他想爬起來,但在雪中向下翻滾了逾200碼最後摔在了冰川上,他抱緊雙臂想保護自己,而正確的做法應是張開雙臂。結果他的頭撞上了幾塊岩石,在前來營救的直升機上不幸身亡。
湖濱中學的校長給蓋茨家打了電話,蓋茨被叫到他父母的臥室,從他們那兒得知了這個消息。[1] 悼念儀式由湖濱中學的藝術老師羅伯特·富爾格姆(Robert Fulghum)主持,他和埃文斯的父親一樣,也是一位牧師,後來成為暢銷書作家(《那些人生中最重要的道理我在幼兒園裡都學過了》一書就是他寫的)。蓋茨說:「我從來沒有考慮過死亡問題。我本來是要在悼念儀式上發言的,但我站不起來。連著兩個星期,我都是什麼也做不了。」後來,他花了很多時間陪伴肯特的父母。他說:「肯特是他們的心肝寶貝。」34
蓋茨給剛剛在華盛頓州立大學讀完一年級的保羅·艾倫打了電話,讓他回西雅圖幫忙編寫排課程序。蓋茨對他說:「我本來是要和肯特一起做的,現在我需要你幫忙。」蓋茨當時的狀態很糟。艾倫回憶說:「比爾一連幾周情緒都很低落。」35 在1972年的暑假,他們把折疊床搬到校園裡,和以前一樣在計算機房熬了許多個通宵,用一台PDP–10計算機來編程。面對課程安排中那些魔方般的變量,蓋茨以他縝密的思維把大問題拆解為一系列小問題,然後各個擊破。他成功地為自己安排了一節歷史課,課堂裡有他喜歡的所有女生,而且除他以外只有一個男生,他還設法讓他自己以及所有要好的同班同學週二下午都沒有課。他們自己做了一件T恤衫,胸前印著一隻啤酒桶和「週二俱樂部」的字樣。36
那年夏天,蓋茨和艾倫迷上了英特爾的新款8008微處理器,與4004型「芯片上的計算機」相比,這款微處理器在性能上有了很大提升。當他們在《電子學雜誌》上讀到一篇介紹8008微處理器的文章時激動萬分,以至於蓋茨多年後還記得這篇文章刊登在哪一頁上。艾倫問蓋茨,如果芯片真能像電腦一樣可以編程,為什麼不為它寫一個編程語言呢,比如一種BASIC語言?艾倫認為,如果他們能夠完成這個壯舉,「普通人就可以買計算機放在辦公室裡,甚至放在家中使用了」。但蓋茨不屑地說,8008微處理器還無法勝任這種任務。他回答說:「它會慢得跟蝸牛一樣,會很悲劇的。BASIC本身就要佔據幾乎所有內存。微處理器的馬力根本不足。」艾倫意識到蓋茨說得有道理,於是他們都決定等等再說,根據摩爾定律,微處理器的性能每一到兩年就會提高一倍。這時,兩人在合作關係中扮演的角色逐漸清晰起來。艾倫解釋說:「我是出主意的人,是憑空瞎想的人。比爾則會聽我說,質問我,然後鎖定我最出色的設想,推動它們成為現實。我們的合作關係有種天然的矛盾,但大多數時候都卓有成效,而且非常順利。」37
蓋茨拿到了一項為一家公司分析交通模式的合同(這家公司會統計有多少輛車駛過橫貫馬路的橡膠管,以分析交通模式)。他和艾倫決定組裝一台能處理原始數據的專用計算機。蓋茨為這個新創業項目取了個沒什麼品位的名稱,叫Traf-O-Data(交通數據公司)。兩人來到附近一家Hamilton Avnet電子用品商店,鼓足勇氣掏出360美元現金,購買了一枚8008芯片。艾倫還能生動地回憶起當時的情景:「店員遞給我們一個小小的硬紙板箱,我們當場把箱子打開來想一睹為快。打開鋁箔包裝紙,有個長約一英吋的長方形薄片卡在一個小小的黑色絕緣橡膠板裡,這就是8008微處理器。對兩個在成長的關鍵期用大型計算機編程的人來說,這簡直是一個見證奇跡的時刻。」蓋茨對店員說:「我們花了這麼多錢就買到這麼小的一個東西。」但他和艾倫都瞭解這枚芯片的價值,他們知道,這枚小小的芯片中包含一整台計算機的大腦。蓋茨回憶說:「這些人覺得,兩個孩子進來買一個8008微處理器簡直是最奇怪的事情。而我們拆開箔紙的時候則是提心吊膽,生怕把這玩意兒給弄壞了。」38
為編寫出能在8008微處理器上運行的程序,艾倫設計了一種在大型計算機上模擬微處理器的方法。他後來解釋說,模擬8008微處理器的做法「反映出技術圈一種人盡皆知的思想,這種思想要追溯到阿蘭·圖靈20世紀30年代的理論,即任何計算機都可以通過編程來隨意模擬其他計算機」。這場煉金壯舉還有一個重要意義,也是蓋茨和艾倫為計算機革命做出的核心貢獻,按照艾倫後來的說法就是:「軟件取代硬件成為王牌。」39
由於蓋茨和艾倫更崇尚軟件而不是硬件,兩人沒能做出可靠的硬件設備也就不足為奇了。他們為這個分析交通狀況的製表機寫出了不錯的程序,但卻根本無法讓硬件正常運行,尤其是讀取交通數據帶的裝置。有一天,他們認為該設備已經可以順利運行了,於是,西雅圖政府工程部門的一位官員應邀來到蓋茨家中觀看銷售演示。他們在客廳裡做演示,可惜演示之神像是要報復他們一樣,讀帶裝置不斷出現故障。於是蓋茨跑去喊他媽媽幫忙。他懇求道:「告訴他,媽媽!告訴他昨天晚上還是好好的!」40
1973年春季,在蓋茨十二年級的最後一學期,他和艾倫被招聘到博納維爾電力管理局(Bonneville Power Administration)工作,當時,該機構正在全國範圍內尋找精通PDP–10的專家來協助其電網管理系統的編程工作。蓋茨和他的父母與湖濱中學校長進行了交談,校長也認為這份工作比最後一學期的課程更有教育價值。而當時在華盛頓州立大學讀書的艾倫也有同感。他說:「我們又有機會在PDP–10上一起工作了,而且有報酬!」於是他們擠進蓋茨的野馬敞篷車,從西雅圖往南開了165英里,來到博納維爾指揮中心。他們不到兩個小時就到了,然後在那裡合租了一間便宜的公寓。
他們的工作地點是哥倫比亞河上的一個地下工事,與波特蘭隔河相望。蓋茨回憶說:「他們有巨大的控制室,比我在電視節目裡看到的任何控制室都要好。」他和艾倫會坐在那裡編寫代碼,一寫就是12個小時甚至更長時間。艾倫回憶說:「當比爾覺得自己沒力氣了,就會抓起一罐果珍,往一隻手裡倒一點果珍粉並把它們舔乾淨,用純糖來提神。那個暑假他的兩隻手掌一直都有股橙子味。」有時候,在瘋狂工作兩天之後,他們會睡上18個小時甚至更長時間,用蓋茨的話說就是「大睡一場」。蓋茨說:「我們兩個會比賽,看誰能在辦公樓裡連續待三天甚至四天。有些大驚小怪的人會說『回家去洗個澡吧』,但我們還是堅守在那裡寫代碼。」41
蓋茨有時候會放鬆一下,去玩極限滑水(包括從跳台上進行干船塢起跳),然後再回到地下工事裡繼續寫代碼。他和艾倫相處得很好,不過,當棋風有條不紊的艾倫戰勝輕率魯莽的蓋茨時,蓋茨會非常惱火。艾倫說:「有一天我把他打敗了,結果他火了,把棋都摔到了地上。這種事發生了幾次之後,我們就不在一起下棋了。」42
蓋茨十二年級時只申請了三所大學(哈佛、耶魯和普林斯頓),每所大學他都採取了不同的申請策略。蓋茨對自己駕馭精英選拔的能力信心十足,他吹噓說:「我就是為申請大學而生的。」申請耶魯時,他把自己包裝成一個胸懷遠大抱負的政治人才,強調他在國會進行的為期一個月的暑期實習。申請普林斯頓時,他只強調自己想做計算機工程師。而在申請哈佛時,他則說他對數學有濃厚興趣。他還考慮過麻省理工,但在最後時刻放棄面試去玩彈球遊戲了。這三所大學都錄取了他,最後他選擇了哈佛。43
艾倫警告他:「你知道嗎,比爾,你到哈佛以後會發現有人數學比你強得多。」
蓋茨回答:「不可能,這不可能!」
艾倫說:「等著瞧吧。」44