比爾蓋茨爆粗越少,review 結果就越好
編譯: 伯樂在線/Lada
如有好文章投稿,請點擊 這裏了解詳情
【導讀】:本文作者是 StackOverflow 聯合創始人、知名博主 Joel Spolsky。本文講述他於 1991 年在微軟做 Excel 的 Program Manager 的時候,與 Bill Gates 一起 review 產品的感受,行文生動有趣。另外,微軟鼎盛時期的 Program Manager ,技術能力很強的。
(伯樂在線補圖:1991 年 Bill Gates 接受今日美國的采訪)
我的第一次 BillG 審查
唯一使它看起來合理的是,它和 Lotus 宏相比看上去太好了。Lotus 宏隻不過是把一係列的鍵盤敲擊作為一個長字符串輸入到一個工作表單元格。
1991 年 6 月 17 日,我開始在微軟 Excel 團隊工作。我的頭銜是“程序經理(Program Manager)”。我應該為 Excel 宏的問題想出一個解決辦法。言外之意就是,解決方案會與 Basic 編程語言有關。
Basic?一點都沒錯!
我花了一些時間,與不同的開發小組磋商。Visual Basic 1.0 那時剛剛發布,酷到不行。有一個在誤導中進行的開發,代號為 MacroMan,以及另一個麵向對象(Object-Oriented)的 Basic 也在開發,代號為“Sliver”。Sliver 團隊得知,他們的產品將會有一個客戶端:Excel。Sliver 的市場經理 Bob Wyman,沒錯,就是那個 Bob Wyman,他隻用把技術售賣給一個人:我。
(2014 年的 Joel Spolsky,伯樂在線補圖 )
正如我所說的,MacroMan 誤入歧途,也采納了一些勸告,但最終它被關閉了。Excel 團隊使 Basic 團隊確信,我們真正需要的是一種針對 Excel 的 Visual Basic。我設法在 Basic 中添加了四個受寵的特性。我讓他們添加了變型(Variants),一個可以存儲任何其他類型的數據類型,否則在沒有 switch 語句的判斷下,你就不能以一個變量存儲電子表格單元格的內容。我還讓他們加上了後期綁定(late binding),也叫做 IDispatch,或是 COM 自動化。因為Silver的原始設計需要對類型係統(type systems)有深入理解,而宏的開發者根本不需要懂這個。然後,我有兩個受寵的語法特性:For Each 結構是從 csh 中借鑒的;With 結構是從Pascal 中借鑒的。
之後,我坐下來編寫 Excel Basic 的規格說明書,一份巨大的文件,長到幾百頁。我想起寫完的時候,它有 500 頁了。(“瀑布式開發”有人在偷笑了,是的沒錯,別笑了。)
那時候,我們通常會有一件事叫做“BillG 審查”。Bill Gates 基本上會審查每個重大的功能。我被通知送一份規格說明書複印件到他的辦公室,為審查做好準備。這基本上用掉了一令打印紙。(伯樂在線注:令,英文紙張計數單位。1 令為 500 張)
我趕去把規格說明書打印出來,送到了他的辦公室。
那天晚一點的時候,我有了一些時間,因此我開始工作於計算 Basic 是否有足夠的日期和時間函數來完成所有在 Excel 裏能做的任務。
在多數現代編程環境中,日期是以實數形式存儲的。這個實數的整數部分,是從以前某個公認的日子至今所經過的天數。這個公認的日子叫做“紀元(epoch)”。在 Excel 中,例如,今天的日期——2006 年 6 月 16 日,以 38884 存儲著;計算日期 1900 年 1 月 1 日的話,就是 1。
我開始徹底地測試 Basic 和 Excel 的各種日期和時間函數,在那之後,我注意到 Visual Basic 的文件裏有異常——Basic 以 1899 年 12 月 31 日為紀元,而不是 1900年 1 月 1 日,但不知何種原因,當天日期的值在 Basic 和 Excel 裏是一樣的。
哈?
我去找到一個資曆老練到記得背後原因的 Excel 開發者。Ed Fries 看起來知道答案。
他告訴我:“檢驗一下 1900 年 2 月 28 日。”
我說:“存儲值是 59。”
“那再試下 3 月 1 日。”
“是 61。”
Ed 問:“60 哪去了?”
“2 月 29 日,1900 年是閏年,它能被 4 整除!”
Ed 說:“猜測的不錯,但還不夠。”接著讓我想了一會兒。
天呐,我又思索了一番,能被 100 整除的年份,除非它還能被 400 整除,否則就不是閏年。
1900 年不是閏年。
我驚唿道,“這是一個 Excel 裏的 bug。”
“不完全是,”Ed 講到,“我們不得不用那種方式,為了能導入 Lotus 123 的工作表。”
“所以這是 Lotus 123 裏的 bug?”(伯樂在線補充:Lotus 123 是一種電子表格軟件,1983 年由蓮花公司推出,後來被 IBM 收購。Lotus 123 就是 Excel 的競品。)
“是的,但很有可能是故意為之。Lotus 內存小於 640 k。那是很小的內存。如果忽視 1900 年,你能隻是看最右兩位是否為零來計算某一年是不是閏年。這樣快速且容易。Lotus 的人可能認為在過去的日子裏隻有這兩個月受到影響並不是什麼重大的錯誤。但看起來,Basic 的人對這兩個月吹毛求疵,所以他們把紀元回退了一天。”
“天啊!”我感歎到。然後繼續研究為什麼在名為「1904 Date System」的選項對話框裏有一個複選項。
第二天就是重要的 BillG 審查。
1992 年 6 月 30 日。
過去,微軟公司是很少官僚的。我向 Mike Conte 匯報,Mike Conte 經過 Chris Graham、Pete Higgins、Mike Maples 的層層匯報,最終 Mike Maples 就能向 Bill 匯報了。不像現在的 11 或是12 層,以前自頂向下隻有 6 個層級左右。我們曾經取笑像通用汽車(General Motors )這樣的公司,因為他們有 8 個管理層或是天知道做什麼的層。
在我 BillG 審查的會議上,以上的匯報層都到場了,他們還帶著一堆我懷疑是表兄表妹姑嬸的人。還有一個我團隊裏的人,他負責準確記錄 Bill 整場爆了幾次粗口。Bill 說 Fxxx 的次數越少,review 結果越好。
(伯樂在線補圖。看到上句標紅的地方,不由自主想到這張漫畫 )
Bill 進來了。
我感覺太奇怪了,他竟然有兩條腿、兩個胳膊和一個腦袋。幾乎和普通人類完全一樣。
在他手上拿著我的規格說明書。
我的規格說明書在他手上!
他坐下,和一個我不認識的高管,戲謔了幾句對我而言沒什麼意義的話。一些人笑了。
Bill 轉向我。
我注意到我的規格說明書邊緣上有一些評論。他已經看過第一頁了!
他已經看過我規格說明書的第一頁了,而且還在邊上寫了幾句筆記!
想到我們剛在 24 小時前把規格說明書送給他,他一定是在昨天晚上閱讀它的。
他問了幾個問題。我回答了。它們非常簡單,但我之後再也記不起都問了什麼,因為我目不轉睛地看著他翻閱著規格說明書……
他在翻閱著規格說明書!(冷靜,你是沒見過世麵的小女孩麼?)
……並且,邊上都寫著筆記。在規格說明書的每一頁都有。天啊,他已經閱讀過了整個文件,並且在所有邊緣寫上了筆記。
他讀了整個文件!(天啊,怎麼可能!)
提問越來越難,越來越細。
問題似乎有點隨機。那時我已經把 Bill 當成自己人了。他是個不錯的家夥!他讀完了我的規格說明書!他可能隻是想問我幾個和寫在邊上的評論相關的問題。我要打開錯誤提交係統,把他的每一條筆記都放進去,並且確保得到重視和解決,要快!
最後是一個很要命的問題。
Bill 說,“我不知道你們有誰真的看過如何去做的所有細節?比如,所有的日期和時間函數。Excel 有大量的日期和時間函數,Basic 是否也有一樣的函數?它們工作的方式一樣嗎?”
“看過,”我回答到,“除了 1900 年的 1 月和 2 月。”
一片寂靜。
粗口記錄員和我上司驚訝地對視了一眼。我是怎麼知道的?1 月 和 2 月怎麼了?
“好。那麼,做的不錯,”Bill 這麼說。他拿起他做了筆記的規格說明書複印件。
……等等!我想要那個!
然後他走了。
“4 次。”粗口記錄員匯報道。所有人都說:“哇。這是我記憶中的最低記錄。Bill 隨著年齡大起來越來越穩重了。” 那年,他 36 歲。
後來,我自己解釋:“Bill 並不是真的要評論規格說明書,隻是想確保你已經完全掌握了它。他的標準做法是不斷提問,越問越難,直到你承認你不懂,接著他就會吼你‘為什麼沒準備好?’沒人真的知道,如果答出來了那個他拋出的最難得問題會怎麼樣,因為之前還沒人答上過。”
“你能想象如果 Jim Manzi 在那個會上嗎?”有人問。“Manzi 會問你‘什麼是日期函數?’”
Jim Manzi 是 MBA 類型的領導,他把 Lotus 帶上了下坡路。(伯樂在線補注:Jim Manzi 1982 年加入 Lotus 公司。1984 年成為 Lotus 總裁。)
這是很重要的一點。Bill Gates 是個驚人的技術人員。他理解可變數據類型、COM 對象、IDispatch 接口,以及 Automation 和虛表有什麼不同,為什麼這樣會導致雙重接口(dual interfaces)。他擔憂日期函數。他不會幹涉軟件,如果他信任為此工作的人。但你一分鍾也不能煳弄他,因為他是一個程序員。一個真真正正的程序員。
看那些不懂編程的人想經營一家軟件公司,就像看不會衝浪的人硬要去衝浪一樣。
“沒關係。我有極好的顧問站在岸邊告訴我如何去做!”他們這樣說,結果他們會一次又一次的從滑板摔落。這是那些 MBA 的標準說辭,他們相信管理是一項通用技能。鮑爾默會成為另一個 John Sculley 嗎? John Sculley 幾乎差點讓蘋果(Apple)破產,就因為那時蘋果的董事會相信一個整天想著賣百事可樂的人能準備好經營一家計算機公司。MBA 的崇拜者樂於相信人可以經營一家公司,而根本不懂公司業務。
幾年過去,微軟逐漸變得龐大。Bill 精力分散,一些道德上名聲不好的決策,使得公司管理需要在很多方向上與美國政府抗爭。鮑爾默接手微軟 CEO 的角色,在理論上能夠讓 Bill 把更多時間放在他的長處上,去經營軟件開發組織,但這似乎並沒有解決由於一些特殊原因造成的問題。像是11 層的管理結構、無盡的開會文化、一種將所有可能產品都製造出來的固執,無論那是什麼。(微軟流失了不可計數的美元,在研發、法律費用和名譽損失上,隻因為他們決定不僅必須要做一個瀏覽器,而且還必須要免費發布。)以及幾十年以來匆忙、草率的招聘使微軟中層的水平下降。(Douglas Coupland 在 Microserfs 中說:他們在 1992 年雇傭了 3100 人,其中並不都是人才。)
好了。聚會已經搬到了其他地方。Excel Basic 成為了 Microsoft Visual Basic 應用程序微軟 Excel 版,有太多注冊商標(TM)和(R)以至於我不知道該把它們放哪。我在 1994 年離開了微軟公司,以為 Bill 已經完全忘記了我,知道我發現《華爾街日報》上一篇 Bill Gates 的小專訪。裏麵他講到招聘是多麼難的事時,幾乎隻是順便一提地說了,就像一個優秀的 Excel 程序經理,他們不是簡單地長在樹上,諸如此類的話。
他會不會是在說我?不會吧,那可能是別的什麼人。
一切都定格在過去了。
看完本文有收獲?請分享給更多人
關注「伯樂在線」,看更多精選 IT 職場文章
最後更新:2017-10-08 16:56:40
上一篇:
薛之謙:說出口即是釋懷,唱出來不過緬懷
下一篇:
謝霆鋒前妻張柏芝的生活近照,張柏芝這麼開心完全不受鋒菲戀影響
汪涵介紹潘粵明,卻遭沈夢辰搶話宣傳新電影,汪涵直接懟她毫不留情
韓雪怒噴攜程,沒想到恰到好處,親子園事件再次發酵!
周星馳成為票房冠軍喜劇之王的秘訣隻有兩個字,卻被諷刺人品差貪財
馬雲一出手網宿科技遭遇5年來大潰敗 高管掀起減持比賽
馬雲越南煲雞湯;搜狗昨晚紐交所上市;攜程給家長兩周帶薪假
謝娜張傑深夜與友人聚會,娜姐孕期未改愛玩天性,準媽媽過渡期太過煎熬
與金馬獎影後搭戲 吳昕評價他“有一顆老人的心” 如今終於火了
除了高曉鬆這些明星也曬早餐,吳昕爺們陳赫接地氣最後一位才叫奢侈
謝娜懷孕3個月出門逛街,網友:和賈玲有的一拚!
就在剛才,馬雲哽咽了,今年這個雙十一,估計他的夢想要破滅了,但葉縣人民沸騰了