这个看似是个外行提出的好笑的问题,但是却可以反映产品从设计到上线整个流程可能遇到的问题。
  作为工程师的我,觉得这个问题非常值得讨论。Bug分很多类,一类是对用户来说不能正常使用,能被用户感知到的错误。一类是用户能正常使用,但是有各种异常的错误。一类是使用没有任何问题,但是不符合产品预期的问题。其他应该还有很多,这里我们一一讨论。
  1、对用户来说不能正常使用,能被用户感知到的错误
  其中一种情况是程序员和测试人员的问题,所有功能在上线前,工程师和QA人员应该测试,回归完功能。能被用户感知到使用流程有问题的话,一定是相关人员能力或者线上意识某一方面欠缺,也是不能容忍的。
  另外一种情况是黑天鹅事件,什么网线被挖断,机房被炸,服务器爆炸什么的......这个说实话,除了在软件架构上做冗余,目前没有什么特别好的办法。
  2、用户能正常使用,但是在用户看不到的地方有各种异常的
  一个功能模块几乎不可能是独立的,它必然牵扯到其他模块。对于你所依赖的模块,你没办法保证这些模块是可用的。这个时候可能虽然有错误,但是只要不影响主要流程,我们依然可以正常使用。但这个时候对于外部依赖的异常处理,很考验工程师的能力。
  举个例子,有可能你看到的点赞数比你实际收到的点赞数少。这个是由于点赞统计在什么时候失败了一次,某些用户可能认为这个是bug,但是其他可能不会在意(当你有10001赞的时候,你在意少了1个么?)
  3、使用没有任何问题,但是不符合产品预期
  这个更多的是研发和产品经理对于需求理解的不一致。因为文字是有二义性的,况且人和人对相同文本的理解本来可能出现偏差,这导致了需求理解的不一致,终导致了线上产品不符合预期。对于内部人员来说,这个也算BUG。