一个非常严重和困难的bug,能够成一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成员的离世。

  研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的Kübler-Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相似。好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造了你苦闷的情绪并开始逐步影响你的心智。这种苦闷的情结果会让你纠结要努力忍受,终会你会找到一个满意的结果。

  了解下面这几个bug-fixing的阶段,会让我们更好的生存下来,并持之以恒,终带来……关闭我们所有的bug的结果。

  第一阶段:抵触

  本阶段的状态:多疑Skeptical、生气Offended、易怒Petulant。

  1、不理睬
  也许这个bug会安静地离开。

  2、标记上“不是bug”
  也许这是用户的错,或是本地配置有问题。是的,我确信是那样,一会会好的。

  3、是一次小故障
  我想这是一次小故障,很奇怪地发生了一次,它不会再发生的,虽然没有搞清楚是为什么发生了,不过这好像我们的数据库,网格,浏览器或别的什么打了几个嗝一样。一会会好的,我确信。

  4、躲藏
  我要休几天病假,也许他们会把这个bug转给别人的。

  5、标记为“修改需求中”
  你看,我是按照需求实现的。如果你们想要改这个行为和UI,一定要修改需求。也许他们会决定这样了。

  6、需要更多的信息
  我不能确定这是一个bug,除非我能在错误日志中看到一条特定的报错信息。

  7、转给其他人
  我调查这个bug中看到了其它模块中我看不懂的数据,问题很大。我应该把这个bug转给开发那个模块的人。我可以在我的模块中检查一下那个边边角角的情况,但是正确的fix应该是在别人的模块中。反正那个在别的,我见不着他。

  第二阶段:接受

  本阶段的状态:认命Resigned、被打击Defeated、被激怒Annoyed。

  1、接受现实
  行了,行了,行了!这是我的bug,我会修正它的。

  2、把这个bug放到后
  也许,我可以在我需要fix这个bug之前找到一个新的工作。

  3、和你的经理讨价还价
  好的,你看,我可以正确地fix这个问题,不过我需要一个月。也是说,我可以给这个问题贴个创可贴,那不会真正的解决它,但是我们可以避免用户的抱怨,这可以为我们赢得几天的时间。

  4、为这个bug标记一个无耻的时间
  上帝啊,我希望这时间够了。