2010年7月份,我22岁,在加州的一家网游公司工作。我刚毕业,这是我的第一份真正意义上的工作。我有了工资收入,有了自己的宿舍。我感觉长大了,头一次有这样的感觉。
有两个“工程师”在为公司的旗舰产品——一款rpg游戏——写代码,我是其中之一。我在大学里学的是哲学,这意味着,虽然我知道如何去思考、解决一个问题,但我对最佳实践方法、设计模式等方面的知识很缺乏。我完全倚仗基本的lamp相关知识,对它们付出了极大的热情。
这款游戏的设计者(我们的老大)经常从暴雪公司出品的风靡世界的游戏“魔兽世界”中吸取灵感。在当时,魔兽世界里的“raids”玩法在玩家中激起了前所未有的兴奋和热情。这个东西是我们特别想在我们的游戏中复制的功能。
我被分派去实现我们的游戏中的raids。同事山姆被大量的重构工作纠缠住,于是我就幸运的有机会去开发一些新的令人兴奋的东西了。
我们的开发环境的一大特色是,我们开发代码直接连的是生产库。回想起来,这真是难以理解,我竟然没有询问这是为什么,真是一个笑柄。
我是使用一个mysql客户端来查看数据库表,这个工具有个华而不实的osxy接口的界面…远不如phpmyadmin。我的一部分测试工作涉及到手工的清除raids表,然后用程序重建。
这种工作的单调让我精神恍惚,一个懒洋洋的下午,我发现自己昏昏欲睡,鼠标光标移到了users表达图标上,然后弹出右键菜单,点击‘clear’。
我的所作所为会带来的严重后果并没有立即击倒我。我起初只是感觉到一种灵魂出窍,好像是悬浮在黑暗的房间里,看见各位同事都勾着腰趴在发光的显示器上。
那么,究竟是什么后果呢?我们的游戏有上万个付费用户。用户花钱买装备,提升他们游戏中人物的能力。所有这些人物的数据都放在users表里,现在全没了。
大概一分钟之后,一个业务经理走了进来。“我感觉有什么地方出问题了”,她说。我回答说,“是的,我知道出了什么问题”。
我发现自己倚着一张桌子给数据库提供商rackspace打电话寻求支持,耐心的听着他们的工程师解释说我们的数据库实例的备份两个月前就已经停止了。啊!