程序员与医生
文章导航-readme
久病未能成医,然而却悟出了些许程序员与医生的道理。细想来,程序员和医生这个职业竟如此相似。
职业的诞生
上帝创造了人类,而人类又创造了程序。上帝所创造的人类并不是完美无缺的,他在每个人的身上或多或少的留下了一些缺陷。这些缺陷就是疾病,有些人很不幸,一出生就有了,有些人很幸运,他健康的生活了很久才出现。然而不管是前者还是后者,其降临到这个世间的时候就注定了要有这些缺陷。人们虽然很不理解为什么要有这些缺陷,但不甘心被这些缺陷所支配。
于是,医生这个职业诞生了,用以最大程度的解决这些缺陷带给人类的影响。
人类创造了程序。同样,程序也不是完美无缺的,它也存在了各种各样的缺陷。这些缺陷就是bug。所不同的是,bug是程序员创造的,程序也是程序员所创造的。你永远无法要求一个程序员创造出没有bug的程序,正如你无法要求上帝创造一个完美无缺的人一样。上帝在创造了一个人之后,可以毫不负责任的当甩手掌柜,把烂摊子交给医生去处理,而程序员则不能,你在创造了一个程序的时候,就要对其进行负责到底,如果你不愿意,那么必然也会有另一个苦逼的程序员要对其负责。
求医问药的套路
改bug就是治病!
求医问药的人,向医生哭诉着自己的症状,告诉医生自己的患病时间。而测试(客户或产品)也会拿着程序的症状和发生时间来给你提bug。有趣的是,程序员定位bug与医生诊断疾病的手法也极其相似。有经验的医生和有经验的程序员都会根据自己的经验来大体判断问题的所在。然后他们一般会采用排除法,通过一些检查来定位问题的具体位置。医生也许会让你做一些特定动作,去拍一些片子等,而程序员也会重现一下问题,打一些日志......
了解到以上问题,无论是对于病人还是,一些使用程序的人非常重要,如果你想让医生(或程序员)快速的诊断出问题并解决。
于病人而言,在医生就诊的时候你需要提供几点必要的信息。
-
症状
-
患病时间
-
过往病历
同样,对于使用程序的人,你也需要提供几点必要的信息。
- 症状
这一点是最重要的,你需要详细的告诉程序员,程序的那个模块的那个页面或功能遇到了什么问题。
- 重现问题的步骤
你需要尽可能的详细的提供问题是怎样产生的,如使用哪个浏览器,如何操作...,应该如何去重现它。
- 发生问题的时间
如果你不能重现问题的步骤,那么你必须提供问题发生的时间,以便于程序员回溯问题。
在苦逼的程序生涯中,我就常常遇到客户、产品或测试提改过来的不知所云的几句话,甚至几个字。
程序员与医生
即使这个世界上有了医生和程序员,然而我们仍然不得不面对一个残酷的现实——世上有治不了的病,也有改不了的bug。
也许上帝在创造人时,无法做到“尽善尽美”与“雨露均沾”。有的人也许得到的宠爱多一些,缺陷也相对少一些。有的人也许很不幸,上帝在创造它的时候恰好打了个盹儿。于是很不幸,这群人的缺陷就更多一些,有些更是疑难杂症!
面对这个现实,病人们不应去抱怨上帝的不公平,也不应责怪医生的无能。因为这根本没有什么卵用。而那个被你责怪的倒霉蛋医生可能也在抱怨:“人又不是我创造的,鬼知道上帝为什么会搞出来这么多的疑难杂症”
程序同样也有解决不了的bug,也许是因为设计之初的不合理,也许是客观条件的不允许......总之,当程序产生的时候,bug也就随之产生了。也许这个bug并不是某个程序员所创造的,但问题却要由他来解决。我们不能抱怨程序员的无能,正如我们不应该抱怨医生的无能一样。而程序员也不应该一味的埋怨当初的创造者,因为也许你所创造的程序,正有一个苦逼的程序员在熬夜改bug。
而相对于医生而言,程序员或许是幸运的,医生面对的是生命,程序员面对的只是程序。医生不能创造一个人,因此无法避免疾病的产生,也无法对人体有足够的了解而治愈疾病,而程序员很可能是程序的创造者,他可以尽可能的在程序起始,进行详细的调研,采用优秀的设计以尽可能的避免问题。又或是因为自己是程序的创造者,而更轻松的定位与解决问题。
无论是医生还是程序员,无论是病人还是客户。当问题产生之后,尽早尽快的解决才是最应该做的事,抱怨永远不是解决问题的办法。如果问题不能解决,我们不仅不能抱怨,还必须用愉悦心情让自己去接受它。因为,每时每刻我们都是幸运的,因为任何灾难的前面都有可能再加一个“更”字!沮丧、忧郁、抱怨的情绪,只会让事情变得更糟糕!