下班的墨菲定律

下班的时候墨菲定律经常会发生,哭笑不得。今天又是一回。

我们一般18:00或者18:30下班(看Team安排)。今天北京下雨,老婆说下班在立水桥接我。昨天老婆说要我18:00出发,结果我实际18:27才出来,被数落一顿。今天长记性了。下午四点老婆打电话叮嘱今天一定18:00出发,我斩钉截铁的答应了。

到了17:00,我的Pair钱钱同学有一个会要参加,先离开了。我们今天做的Feature还有一些,我就继续往下做。到了17:30的时候我继续开发的部分不是很顺利,这时发现是我和钱钱之前重构的一个方法工作不正常,已经Break了不少单元测试,一时汗下。我看了一下,没什么头绪。这个时候当下已经攒下了1个多小时的修改没有Check in了,我review了一下修改,发现最好不要revert重来,可是20分钟我似乎也解决不了这个问题,而我一定要在20分钟后写好work update走人。正在踌躇的时候……

WPC对我说,你好像Break了Javascript单元测试……而且,那个Cruise agent被hang住了,需要重新启动一下那台服务器。顿时更汗了。想起上次Check in的时候只运行了precommit(就是提交到持续集成服务器之前的本地快速测试,只执行单元和快速的functional测试),没有验证javascript测试。嗯,认栽,前天写这个单元测试的时候我和Linc同学就怀疑过它的脆弱性(因为这两天在尝试Acceptance Test驱动,从上到下有些摸不到头脑)。

所以现在必须Git stash起来,切回master去修build。还好git在这方面表现很迅速。

切回来一看,Test suite里面的三个测试都break了。在有firebug的ff3里面运行jsunit还是没有线索……没有抛出exception,所以没法快速定位到代码里面去。只得先限定执行单个测试,但是依然没有找到原因。这个时候是18:57分,我心想:这下要死了,倒霉。要求自己冷静一下,一行一行的在firebug里面运行代码,发现这里的几个对象的构造参数已经被我们做了很大的重构,赶紧修改过来。然后继续跟踪,找到了出错的地方。原来是一个html元素的id从’_’分割改为了’-‘分割,修改过来。这个测试通过,解除另外两个的注释,也通过了。立马check in,然后git svn dcommit提交上去。此时已经18:03。赶快登陆cruise查看hang掉的agent的机器名,再登陆mingle09,在wiki上面搜索build vm的信息,找到这台主机的登陆方式。ssh上去并且和WPC确认reboot既可,马上sudo reboot。此时是18:05,走快点也许能赶回这五分钟。1分钟内把Macbook pro和电源打包,ipod touch和各种零碎放到包里面,飞速和大家say good bye逃跑出来……此时是18:07……

点天过了15秒才到11层,然后墨菲定律再次发生,10、9、8、7、6层都有人上电梯,这个要blame倒霉的诺基亚西门子,他们的人总是再这几层稀稀拉拉的拉拉稀稀……不情愿的在1层夺门而出,麻利的奔向13号线……一溜烟,而后墨菲没有来……

真的不知道为什么这样,倒霉在这几个点:

  1. 需要你的pair的时候他会不在,他在的时候……
  2. 着急做完所剩无几的功能,却发现前面的重构break了另外的功能(这个赖自己)
  3. 欲速则不达,越想马上完事,却发现还有更多的事要搞定
  4. 本来遇到麻烦发愁如何解决,却又被加上了一个严格的时间限制
  5. 马上就要到deadline了,确发现有更重要的事情要做(Break了持续构建)
  6. 更惨的是,你Break的测试hang掉了,需要重启服务器
  7. 而你还必须冷静的fix那些测试
  8. 那些测试没有啥明显的线索去fix
  9. fix之前你还要处理原先做的那些功能的代码
  10. 即使fix了也提交了,你还不能拍屁股走人,重启服务器你就要知道怎样登陆
  11. 登陆信息你要登陆Cruise和Mingle……谁让你平时没登陆过呢(如果经常维护Build也许你就对这样的串门很熟悉)
  12. 登上去以后你还要问人家怎么解决这个hang掉的build(同上,谁让你很少去维护基础设施呢)
  13. 即使你可以走了,电梯里面那些悠闲的从楼上乘电梯下一层的人让你冒火

无论如何,承认墨菲定律就是会在你着急下班的时候生效,然后找个地方凉快凉快吧。

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.