巴别塔上的雇工


屠虫战记(2)
6月 30, 2006, 1:04 下午
Filed under: 技术体会

“假如你是一家大型农场的Helpdesk,有一天一个农夫打电话对你说‘我这里一头奶牛站在草地里面不吃草也不产奶’,你该怎么办?“

上面个问题不是用来招聘农场Helpdesk的,而是用来招聘程序员的。看起来很费解啊,搞电脑的要管养牛干什么?其实世界上处理解决问题的哲学都是相通的。

怎么回答那个农夫呢?

“这头牛以前吃草产奶吗?它这样持续多长时间了?”——这牛要是一直就这个德性,天生就不吃不喝,有什么办法

“那块草地和别的草地有什么不同?”——那头牛待在那里应该有个理由。

“这之前什么事情发生在这头牛身上了吗?”——和以前的环境的不同,可能是造成问题的原因。

……

处理这个问题的办法和Fix Bug的办法原则差不多,就应该是首先找出发生问题的原因,怎么找原因呢,就是需要比较一下出问题的环境和没出问题的环境有什么差别,找出了差别,问题的原因也就容易解决了。

这几天我犯了忽视这个原则的错误,碰上一个bug,上来就冥思苦想这个bug的根源在哪里呢,对于简单明显的bug,这招加上一点经验的确好使,但是很不幸我碰上了一个不这么好对付的虫子。有的问题表面上看在东,实际上根源在西,嗨,如我同事所说,也许在南呢,未必在相反的方向

对于这样棘手的bug,就得和分析那头牛的问题一样,先搞清楚这样几个问题,这个bug什么时候出现的?什么情况下可以复现?这个bug出现的release和之前的release相比有什么改变?找出重现bug和不能重现bug的不同之出,找出出现bug和没有bug的版本不同之处,我们就离结果大大接近了。

当然,不同之处往往很多,最后还是要动手Debug进去,抽丝剥茧,找到真正导致bug的不同。


发表评论 so far
留下评论



留下评论