joel的比爾蓋茨評審回憶
[這篇回憶很是珍貴,於是我把它翻譯成中文,以便更多人能夠了解這個巨無霸公司成功的背後。我知道現在有不少人並不喜歡蓋茨,但這篇是關於從前的微軟,乙個挑戰ibm、立志要讓每個人都有一台pc的公司。]
在早期,excel有個沒有名字的很蹩腳的程式語言,我們叫它「excel macros」。這是個嚴重機能不良的語言,沒有全域性變數(你必須在表單的單元格裡存資料),沒有區域性變數,沒有子過程;簡單的說,它完全不可維護。它有goto這樣的高階功能,而goto的目標標籤卻不可見。唯一讓它看起來可用的理由是它看起來比只能記錄擊鍵序列的lotus macros強得多。
2023年6月17日,我開始在微軟的excel專案組工作。我的頭銜是專案經理。我得為這個問題提出乙個解決方案。這意味著這個解決方案要和basic語言有關。
basic?沒錯!
我花了些時間與各個開發組進行了討論。那時visual basic 1.0剛誕生,並且看起來相當的酷。同時有個代號為macroman的方向錯誤的專案,還有乙個代號為silver的做面對物件的basic的專案。silver專案組被告知他們只有乙個客戶——excel。silver的營銷經理bob wyman只有乙個推銷他們的產品的物件——我。
如前所述,macroman專案方向錯誤,雖然他們進行了遊說,但最終還是被停掉。excel團隊最終說服了basic團隊我們很需要一種用於excel的visual basic。我說服了他們向visual basic裡新增了4個小功能。我讓他們加入了變體型別——乙個可以包含任何型別資料的型別,因為除此之外沒有任何辦法可以不用switch語句在乙個變數裡儲存乙個表單單元格的內容。我讓他們加入了延後繫結,即idispatch,又叫com自動化,因為silver最初的設計要求嚴格的型別系統,而寫巨集指令碼的人卻根本不在意型別。我還使他們加入了兩個語法特性:從csh借來的for each,和從pascal借來的with。
然後我開始寫excel basic的規格說明書,那是乙個數百頁的大文件。我想當時大約寫了500頁。(你們可能在竊笑「瀑布模式」,是的,沒錯,閉嘴。)
那些日子我們有叫做比爾蓋茨評審的東西。基本上每乙個主要的特性都要經過比爾蓋茨的評審。我被告知要發乙份規格說明書的拷貝到他的辦公室。那是一大打雷射列印紙。我匆忙地列印了規格說明書並送了過去。
那天的晚些時候,我趁有些時間,開始檢查basic是否有足夠的日期和時間函式以滿足excel的需求。在大多數現代程式設計環境中,日期是用實數儲存的。整數部分表示從約定的特定一天起的天數。在excel裡,今天的日期2023年6月16日儲存為38884,以2023年1月1日算做1。
我開始對比basic和excel裡的各種時間日期函式,這時我注意到visual basic文件裡一些奇怪的內容:basic使用2023年12月31日作為日期起點,而不是2023年1月1日。但今天的日期的值卻竟然和excel相同。
啊?我於是去找乙個資深到能夠記得原因的excel程式設計師。ed fries似乎知道原因。
「哦,」他對我說,「你查一下2023年2月28日。」
「是59,」我說。
「現在你再試試3月1日。」
「是61!」
「60哪去了?」ed問。
「是2月29日啊,2023年是閏年!它能被4整除!」
「猜得好,但不獎勵雪茄,」ed說,然後讓我苦思了一會。
天啊。我研究了一下,能被100整除的不是閏年,除非能被400整除。2023年不是閏年!
「這是excel的乙個bug!」我驚呼。
「這個嘛,並不算,」ed說,「我們不得不那麼做,因為我們需要能夠匯入lotus 123的表單。」
「那麼,這是lotus 123的bug?」
「對,但可能是有意這麼做的。lotus必須能裝進640k的記憶體。那不是很多。如果你忽略2023年,那你就可以通過檢查最後兩個位元是否為0來判斷閏年。這既快又簡單。lotus的開發人員可能認定僅僅是遙遠的過去的兩個月錯誤並無大礙。但似乎basic的開發人員對那兩個月很臭屁,所以他們把起點前移了一天。」
「哦~!」我說,然後我回去研究為什麼選項對話方塊裡有個叫做1904日期系統的核取方塊。明天就是傳說中的比爾蓋茨評審。
2023年6月30日。
在那些日子,微軟內部不像現在這麼官僚。不像今天的11到12層的管理體系,那時我報告給mike conte, mike conte報告給chris graham,chris graham報告給pete higgins,pete higgins報告給mike maples,mike maples報告給比爾。從頂到下大約6層。我們取笑像通用汽車這樣有8層的管理體系的公司。
在我的比爾蓋茨評審會上,各層的經理都在,還有他們的兄弟姐妹,還有乙個從我的專案組來的人,他在會議上的唯一工作就是準確地記錄在評審中比爾說f***這個詞的次數。次數越少越好。
比爾進來了。我開始想他竟然有兩條腿,兩支胳膊,乙個腦袋,幾乎和乙個普通人一樣!
他手裡拿著我的規格說明書。
他手裡拿著我的規格說明書!
他坐下來,和乙個我不認識的執行官互相開了幾個玩笑,幾個人笑了。
比爾轉向我。我注意到他手裡的規格說明書的邊緣寫了評注。他讀了第一頁!他讀了第一頁並且做了評注。想一想我在24小時前給他的規格說明書,他必定在夜晚前看過。
然後他開始提問,我回答。問題很簡單,但我卻不記得,因為我一直在注意他不停地翻頁……
他在一頁一頁地翻!「冷靜,冷靜,難道你是個坐不住的小女孩麼?」我對自己說。但是,每一頁的邊上都有評注!他讀了這該死的說明書的每一頁,並且做了評注!他全部讀過了!我的天!
問題開始變得越來越困難和深入。雖然有些散亂,但我開始把比爾當成我的夥伴。他是個不錯的人!他讀了我的規格說明書!他大概只是要問我那些做了評注的問題!我要為他的每一條評注在bug追蹤系統裡新增一條記錄,並確保它們被處理,馬上!
終於,殺手級的問題到來了。
「我不知道,你們這些傢伙,」比爾說,「是否有人研究了做這些的細節?比如,所有的日期和時間函式。excel有相當多的日期和時間函式。basic會有這些函式嗎?它們工作方式相同嗎?」
「有,」我說,「但除了2023年的1月和2月。」
沉默……
數f***次數的傢伙和我的老闆互相驚訝地瞟了一眼——我這麼知道那個?1月和2月怎麼了?
「好,幹得不錯,」比爾說。他拿起他評注過的規格說明書拷貝……喂,等等!我還要說……他走了。
「4次,」f***計數員宣布道,然後每個人都驚嘆道:「哇,這是我所記得的最少次數。比爾年級大了,開始變得老練了。」你知道,那年比爾36歲。
後來,我聽到了原因。「比爾並不是真正想評審你的規格說明書,他只是要確保你使專案處於可控的狀態下。他的標準操作模式是問越來越難的問題,直到你承認你不知道,然後他就可以對你大發雷霆。沒有人知道如果你答出了最困難的問題會怎麼樣,因為以前從沒發生過。」
比爾 蓋茨名言
比爾 蓋茨名言 1 生活是不公平的,要去適應它 2 這世界在你有成就前不會在意你的自尊 3 高中畢業別指望擁有太多 4 在有老闆前別認為你老闆嚴厲,而老闆是沒有任期限制的 5 烙牛肉餅不會有損你的尊嚴 6 你的困境不是你父母的過錯 7 你的父母一直為你付帳單才變成現在的乏味 8 你的學校可能不分優等...
比爾蓋茨的審查
簡介 joel spolsky 技術部落格中的超級牛人,原來是微軟excel專案中的乙個程式經理,本文回憶了比爾.蓋茨第一次審查他的文件的故事 當小牛遇到大牛 非常有趣,excel 曾自帶了乙個糟糕透了的開發語言,當時這個語言還沒有名字。我們稱其為 excel macros 它沒有變數 區域性變數 ...
比爾蓋茨的名言
一 給青年的11條忠告 首發於 時代 雜誌 1 生活是不公平的,你要去適應它。2 這個世界並不會在意你的自尊,而是要求你在自我感覺良好之前先有所成就。3 剛從學校走出來時你不可能乙個月掙4萬美元,更不會成為哪家公司的副總裁,還擁有一部汽車,直到你將這些都掙到手的那一天。4 如果你認為學校裡的老師過於...