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, 人轻松,效果还不错。
感觉它像道家的无为,但又有点不一样。但它是生活的哲理,一个学校里不可能学到的哲理。