为何优秀如程序员,也会构建 Bug 满格的软件?(12)

大多数人只会提供一次反馈。如果你上来就将软件公开给大量用户,那么每个人都会为你提供最显而易见的雷同反馈,以后你就没办法再收集反馈了。即便再优秀的工程师构建再好的产品创意也会出现重大问题。所以我们的目标是反复改进,打磨边缘案例,直到创建出最好的产品。

即使在完成所有迭代并发布软件之后,产品的问题也很重要。有些问题的发生几率只有0.1%,测试期间没有被注意到。但是,一旦你有一百万的用户,那么每天都会面临一千个愤怒的用户需要安抚。你需要抢在给用户造成重大损害之前,修复新移动设备、网络中断或安全攻击造成的问题。我们在Parking.sg中构建了一系列辅助系统,可以不断检查主系统是否存在付款差异、重复停车会话和应用程序崩溃等问题。随着时间的推移,建立一个“免疫系统”可以让你避免不堪重负,因为新的问题必然会不断涌现。

总的来说,我们的基本思路是利用不同的反馈回路来有效地识别问题。小的反馈回路可以快速找到问题并轻松修复,但会错过更广泛的问题。大型反馈循环可以捕捉到更广泛的问题,但其速度慢、开销大。你可以结合两者,利用紧凑的循环解决尽可能多的问题,同时利用大型循环捕捉意外的错误。构建软件不是为了避免失误,而是应该有策略地快速失败,然后再获取构建优秀软件所需的信息。

推荐阅读