作为亲身经历者,软件工程师 Will Larson 在 2018 年以《Digg's v4 launch: an optimism born of necessity.》一文,回顾了当初 Digg 公司的发展情况与个人参与的整个遭遇。万万没想到的是,经历了两年改版重写,再到耗时一个月的寻找 Bug,最终的问题竟是与 Python 的一个函数有关,然而彼时再想修复,似乎一切已为时已晚。借此,通过这篇文章也想给奋战在一线的开发者避一避坑。
Will Larson 在 2018 年发布的博文里提到:“过去一年里,Digg 过得异常艰难。我们的 CEO 在我加入的前一天离开了;高级工程师们鬼使神差地离开了公司,并拉走了他们剩在公司的朋友们,降低了公司的生产力;具有欺诈性的团伙规避了我们的算法,利用投票与订阅的方式,出售我们网站头版的访问权,并威胁我们要及时修改算法以防止他们的滥用;我们的开发者环境配置工具坏了,没有人知道如何修复它们,所以我们给新员工重新分配了近期离职同事的僵尸虚拟机。”
要说一家发展前景良好的公司,为何会沦落如此,一方面,必然有其内部的战略问题,另一方面,也与外部的竞争环境有关。Will Larson 称,受到外部的影响因素之一便是与 2011 年 Google 推出了 Panda “反垃圾网站”算法有关。
那时,Google Panda 的主要目的是将质量低、含有垃圾内容的网页或网站排名降低,使得高质量的内容得到应有的合理排名。
虽然 Google Panda 算法本身是利好质量高的网站,但是 Will Larson 表示,“当时 Digg 已经被 Google Panda 算法更新破坏了。由于该搜索更新花了一个月的时间才慢慢生效,Digg 的命运就此也发生了巨大逆转:我们从第一个也是唯一一个盈利的月份开始下跌,一直跌到网站月流量被砍掉一半。前一个月,公司在五年的盈利道路上达到了顶峰,下一个月,公司处于自由落体状态,即将从弱势地位进行融资。”
好在最终还是发现了问题的所在。Digg 的 API 服务器是一个 Python Tornado 服务,它将 API 调用到 Python 后端层,即 Bobtail(前端是 Bobcat),其中一个最经常被访问的端点是用来通过用户的名字或 ID 来检索用户。因为它支持按名字或 ID 检索,所以它把两个参数的默认值都设置为空列表。
Will Larson 在文末写道,「Digg V4 有时会被作为灾难性发布的例子,隐含的教训是我们不应该发布它。我曾经一度同意这个观点,但现在我认为我们推出的决定是正确的。因为,我们的流量明显下降,每个月都在损失一大笔钱。如果我们能在推出伟大的东西和糟糕的东西之间做出选择,肯定会更倾向于推出伟大的东西,但我们却选择了最后一次挥棒。」