1998年春,我在Marquette 大學拿到數學/統計/計算機碩士學位後,做過兩個很短暫的工作。到了八月,終於在芝加哥的一家叫Interaccess的公司找到了一個Oracle DBA的工作。這事還在中國學生朋友中造成了一點震動。因為Oracle DBA需要有經驗的人,對於我這個不是正規計算機專業,又沒有任何計算機工作經驗的菜鳥,能得到這樣的位置確實非常意外。
Interaccess 是一家一個叫Tom的年輕人,靠借老爸的六萬美元四五年前成立的,員工一百人左右,主要是提供小公司的上網服務 - Internet service provider. 當時不像現在一個地方隻有兩三家大公司提供上網服務,當年上網還是新鮮事,很多小公司做上網服務,芝加哥大概有十幾家這樣的小公司。Interaccess 當時大概有兩萬客戶,算是中偏上等的公司。
競爭厲害,各公司就隻好靠壓價來吸引客戶。幾十個人的公司的上網服務也不過幾百美元一個月,所以賺錢不易。公司隻好到處省錢,其中一方麵就是壓低工資。
公司是通過兼並其他更小的公司來壯大的。我進公司時,正值公司準備把初期不統一的淩亂的處理係統轉到People’s soft上,而People Soft需要在Oracle上運轉。於是公司買了Oracle,請了Consulting group來完成體係轉換。完成任務以後,谘詢人員就會離開後,公司需要運轉和維護Oracle數據庫,所以需要招一個Oracle DBA。
當時有幾年經驗的Oracle DBA, 起薪至少十幾萬,即使一年經驗,沒有七八萬不會有人來。加上這樣的小公司,DBA天天24小時on call, 沒有人願意來。公司想省錢,又要招有技術的人,結果招了幾個月也招不到人。
公司最後轉換思路,就是降低來經驗的要求。公司考慮的是,從八月到十二月Oracle 係統上線還有4個月,他們指望新DBA可以在四個月的時間迅速掌握所需要的技能。在這樣的思想指導下,他們把我招進來了,年薪四萬,同意給我辦H1和綠卡。這很重要,大部分公司聽說沒有身份連麵試都沒有了。
後來我問麵試我的谘詢師Ari為什麽要我這個一點經驗都沒有的人?他說:“我感覺你是那種可以迅速學東西的人,所以就要了你”。
不知道他怎麽看出我是可以迅速學東西的人來的?不過這個Ari還真厲害,猶太人,不到三十,但已經是資深谘詢員了,同時在幾家公司做谘詢。
Interaccess 因為做上網服務,所以數據庫需要運轉24/7/365,就是沒有下線的時候。出了事必須迅速解決,DBA是一個壓力很大的工作。我當年如果能有別的選擇,一定不會接受這個工作。況且我家當時還住在九十英裏以外的Milwaukee, 每天需要花四小時在路上,很辛苦。
公司華人員工極少,就兩個人。一個做PC維護的年輕人,30歲左右,住在唐人街。雖然是ABC,但思想非常老舊,找了一個也是唐人街的女孩結婚。那婚禮是最老式的中式婚禮,花轎接送,彩車幾十輛,拜堂,紅包,鬧新房等等一樣不少。還拿照片給同事們看,美國同事看得暈頭:“結婚要這麽複雜嗎?”, 他答:“必須的,不然別人看不起你”。
他是公司成立時進來的,算是元老級的人。在公司裏不太理人,當然也不怎麽理我。沒有事絕對不會與我聊天,有事也就是就事論事,完事走人。
另一個叫李培忠,做IT support, 進公司一年左右。他是江蘇人,比我稍小幾歲,也是留學出來的。我們背景相似,所以很談得來。當時是好朋友,一直到現在仍然保持聯係。
第三個是台灣來的H,二十七八歲,白白淨淨的。他是計算機專業畢業,做過幾年係統管理員(Unix administrator), 在我之前三個月公司以十幾萬年薪招他進來,算是公司裏最高工資之一,足見他的位置重要,和公司對他的重視。
小夥子有點靦腆,但很禮貌,也很謙和。大家都忙,沒有什麽時間聊天。但聊過幾次,感覺不錯。因為工資高,又是單身漢,他在公司附近租了單間公寓房,聽說要一千五六一個月,當時把我嚇了一跳。因為我全家租一個兩室一廳的房,才五百多美元一個月。
H業務強,很有進取心,想給公司做點事。Interaccess是一家靠收購更小的公司成長起來的,當年很多小公司都是倉促上馬,係統都很簡陋,也很不統一,每一次收購就得整合一次係統。越來越多的小公司加入以後,公司的係統就變成了大雜燴,運轉常常出問題。
要將整個係統重新整理,需要下線(off line) 很長時間。對於一家必須24小時都提供服務的公司是不可能的。所以,就隻好帶病運轉。出了問題修修補補搞一下,能運轉就行。
H是公司唯一的係統管理員,他很想把係統的問題給解決了,這也是公司招他進來的原因。
他一直琢磨怎麽解決係統複雜錯亂的問題,後來大概有了頭緒。但公司係統除了周末可以偶然下線維護以外,平常是不能下線的。他便利用了一個周末來試著按照自己的計劃改造係統。
那是一個周六,他一早就來到了公司。按照他的想法做,但係統並沒有變好,反而變得更糟了。更為糟糕的是,係統回不去了。他周六沒有把係統搞好,周日又忙了一天,仍然沒有好。到了星期一,整個係統還是死的。他急得像熱鍋上的螞蟻,到了中午仍然沒有好。這時客服的電話被打爆了,也驚動了總裁Tom。
公司緊急請了consultants 來幫助,但好像問題不小。到了下午,係統仍然沒有恢複。
盛怒之下,Tom一下炒了H的魷魚,還喊了警察來押送他離開。可伶的他連與同事打招呼的機會都沒有就被趕走了,從此我便再也沒有見過H。
那時我剛到公司兩個月,對我震動極大。
我下鄉當過知青,來美之前在國內工作過近十年,有足夠的社會閱曆。我進公司後,也擔心過DBA的工作責任重大,一有閃失,全公司停擺。
發生在H身上的事,讓我更加害怕。因為我如果有閃失,那麽H的今天就是我的明天。
我進公司後,主要是學習,猛看Oracle方麵的書,希望迅速掌握所需的技術。其中一本書的作者是一位做了十幾年的資深DBA,他在書裏說:Oracle的問題有三分之二是由於Oracle DBA不當操作引起的。所以作者建議:盡量少動數據庫。有問題需要調試數據庫時,需要達到一個什麽結果自己要有一個清醒的認識,因為理想的狀況是不可能的。達到和接近自己要的狀況就應該停止,不要追求理想的結果。不然按下葫蘆浮起瓢,可能引起其他問題,甚至是更大的問題。
作者說了一句令我難忘的話:“Do nothing is better than do wrong thing” (什麽不做也比做錯好),因為與美國人最喜歡說的“Do something is always better than do nothing”完全相反。
而H好心惹大禍一事,正好驗證了這位作者的的話。H雖然出發點不錯,但大意了。他要動係統,一定要請示,如果沒有得到同意,千萬不要動。另外隻能小改,不能大動。如果當時他不動係統,維持運轉就行,即使總有些問題,但公司也很難說什麽。如果要大動,讓公司請專業的谘詢師團隊來做,因為自己負不了這個責任。
H出事以後,我認識的DBA的主要責任就是維持數據庫運轉,而不是讓數據庫運轉得最理想。任何威脅到數據庫穩定運轉的事情都盡量不要做。數據庫是很複雜的,牽一發動全身。就像人一樣,很多人有很多毛病,但仍然可以工作生活。不理想或有問題的係統如果仍然可以工作就不要亂動,少動是最佳選擇。
這樣的審時度勢的判斷,學校老師是不會教給你的,可能連他們也不知道。但在職業生涯裏非常重要。
於是後來我做DBA的時候,基本上采取這樣的辦法,但也出現過一次失誤。當時因為要解決一個問題,根據書上的建議,改動一個參數,又做了一些其他的小調整。當時挺好,沒有問題。但過了三小時數據庫出現了異常,仍然還可以運轉,但有些功能不行樂。打電話給Oracle Support, 幾個小時,換了幾個人都不能找出問題的結症。管IT的vice president 不停地過來,問怎麽樣了?還長時間站在我後麵看著我打電話,讓我倍感壓力。
那天的情況還沒有引起客戶的服務中斷,不然結果不堪想象。
下班時,Vice President 告訴我解決問題之前不能回家。我呆在空無一人的公司,連飯也沒有吃,窮盡了所有的辦法都沒有解決問題。到九點鍾多,我突然想起上午改動了的那個參數,是不是它造成的?其實沒有什麽道理,但我還是把這個參數改了回去,結果數據庫一下正常了。計算機係統常常有這些說不清道不明的事情。
當天回到家已經是12點了,被嚇得不輕,一個晚上沒有睡好。第二天在床上起不來,隻好請假沒有上班,其實手機還是時刻待命,準備隨時準備解決出現的緊急問題。
從此我更加相信“Do nothing is better than do wrong thing”, 不再輕易改動任何參數。我每天主要就是看書,不是老敲鍵盤。數據庫就沒有再出問題。
但好景不長。新來了一位manager,耶魯大學畢業的。大約三十歲,很年輕,人很和藹,叫B。他不是學計算機的,自己學過一點,所以稍微懂一點。但來管我們這幫技術人員還是有點不夠。
他來了以後,工作很賣力。看見別人整天鍵盤響過不停,而我那裏卻靜悄悄的,很難聽到鍵盤聲。就忍不住問我怎麽不work,隻看書?我說我隻是需要的時候做,不需要的時候就看專業書,隻有懂的多了,才會少犯錯誤。他很疑惑:你工作得也太少了點吧?
我就告訴他,數據庫沒有問題最好不要動。還把那本書說的數據庫三分之二的問題是DBA不當操作引起的那一段拿給他看,他仍然半信半疑。
有一天開會,他不點名地批評我,說有人不努力工作,隻知道看書。我覺得很冤,但也沒有辦法。後來提到數據庫方麵的一些技術問題,他卻一知半解地亂說,我不得已指出他的不對。他有點不服氣,堅持己見,但我也不相讓。他當然知道他不如我懂得多,隻好作罷,沒有吵起來,但氣氛不好。
第一年,他給我的評語優缺點都有,需要改進的地方不少,還包括英文不好都寫上了。
公司隻有一個DBA非常辛苦,因為需要天天掛著BB機,後來是掛手機,時刻待命,幾乎沒有一天是真正的休息日。但也有好處,除了我沒有人能動數據庫,我調好了就不會出問題。我逐漸將數據庫調到比較穩定的狀態以後,就再也沒有出過問題。
B剛來時,隻要係統有問題,他總是來電話問我,是不是數據庫出了問題?我告訴他,數據庫沒有問題。每次經檢查後,都不是數據庫有問題,而是係統的問題。有了幾次經驗後,在出事時公司都先找係統管理員查,不再找我。
大概2000年冬天,我周末在Milwaukee打排球,跳起來攔網,一個不會打球的人橫著跳,我落地時被他狠狠地踩在了我的落地未穩的踝關節上,當時就站不起來了。晚上腿像抽筋一樣,怎麽放都非常疼痛。第二天發現,踝關節沒有腫什麽,但整個小腿全是淤血。我去了急診室,照了X片,沒有發現骨折。醫生說回去養一段就好了。回來以後,仍然疼痛難忍,不能走路。
我給B打電話,說得腿傷了來不了公司,他不太情願地同意我在家上班。
一個星期過去了,我仍然不能走路。這時B就不太相信了,最後以要開全公司大會為由,派車來接我,我隻好拄著拐去了公司。也不能回Milwaukee的家,拄著拐去了在芝加哥與人合租的一個小公寓,坐火車要半小時,下了火車還得走七八分鍾。那天我拄著拐走了半小時才到,而且自己還得做飯,非常困難。
過了三個月腿仍然還很疼,一年了還有隱疼。期間看了三個骨科大夫,都說沒有別的問題,隻能慢慢好。但長期不能正常走路,踝關節都有點僵硬,木質化了。直到一年半的時候,我在芝加哥看了一個中國推拿師,他檢查以後,肯定地說,你這絕對是骨間肌撕裂,卻被當成了踝關節崴了。骨科大夫這方麵經常誤診。
我後來上網查了一下,我的症狀與骨間肌撕裂的症狀非常吻合。踝關節不腫,但非常痛,像抽筋(抽筋就是骨間肌痙攣)。骨間肌撕裂非常難好,而且過早的走動會影響康複。造成這個局麵首先是骨科大夫誤診,加上B對我不信任,強迫我去上班。
我當時堅持考Oracle 證書,四五個月考一個,每次都是一次通過。通過以後就報告給B,我感到他總有點驚奇,但每次他都按規定給我申請漲工資。
我不管B怎麽說,仍然堅持我的“無為而治”,很少去動數據庫,隻要能穩定運行就好。
有一天,B來找我,要我從數據庫裏查找一組數據。我以前沒有做過這種事,但我覺得不難。就讓他坐在我邊上,用SQL語言來找。每寫一句,都先給他解釋,然後執行。根據得出來的數據再修改SQL命令,再解釋給他聽,然後再執行。
大概修改了四五次以後,一個完美的數據出來了,前後不到五分鍾。他看上去很滿意,拿著結果什麽也沒有說就走了。
他是不是有意來考查我,我不知道。但從此他再也沒有問過我“怎麽不工作?”,也不再與我爭執技術上的問題,每次年終對我的評語都非常好,全部都是讚美之詞,沒有任何缺點,包括英文。
我很快考下了所有Oracle DBA證書,而公司的數據庫也很久沒有出問題。我的工資也從一年四萬慢慢漲到了七萬,雖然如果跳槽還會更高,但考慮到正在辦的綠卡,還是不跳槽的好。B主動提出我不需要天天來公司,每周來兩,三次就行了,其餘時間在家上班。不久以後,我每周隻有周五開會的時候去一次。
我的工作就是每天查幾次數據庫的運轉情況, 基本上就是“Do nothing”。大部分時間就是看看書,上網,在家附近散步。公司的手機一個月也響不了幾回,都是關於開會之類的事,沒有一次是關於數據庫出問題的電話。
這樣的工作好像有點太好了,too good to be true,於是老天嫉妒了。2001年,公司被別的公司收購,開始裁人。到了2002年,公司很多人都被裁了。夏天,隻剩下三十來人了。不久B被裁了,十月,我也被裁了,數據庫被收購的公司遠程管理。很快公司就申請破產保護,又過了幾個月,就徹底關門了。這是後話。
Do nothing is better than do wrong thing 並非放之四海而皆準,但有些時候是對的。除了做DBA,係統管理員這樣的工作以外,我運用它最多的地方是股票投資。買那些有長期成長的股票,然後就Do nothing, 人輕鬆,效果還不錯。
感覺它像道家的無為,但又有點不一樣。但它是生活的哲理,一個學校裏不可能學到的哲理。