Dependent Origination

在看不懂code的时候

Posted on: September 26, 2008

05/25/2006

昨天一上班, 就是billing的problem, customer来complain, 收到一封email, 说他的某service被终止了. 但是他其实并没有这个service. 于是和老板一起, 花了一天的时间, trying to figure out where the bug is.

但是先是我大眼儿瞪小眼儿的想不明白这个家伙的data record怎么就不crash systerm呢. 跟老板说我很confused. 结果老板看了半天也不明白. 更有甚者, 我们为了replicate the bug, 去查其他顾客的data record, 又发现了另一段code, 怎么也figure out不出来这个新拿出来的例子为什么在这个状态里面. 花了一天时间, trying to debug, 最后我们俩个都同意it is proven that we cannot read code.

为了继续研究这个问题, 昨天快下班的时候还写了一个工具, 打算今天上班来试. 不过一上班发现问题被另一个同事发现了! 昨天我们两个花了这么多时间, 原来一开始就假设错了. customer收到的那个email, 其实是expiration email, 不是renewal failure email. 可是我上来就觉得他是后者, 所以两个人根本就在看完全没有关系的code path.

What a lesson! 而且后来发现real bug的时候, 还发现了为什么昨天第二个mystery是怎么回事儿. 原来又有一个地方我假设错了. 以为一个函数返回一个值, 但是其实没有!

所以这里有两大教训: 第一, 如果发现有些不可能的情况, 比如下个语句执行了, 上一个死活没有, 那么很有可能在看wrong place. 计算机永远是有逻辑的 第二, 不要make assumption. 或者, 要清醒的意识到自己在make assumption. 如果turn out differently, 就要回来检查assumption.

都是些浅显的道理, 但是要记得用上啊.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

September 2008
M T W T F S S
« Dec   Oct »
1234567
891011121314
15161718192021
22232425262728
2930  

Twitter

Flickr Photos

%d bloggers like this: