美剧:从无耻之徒开始的硅谷大亨 第73节

  杨坚挑了挑眉:“你认识他?”

  “不幸共事过。”迪尼什一脸嫌恶,“如果你要招他来负责后端服务器,我建议你多买几份商业保险。那个人的代码风格是一场灾难。他拒绝使用标准的API文档,喜欢用一些旁门左道的底层Hack技术。他的代码确实能跑起来,但在未来的某一天,绝对会像定时炸弹一样把数据库炸毁。我是为了公司的未来着想,千万别招那家伙。”

  杨坚不动声色地在迪尼什的简历上打了个勾:“明白了。回去等通知吧。”

  迪尼什满意地走出了会议室。

  两分钟后,吉尔弗约尔顶着那张厌世脸,双手插在兜里,慢吞吞地走了进来。他在椅子上坐下,毫不客气地拿起桌上的一瓶矿泉水拧开喝了一口。

  “你申请的是后端工程师和系统架构岗。”杨坚切入正题,“我先给你交个底。《2048》目前的架构很简陋。网页端我只用Nginx做了一层基础的负载均衡。移动端和PC端全是单机运行,只有在游戏结束时,才会向服务器发送一个HTTP POST请求上传分数。总排行榜是用一段脚本去查MySQL数据库,每一个小时刷新一次。”

  吉尔弗约尔听完,原本半死不活的眼神里浮现出一种看垃圾的嫌弃。

  “这不叫服务器架构。”吉尔弗约尔冷哼了一声,“这叫挂在互联网上的公共厕所。你居然让移动端直接跟数据库交互?中间连个缓存层都没有?你们没被黑客用假包刷爆排行榜,简直是上帝在做慈善,哦不,是撒旦在打盹。”

  杨坚没有反驳:“那你打算怎么重构?未来一个月内,我们将加入全球实时排行榜、百万级的并发账号系统,还要保证玩家的积分绝不丢失。”

  吉尔弗约尔站起身,走到白板前。他拿起板擦,把迪尼什画的那些工整的类结构图擦得一干二净,然后拿起红色的马克笔开始画图。

  “单机上传分数必须废弃。前端的所有请求必须经过带有鉴权和防重放攻击机制的API网关。”

  他在白板中央画了一个圆圈,写下“Redis”:“关系型数据库生来就不是为了实时排序而存在的。你用MySQL去做全表扫描排榜,并发一高数据库直接宕机。我们要引入Redis集群,利用它的ZSET(有序集合)数据结构。玩家每次得分更新,直接打入内存级的Redis,排行榜刷新延迟降低到毫秒级。”

  他在旁边又画了几条线:“当然,内存数据是不安全的。我们要在Redis后面挂载一个异步消息队列(比如RabbitMQ),把分数更新的日志异步落地到后端的PostgreSQL中做持久化存储。读写分离,前端请求直接打在内存上,后端数据库只负责记账。只要预算充足,这套架构在遭遇大规模DDoS攻击的时候,依然能让你的玩家顺畅地把分数传上来。”

  杨坚看着白板上的架构图。在AWS(亚马逊云服务)还没有普及成傻瓜式操作的2012年,能熟练运用内存缓存加异步队列来解决高并发排序问题的架构师,属于可以直接拿来当技术总监的级别。

  今天这场面试,算是真的淘到宝了。

  “很好。”杨坚满意地敲了敲桌子,“最后一个问题,关于团队协作。”

  吉尔弗约尔把马克笔扔回笔筒,面无表情地看着杨坚:“我只跟聪明人协作。顺便提一句,刚才出去的那个印度裔,迪尼什。他是个还算合格的‘代码打字员’,但他的脑袋里塞满了教条。他会在一个根本不需要扩展的单例模式上,写上五百行的冗余代码。如果你让他碰核心业务逻辑,他的过度设计迟早会把项目拖进泥潭。建议你只让他去画画前端的按钮。”

  这对卧龙凤雏在互相上眼药这件事上,展现出了高度的默契。

  杨坚看着吉尔弗约尔那张仿佛全世界都欠他钱的脸,再联想到刚才迪尼什那副死抠Java面向对象原则的做派,彻底确信了自己招来了什么样的怪物。

  上午刚在南区雇了《无耻之徒》里的疯狗米奇去催债,下午就在西卢普区集齐了《硅谷》里的这两位大神。

  既然连公司名字都叫了魔笛手,不把这两个相爱相杀的顶级极客收入麾下,简直对不起这奇妙的缘分。最重要的是,在这个世界里,他们现在只能老老实实给自己打工。

  “你被录用了。阿曼达会跟你谈薪资。”杨坚干脆地拍板。

  面试进行到下午两点,团队的拼图迅速补齐。在阿曼达的金钱攻势下,两名资深的苹果iOS开发工程师和另一名PC端开发也顺利签约。

  最后推门进来的是一个名叫佐伊(Zoe)的年轻女孩。她申请的是UX/UI(用户体验/用户界面)设计师。她染着粉色短发,穿着破洞牛仔裤,嘴里嚼着口香糖,空着手,只把自己的iPhone随意地扔在桌面上。

  “你没有带作品集?”杨坚问。

  “那种东西除了证明我会用修图软件之外,没有太多意义。”佐伊拉开椅子坐下,“我来告诉你,为什么你的游戏现在虽然火,但留存率远远没有达到它的上限。”

  她拿起手机,当着杨坚的面打开了网页版的《2048》,快速滑动了三十秒。

  “三个缺陷。”佐伊竖起三根手指。

  “第一,色彩反馈不够。你现在的背景是灰白色,方块颜色是简单的亮色系。当玩家合成出‘256’和‘512’这种高级方块时,视觉刺激太弱。高级方块应该采用带有渐变的暖色调或金属色泽,在潜意识里代表‘稀缺’和‘奖励’。”

  “第二,动画效果干瘪。方块合并的瞬间,你只做了简单的平移放大。它需要一个‘回弹’效果,像两块果冻撞在一起,挤压后再弹开。这种视觉上的物理反馈,能给玩家大脑提供更好的正向循环。”

  “第三,触觉补偿。”佐伊看着杨坚,“当两个相同的数字合并时,如果是移动端,除了视觉变化,必须调用手机的马达,给出一个微小、清脆的震动反馈。就像捏爆气泡纸那样的感觉。你要让玩家在合并方块时不仅看到变化,还要在指尖上感觉到它。”

  杨坚静静地听着。这个设计师没有大谈空洞的设计理念,而是直接从玩家心理和微交互(Micro-interactions)层面切入,直击产品的痛点。

  “你会得到魔笛手首席UX设计师的头衔。”杨坚把最后一份入职意向书推到她面前,“界面和交互上的修改,你来拍板。”

  佐伊吹了个口哨,爽快地签下了名字。

  下午四点。

  九人精英小队正式组建完成。

  在会议室里集中签署保密协议和工作合同时,迪尼什和吉尔弗约尔终于确认了对方也被录用的事实。两人的脸色瞬间变得像吃了隔夜的酸奶油一样难看。

  不过,当他们低头看到合同上那串远超市场价的薪资数字时,还是非常默契地闭上了嘴,飞快地签下自己的名字,并从阿曼达手里各自领走了一台崭新顶配的 MacBook Pro。

  “好了,把电脑装进包里,今天的工作到此结束。”

  杨坚将最后一份入职档案归档,从椅子上站起身,对着这群新招募的雇佣兵拍了拍手:“我已经在密歇根大道订好了一家米其林法餐厅的位置。今晚算我的,放开了吃,庆祝魔笛手团队正式成立。”

  一阵夹杂着口哨声的欢呼在 WeWork的第五层响起。

  ……

  夜幕降临,华灯初上。

  坐在高档法餐厅的落地窗旁,杨坚端起高脚杯,轻轻摇晃着里面的红酒。

  不远处的长餐桌上气氛火热。佐伊正嚼着餐前包,兴致勃勃地和另外几个苹果端开发聊着哪家地下酒吧的酒好喝。

  而吉尔弗约尔则正拿着刀叉,面无表情地嘲笑迪尼什切牛排的姿势“充满了冗余动作,完全不符合面向对象原则”,气得迪尼什差点把手里的胡椒瓶砸过去。

  看着这群性格迥异的极客,杨坚感到一种久违的轻松。

  在这过去的几个月里,他一直是一个单打独斗的全栈码农。

  一个人写前端、搭后端、修Bug、做客服。但从明天开始,那些具体的代码实现、机型碎片化适配的泥坑、服务器的扩容维护,都将由这群世界上最聪明的人去填平。

  杨坚转过头,俯瞰着芝加哥繁华璀璨的夜景。

  随着双手从繁重的代码中彻底解放出来,他的核心定位也迎来了真正的转变。

  他不再需要死死盯着屏幕寻找缺失的分号,而是要成为一个纯粹的商业操盘手。

第91章 第二款游戏——Flappy Bird

  魔笛手办公室。

  上午九点,阳光透过整面的落地玻璃幕墙斜打进来,在地毯上切出分明的光斑。宽敞的中央会议室里,冷气开得很足。

  长条形的原木会议桌中央,随意散落着几盒刚从楼下买来的唐恩都乐(Dunkin' Donuts)甜甜圈,旁边是一大壶还在往外渗着冷凝水的冰咖啡。

  魔笛手公司的九名核心技术人员,外加阿曼达,此刻已经全部就座。这是初创团队的第一次闭门会议。

  杨坚站在会议室正前方的白板旁,手里把玩着一支黑色的马克笔。

  他今天没有穿西装,只套了一件简单的深色连帽衫,看着下面这群风格各异的新成员。

  “早上好,欢迎各位正式加入魔笛手团队!”

  杨坚把马克笔扔在白板槽里,发出“啪”的一声轻响,“在接下来的日子里,希望我们大家一起努力,创造出更多优秀的产品!不过在开始分发具体的活儿之前,大家先混个脸熟。从左边开始,每人简短的介绍下自己吧。”

  几个拿了高薪的资深程序员耸耸肩,早已习惯了职场初次会议的自我介绍。

  “大卫,负责iOS端底层。上一份工作在思科。”

  “克里斯,PC客户端开发。喜欢喝冰美式。”

  大家中规中矩地报着名字和擅长的领域。

  然而,当发言权顺延到会议桌右侧那对“卧龙凤雏”时,整个会议室的画风就开始不受控制地滑向了另一个维度。

  迪尼什整理了一下自己那件仿佛用熨斗烫过三百遍的格子衬衫,腰板挺得笔直,用一种在学术研讨会上发表论文的严肃语气开了口:

  “我是迪尼什·楚格泰,精通Java和移动端底层架构重构。我是一个坚定的面向对象原则信仰者。我始终认为,代码的优雅、可读性以及严谨的封装,决定了一个项目的最终寿命。当然……”

  他顿了顿,眼神刻意往旁边斜了一下,“如果团队里有那种连基础注释都不写、变量名随便敲两下键盘来糊弄的原始人,我也会毫不留情地在代码审查环节把他钉在耻辱柱上。”

  这话就差把身份证号念出来了。

  坐在他斜对面的吉尔弗约尔正拿着一根吸管在冰咖啡里无聊地搅动。听到这话,他冷哼了一声,顶着标志性的黑眼圈抬起头。

  “伯特伦·吉尔弗约尔。系统架构与后端安全。”吉尔弗约尔面无表情地看着前方的空气,语气毫无起伏,“另外,我是一名拉维安撒旦教徒。”

  他松开吸管,目光移向迪尼什:“我的工作是保证服务器在遭遇核打击、或者遭遇一千万个蠢货同时访问时依然能运转。如果以后有任何人,敢把没有经过严格内存泄漏测试的冗余垃圾代码推送到我的主分支里,导致服务器宕机哪怕一秒钟……”

  吉尔弗约尔停顿了一下,“我发誓,我会写一个追踪脚本,把你浏览器里所有的无痕浏览记录打包发给你的母亲,然后把你的键盘抽出来塞进你的鼻孔里,作为献给黑魔王的祭品。”

  会议室里的空气似乎凝固了两秒。

  坐在吉尔弗约尔旁边的大卫默默地把椅子往反方向挪了五厘米。

  “啵。”

  一声清脆的泡泡破裂声打破了僵局。

  佐伊嚼着粉色的泡泡糖,手里转着一支平板触控笔:“佐伊。UX/UI设计。我不管你们信上帝还是信撒旦,也不管你们缩进到底用空格还是Tab键。只要我设计好的交互按钮和回弹动画,你们在前端能一帧不掉地给我还原出来就行。谁敢跑来跟我抱怨‘这个物理效果实现不了’,我就往谁的咖啡杯里吐口水。”

  看着这群性格古怪、谁也不服谁的大神,杨坚不仅没觉得头疼,反而拉开椅子坐了下来,满意地点了点头。

  搞技术开发,不怕团队里有刺头,就怕全是一帮只会说“好的老板”然后私下里消极怠工的应声虫。

  傲慢来源于技术自信,只要能用目标和利益把他们绑在同一辆战车上,这股傲慢就会转化成疯狂的推进力。

  “很好,看来大家都能融洽相处。”

  杨坚无视了迪尼什想要反驳的表情,重新站起身,拿起马克笔在白板的正中央写下了一行大大的英文字母:

  Flappy Bird(像素鸟)

  “寒暄到此结束。现在谈谈公司的下一步动作。”

  杨坚用笔尖重重地敲了敲白板,“《2048》目前的现金流非常健康,但这还不够。互联网公司的护城河永远不是单品,而是产品矩阵。我们需要用一款新的低门槛、强传播性的产品,把用户碎片化的时间彻底锁死。这就是我们的第二款游戏。”

  所有人的目光都聚焦在白板上。

  “玩法非常简单,只需要一根手指。”杨坚在名字下方画了一个粗糙的小鸟轮廓,以及几根类似《超级马里奥》里那种高低错落的绿色水管。

  “游戏开始后,小鸟会受到重力引擎的影响不断下坠。玩家点击一下屏幕,小鸟就会向上飞一段固定的距离。玩家需要控制这种跳跃的节奏,让小鸟从两根水管的空隙中穿过去。碰到水管的边缘,或者掉到地上,游戏立刻结束。穿过一根水管,得一分。没有关卡,没有终点,直到死为止。”

  会议室里安静了一会儿。几名程序员面面相觑。

  迪尼什皱起眉头,有些迟疑地举起手:“老板,恕我直言。现在是2012年,《无尽之剑》这种级别的3D大作都在手机上跑了,连《愤怒的小鸟》都做了几百个复杂的物理关卡。而你让我们去开发一个……单线程、没有任何剧情支撑、连卷轴滚动机制都老掉牙的跳跃游戏?这听起来就像上个世纪八十年代雅达利游戏机上卖不出去的淘汰货。真的会有人玩吗?”

  杨坚看着迪尼什,嘴角勾起一抹自信的微笑。

  这帮纯粹的技术极客当然无法理解。

  在杨坚前世,正是这款看起来粗糙无比、全靠一个越南独立开发者花了两三个月时间随便敲出来的《Flappy Bird》,在2013年底到2014年初期间,引发了一场席卷全球的恐怖风暴。

  那种毫无容错率的变态难度,每一次死亡后瞬间重来的设定,完美地劫持了人类大脑里的“多巴胺补偿机制”和“损失厌恶”。

  它让人愤怒、让人抓狂,甚至引发了无数起玩家把iPhone砸碎在墙上的惨案。

  但正是这种极度的挫败感,促成了病毒式的社交传播。“我过不去,我也必须让你尝尝这种吃屎的感觉”,这就是玩家最真实的心理。

  最巅峰的时候,这款不足两兆的小游戏,每天光是靠底部的谷歌横幅广告,就能给开发者带来超过五万美金的恐怖日收。

  甚至连各大互联网巨头都纷纷抛出千万级别的收购橄榄枝,直到开发者因为承受不住全球玩家的过度关注,主动将游戏下架,这款游戏才在一片惊叹与扼腕中落幕。

  而现在,杨坚打算把这只下金蛋的像素鸟,提前一年多放飞到芝加哥的上空。

  “迪尼什,不要用程序员的逻辑去揣测普通人的心理。人这种生物,骨子里都有一种受虐倾向和强烈的胜负欲。”杨坚收起思绪,把白板上的那只鸟圈了起来。

  他从桌上拿起几张自己提前画好的、毫无美术功底可言的线框草图,递到佐伊面前。

  “佐伊,UI和美术交给你。我需要纯正的8-bit复古像素风,也就是那种能看到锯齿的马赛克画质。记住,这只鸟绝对不能画得太好看、太精致,更不能可爱。”

  杨坚指着草图着重强调:“把它画成一个长着厚嘴唇、凸眼球的黄色小鸟。要把它的眼神画得呆滞一点、蠢一点。要让玩家在控制它一次次撞死在绿色水管上的时候,产生一种‘这只蠢鸟真该死,老子平时聪明绝顶,怎么可能连一只弱智鸟都控制不好’的错觉。”

  佐伊拿起那几张草图看了一眼,原本漫不经心的眼底闪过一丝异样的光彩。她是个懂心理学的设计师,敏锐地捕捉到了这种反向设计背后的用意。

  “你是想用丑陋的外表和极度受挫的体验,去逼迫他们不断点击‘再来一局’?”佐伊吹破了嘴里的泡泡,打了个响指,“恶毒的思路。交给我,我会设计一只让人看一眼就想揍的像素鸟。”

首节 上一节 73/124下一节 尾节 目录

推荐阅读