写这个下篇的时候,时间在写上篇的基础上又过了将近一年,距离发生的时间过去了近两年,时间剃刀又剔除了很多回忆,所幸的是,我有记录日记的习惯,每次遇到了什么我觉得有价值的事情我总能在我的evernote里面记录下什么。看了看上篇的内容,翻了翻笔记,思绪回到了一年多前……
心动一日游
唉,我在心动公司只工作了一天,吃了心动食堂里的两顿饭,就辞职了。前后听我细细道来。
我的通勤路程基本上贯穿上海一号线,从最南边的“外环路”一直到北边的“上海马戏城”,早上8、9点钟的一号线人是很挤的,他并不像北京的5号线,一直挤到CBD,而是像揉面似的,在一些站松一些,又在另一些站紧一些,连续好几次,我就到站了,因为是第一次坐,所以感觉时间过得特别慢。
下了地铁,“旅程”还没有结束,心动公司并没有挨着地铁,我还需要找共享单车,那个时候,共享单车还有好几家,我的手机里面,这几家的押金都交过,但是地铁站外面几乎找不到任何一辆可以开启或者骑行的,我只好边走边找,直到路程的一半,才找到一辆可以骑行的小众单车(这个共享单车已经倒闭了),因为是小众,所以起来特别费劲,没错,我上班的第一天就迟到了。
询问前台的妹子,哼哧哼哧的冲进新人几何的会议室,发现入职并不是只有我一个,而是有……少说也有十几个,他们都在看员工手册和签合同,我也坐下开始走流程,签了合同,拿了员工卡,我就成为心动的正式的一员了。跟着HR开始“逛大楼”,这里是第几研发部,这里是xxx项目组,那里是总裁办公室……介绍总裁会议室的时候,因为那个会议室是玻璃透明的,正巧看到黄一孟大老板坐在里面和一个人谈话,呵,好神奇。
我所在的小组在3楼,所有的人都在一个大屋子里面,工位密度还算可以,一排的桌子是连着的(一块板),我见到了那天和我聊的其中一个小哥,简单打过招呼,指给我看我的工位,就坐在他的旁边,上面摆着一台mac mini和一台显示器,我有点愣,然后他说,不要紧,如果我需要一台windows机器,可以联系IT给我换一台。
迟到是我第一个不顺,而给那台Windows 装机是我的第二个不顺,可能他么就没有考虑到我会要一台windows,所以给我弄来了一台估计是前台用的Windows机器,我在那台 7200 转的机械硬盘上几乎耗了我一天的世界才把自己的基本环境装好。那一天,我大部分时间都在盯着屏幕进度条发呆,或者说,在思考人生。也就像那位总裁在我离职的时候说的那样,他也很不理解我为什么会要一台 Windows 作为开发机,就像我无法理解为什么他们默认给员工配置的一台mac一样。
Windows, Mac 之争永远也无法说清楚,虽然我在mac下面工作一样没有障碍,毕竟我需要时常在mac下面调试ios上面的bug,但是那不是我最得心应手的环境。
那天和我一起入职进入同一个小组的,还有一个新人,也是一个小哥,听说日语非常溜,坐在我的左边,现在这个小组一共七八个人了吧。我的右边是和我面试那天见过的两个人,后面还有一个妹子,是这个小组的项目经理,妹子旁边坐着除了我以外年龄最大的一个“爸爸”,他叫什么名字我已经忘记了,但是小组内所有人都叫他爸爸,这个称呼成了我的沟通障碍和心理阴影,也是我的第三个不顺。
我刚开始装机,就有一个自称是“CTO助理”的妹子过来让我加入各种qq群、微信群,2年过后,我的印象中,她不断催促,当我加完了之后松了一口气,她好像完成了自己的任务,立刻走了,留下我一脸懵逼。
还记得那天,他们专门为我们两个新人开了一个小会,介绍目前他们是在做什么,目的是什么,有哪些困难,这些困难可能的解决方式有哪些等等,我作为之前带过团的人来说,自然认为这个会议必不可少,但是问题是,这个会议才开了10分钟就结束了,具体什么内容我也忘记了,我只记得我问了几个问题得到了解答,并留下了更多的问题。会议结束之后,坐在我左边的那位小哥给我留下一张条子(具体内容我忘记了,也没有拍照——真可惜):
一周内熟悉并掌握整个游戏构架,并且达到可以改bug、加功能的水平。
熟悉各种翻墙技术,能够随时访问各种群,保证工作沟通。
……
一共10条左右吧,但是我印象最深的就这两条了。我要参加的项目是一个使用lua语言作为主要逻辑的项目,开发了两三年,我作为一个从来没有学过lua的中年大叔,要在一个星期内不但要解决语言问题,还要在一个别人开发了几年的项目里面加功能,上天了。给了新员工一个完全无法实现的目标,让其在没有任何帮助的情况下完成任务,这个不是考核,这个是下达驱逐令,或者说,这个团队所有的人都是独狼,毫无战斗力可言。
就职第一天中,在我不时地问他们关于项目的一些细节问题的时候,也是有一搭没一搭的,感觉好像在说,“你需要一个人独立完成这个任务,别来烦我!”,我心里感觉不是个滋味。
心动内部使用的是谷歌的企业套件服务,还有很多内部讨论群,也是在国内访问不了的,这些在公司内部网络自然没有问题,但是在外面就傻了。这对我这个老油条自然没有什么问题,但是把“翻墙”作为工作任务之一,我实在是无法理解,只能摇头感叹,年轻人啊。。。
就这样,我一边心里想着这些乱七八糟的事情,一边看着我的那台机械硬盘主机上的进度条发呆。上午就这样过去了,中午我的和那个“爸爸”一起在公司食堂吃了个饭,他也十分沉默,表现出来的也是面对陌生人的腼腆。心动公司食堂完全免费,饭菜也中规中矩。
入职那天,也正巧是万圣节前夕,当我去公司厕所的时候,发现厕所的洗脸池上面用一些红色的液体装饰起来了,一开始我还以为谁流鼻血了呢。公司还是年轻人多啊,毕竟大老板估计也和我年龄差不多,唉,城会玩。
期间接到一个电话,丈母娘打过来的,她早已经知道我独自去了南边找工作,这么多天了,她第一次给我打电话。
“工作找得怎么样了?” ,她用我只能听懂70%的方言问到。
“还行,已经找到了”,我唯唯诺诺的说道,每次和她说话,总有些不自信。
“哦,在干什么啊?”
“在上班呢…”
“哦,在上班…”
然后就是短时间的沉默。然后我给他解释了一番我和老婆的计划。
“好了,没事了,你上班吧”
于是我就挂了电话,马上给老婆打了过去,一般来说,丈母娘打电话过来之后,老婆不在身边的话,我总会在给老婆去一个电话,问一下具体什么情况,一般都是没有什么事情,或者有些其他的什么事情。
这次我接连打了几个电话,老婆都没接,我已经忘了是关机还是忙音了,总之没有联系上,心里有些慌乱。
回到工位继续装机,下午的时候,终于可以进入游戏了登陆界面了,然后草草的看了一下项目的构架,因为从没接触过c# lua交叉编程,所以大部分都在谷歌搜索,时间不知不觉的到了下午七点,我左边的新人小哥没有要走的意思,右边的小哥也没有要走的意思,我饿了,独自去食堂吃了个饭,回来继续看项目,其实我这个时候已经没有什么心思在什么项目上了,中途和右边的小哥聊了一下项目中的一个问题的可能解决方案,得到的也是消极的回答。
时间不知不觉的到了晚上9点,左右两大“护法”没有任何要走的意思,期间cto还过来探班,和我右边的小哥聊事情。而我,只要过了七点,思绪就已经停滞了,作为一个中年大叔,年龄过了三十二三,体力自然就跟不上了。没多久,我就起身要走了,回去的时候我在的小组没一个人走,也包括今天和我一同报道的那个新人。下班时间超级晚,这算是我到心动的第四个劫数吧。
整夜睡不着觉,除了想到今天一天的几个不顺和劫数,还因为担心家里的一大一小,老婆的电话一直就没有接通,记得谈恋爱的时候,要是我一直打电话没接通,而且也没有给我打电话,十有八九是又要经历一次吵架分手风波。凌晨3点多爬起,定车票,发邮件请假,叫夜间车去车站一气呵成。
不到5点,我人已经在上海虹桥站了。坐了最早的一趟车去北京,在车上迷迷糊糊的睡了一下,早上9点左右的时候,接到老婆的电话,她说她手机没电了而已,虽然我觉得这个是一个借口,但是我还是告诉她说我已经在高铁上面了,她很惊讶,然后她各种说没有必要,唉,女强人就是这样……
我完全低估了自己对家庭的依赖,高估了老婆的“自理能力”,毕竟还要上下班接送孩子来回幼儿园,甚至需要自己打包各种行李准备搬家,唉,罪过,丈母娘的一个看似随意的电话才让我突然间明白过来。
正在深深自责中,随后又接到之前介绍的猎头的微信,她的语气变得有些不客气了,毕竟我这样,简直就有些侮辱她们公司的智商和名誉,我急忙把自己的高铁车票发给她看了,她稍微理智了一点,留下一句“赶紧办完事情回去上班”,就没有再继续聊去了。
我人在火车上,但是还是能够接受到公司的各种群的信息,大部分我都静音了,这时看到一个群里总裁正在询问一个问题的解决方法,这个问题的诞生是公司其中一个部门,群里有很多另外部门的人给他分析问题,提出解决方法,我也说了两句我的看法,很自然地没有人理我,我也就不再发言。
接下来都是不关乎心动公司的一些个人事务的处理,比如帮助老婆打包东西、接孩子回家等等,我就不一一详说了,但是我的心就此散了去,对于融入公司那段适应期,我本身是有准备的,但是我低估了这个心理障碍,对于一个失败的、坚韧的创业者再去融入到一般的大公司里面的一个螺丝钉,我高估了自己。我不断的想起了“熊猫哥”临走的时候和我说的那些话,“像我们这些人怎么还能找工作?”,“最起码都得要CTO吧?”……
你以前几乎是整个公司的希望,做出的决定几乎决定生死,而现在,你基本上只是一个螺丝钉,你提出的方案仅仅是几个备选方案中的一个,还有可能是最无足轻重的那一个。
你以前是自己的主人,可以选择和那些你喜欢的人合作,远离另一些人,你可以制定自己的所谓“团队文化”;而现在,你不得不叫别人“爸爸”,和一些和你貌似不是很合得来的人一起共处很长时间。
你以前可以决定使用什么开发工具、方法、进度,在自己最熟悉的范围内做出最好的成果,而现在,你连一台最基本的开发机、最基本的开发环境都无法选择。
你以前可以决定在任何地方办公,家里,咖啡厅,离家很近的出租屋,而现在你不得不坐上一个小时的地铁几乎穿越整个上海市中心去上将近11个小时的班。
上善若水,当时的我无法成为“水”——人家给我什么容器,我就可以变成什么形状,当时的我,沿用这创业时候的心态,一下子撞到了“南墙”,头破血流。即便是没有丈母娘的电话促使我回北京,我也可能只会在心动待上一两个星期而辞职。
在把整个家搬来上海之后——也就是一个星期之后,我就提交了辞呈。现在平静的回想起来,也全是我的错,站在心动公司的角度来看,我又不是技术特别nb的大神,也没有带团跳,我只是一个通过正常社招进入公司的普通员工,他么怎么可能屈尊去照顾我?我当时也明白这个道理,只是心里有一个想法:“我不适合这里,我需要离开,再去寻找适合自己的地方。”
我在微信上和那位HR说了我要离职的想法,她有些惊讶,就先劝说我来公司,当面再聊一下,再做决定。然而作为一个犟脾气的人来说,任何挽留都只会引起反感,那位HR是心动HR的头头,很显然明白这个道理,简单问了缘由,就释然了,最后问了我之后的打算,我说要去之前拒绝的那些offer试试看。
我再回到工位,开始清理、删除之前装好的机器信息,同时我把要走的消息告诉给右边的哥们儿,嗯,怎么说呢,我印象很深刻,他是笑了,而且作为另外一个人类,我的大脑竟然告诉我,那是一个表示“庆幸”的笑容,唉,人性的弱点啊,大公司的弱点啊。这和5、6年前,我把离职想法告诉跟了4年的那个老大时候的那种慌乱表情形成了鲜明的对比。
离职手续对于一个巨大的上市公司来说,简直不叫事儿,很快就办完了,不过办完之后我还不能走,我需要向那位招我进公司的总裁做一个解释。老大们一般都是很忙的,所以我需要等待。1、2个小时之后,我得以召见,进了总裁办公室,他还把那位HR一同叫了进来,这个场景我印象很深,HR的潜台词就是,“我已经劝说过了,管我什么事情?”,而那位总裁的潜台词是,“看你找的什么人,怎么干一天就走了!你也得给我过来听听”。
“现在离职手续都办完了,你可以放心和我聊聊你为什么这么快就离开公司了,我么下次也好改进改进……”
那位总裁说到。
不知道我在上篇介绍过没有,这个总裁不是心动老大黄一孟,但年龄和黄一孟差不多大,和我也差不多大,是个80后,人很精神,成功的经历在他的脸上烙下了自信的印记,被我这来了又走了“一耳光”打得很不舒服——毕竟谁开公司也不想开成一个公共厕所。
谈话的具体内容我也忘了,但是有几个点我还记得很清楚的。
首先我表达了我自己的感受,自己还是想要从头做项目的,不想半途维护一个项目。那位总裁(用反驳的语气)说,“别的公司不会给一个新人一上来就做一个新的项目的,至少要考察一段时间,还要等待有机会了,才可能开一个项目的”。
其次,我说我一进来基本上完不成给的任务,我之前没有学过lua,现在让我一个星期之内就要完成“可一个更改bug、加功能”的水平,我是在有些吃力。那位总裁(依然用反驳的语气)说,“我开始还很看好你呢,没想到……要是给我,我应该说,我三天之内就能学会lua!”。
最后,我说我自己刚进来,得不到帮助,反而在一些问题的解决上和同事产生了一些矛盾,我说要这样做,他说要那样做。那位总裁表达出很惊讶的样子,说,“你刚来一天就发生了这种情况?!”
最最后,他又对我表示了一定的失望,虽然我们这次谈话的基调就已经是“他对我表示失望和愤怒”了,但是他给出的理由反倒是让我觉得有些诧异,他说,“我没有想到你竟然要了一台Windows……我给你一点建议,你可以尝试一下mac,对开发效率提升非常多的……”
谈话大概进行了15-30分钟吧,记得不是很清楚了,毕竟不是谈判,不需要那么多的时间。我和那位HR主管一同出来,她表现的非常专业,把我送至心动门外,并且和我大方的主动握手道别,虽然我还是能感受到她把自己心中的那些不满和愤慨都压抑在心中的那种情绪,但是多年的素养告诉(压抑)她,必须和这个离职的员工这样。
我描述这段回忆的经历,并不是想要反驳或者澄清什么事情,我只是想记录一下,一个大公司高高在上的总裁,会被“迷惑”到如此程度,拥有这么多的偏见,实在有些唏嘘。
他说不会让一个新人一上来就带一个团队的,我之后的工作经历告诉我,是有可能的:一种情况是公司技术转型,急需从外部找一个技术牛人来带团;另外一种情况就是公司建制非常完善,这个新人带团,出不了什么大的岔子,即便出了,也不会出现危机。我后面的两个公司就是这样。
他说三天学会一门新的语言,我的开发经历告诉我,你即便你学会了很多们语言,在面对一门新的语言,要达到可以应用的水平,都至少两个礼拜,毕竟一门新的语言的发明,了解它所需要解决的其他语言没有解决的问题,都不只一周,而后我去的那个公司也是使用lua+C#混合开发,我花了一周的时间去看一本语法书,另外一周的时间去看它的解释器源码,在一周的时间了解它和C#的沟通和自身的瓶颈和优势,才开始真正的着手写第一行自己的代码。
他说Windows没有Mac的开发效率高,可是稍有常识的码农都知道,这只是一个平台之争而已,我自己也不会去反过来说,事实上只有自己熟悉的开发环境才是最有效的。之后我去了另外一个美国上市公司,上来就是一台Windows开发机(Dell工作站),一台改装过的高配 Mac mini,没有问你要 Windows 还是Mac,如果你的主开发机器是Mac——就像我的那位同事一样,他们的IT会给你换一台更加高配 Mac过来,公司没有人为一个平台之争去支付时间成本。我其实家里也有一台macbook pro,自己用的也挺好,毕竟给iphone开发游戏,有些时候还是需要到mac os下面搞搞的。
我想,这些偏见的产生,和他的信息来源、自身位置有很大关系,这和古代君王的困境是一样一样的。那么如何才能不被眼前的事物、人物所蒙蔽呢?我其实也只是知道“兼听则明、偏信则暗”的道理,可是真正实施起来恐怕难上加难吧。
或者,这些他作为一个总裁其实都懂,只是心中不平,只是想diss我?我是永远不会知道了,也只能在这个地方yy一下。
话又说回来了,我在心动的日子就这样结束了,这个不快的事情终究是我的不对,没有估计到我自己对于家庭这么依赖,对于新作项目这么渴望,对于加班时间这么敏感。我第四次走出心动大门离开的时候,天也还是黑了,不过时间不是很晚,七点多,整栋大楼灯火通明,没有几个人走出来。
不一会儿,那个猎头打过来电话,我也和她说了一下我的情况和现在已经离职的状态,她表示可惜,不过突然问我对全是英文办公的一个职位感不感兴趣……唉,猎头的职业病犯了。
心动的工作是干不了了,总要讨个饭吃吧,于是我给那个足球游戏公司的HR发去了微信,说想过去看看。
马特乌斯
渡劫还远没有结束,不好意思,我在这个公司也只干了2个月,遇到了很多人和事情,悟出了一些道理,对自己的认识又加深了一步。还且听我慢慢道来。
上篇说过,这是我最后考虑的几个offer之一,项目是新开始的,使用的开发流程和工具绝大多数也是我熟悉的,面试的交流也是非常的顺畅,甚至说有点心心相惜的感觉,然而还是那句话,“你永远不知道生活给你准备的是巧克力还是大便,需要你吃了才知道”。事实上,我在两年多之后的现在,对那时的具体情境已经忘得差不多了,那些人和事情我也忘得七七八八,虽然我通过日志回忆了一些内容,但还是有可能有失偏颇,只让我想起一句话,“历史没有真相,只残存一个道理”,是啊,我就用我残存的那些记忆来述说几个道理吧。
离开心动的那天晚上我就到了足球公司,快九点,我纳闷他们怎么也都没走,后来才知道,他们周一、四默认工作到晚上九点。我和几位老大们都聊了一下,我也简单说了一下我自己目前的状况,为什么会拒绝了他们,现在又屁颠屁颠的跑回来了,并且和他们坦然了一件事实,自己可能也需要看一下公司的具体情况,才能决定去向,因为对自己不是很有信心,可能无法胜任工作。他们也都同意了。不过,这里可能就埋下了之后一系列的隐患。
如果说,在心动遭遇的种种总结起来可以用一个词来描述的话,那么这个词就是“孤独”:我上班第一天没有多少人和我说话,更没有多少人来问我是否遇到了问题,大部分的时间我都是在盯着自己的进度条在“冥想”。而这个足球公司则让我遭遇到了另外一个词的危机:“信任”。
不过作为一篇中篇纪实扯淡散文小说,我还是需要说说其他一些貌似不重要的“边角料”的。
在入职第一天,一个HR带我入职走流程,其中包括“公司主要领导团队介绍”,“公司主要业务介绍”,“各种制度的流程”,“各种工具的使用介绍”等等,这个流程凸显了这个公司目前的状况:“年轻小公司暴发户,急需再有几款不错的产品来拓展自己的疆土”。他们想迅速的、强行的把公司拓展成一个大公司,其中一项制度就是强行给员工改名字,试图将自己的变得很有企业文化,可能起初他们在“小作坊”的时候,确实是有这个起外号的文化的,给每个小伙伴起一个足球明星的名字,但是在我进去的时候,公司已经拓展成近80人的中型公司了,仍然是不叫员工的真实姓名,而是用一个足球明星的名字外号代替。
这可能对年轻人不算什么,但是对我这样的中年大叔来说,就有些勉强了,在我一进公司报道的时候,HR就问我喜欢什么球星,我说马拿多纳,她说“有了”,我有点纳闷,什么叫“有了”?然后我根据“马”的第一个字,说“马特乌斯”,她就记录在案了,她随后解释,以后“马特乌斯”将会是你在公司的终身代号,(我)纳尼?!至于马特乌斯是谁,我来解释一下,98年世界杯我正好上初中,作为一个暑假每天必踢一场球的boy,不可能不知道德国名将马特乌斯的,那届世界杯是他的退役赛,也好像也是参加世界杯最多的球员之一。
至于为什么要“马”字当头,因为我儿子属马。
公司还有一个规定:新入职者,必须在一周之内完成一份考试,这些考试的题目就来自于这次长达1个多小时的新员工培训,其中一个题目我影响比较深刻,“下面那个是公司名字的全称?ABCD”,没错,这道题目我第一次答错了。
从入职来看,这家公司使用的是一种家长式的管理方法,而且随后的观察也应证了我的想法——大多数员工都是年轻人,90后,而领导者则是70后、80后。虽然管的多了些,但总比心动的那种“甩手法”要好得多。
现在冷静回想起来,我一开始从心动离开,然后去到这个公司的时候,和他们说,“自己可能无法胜任工作,如果不合适的话,我会自行离开”,这个话有些严重的问题。
从我的方面来看,从心动离职就已经对自己失望透顶了,子让没有之前那种傲视一切的雄心壮志,所以说了一番泄气的话,但是从他们的角度来看,我是对他们公司的一种试探,看看这个公司好不好,值不值得长期呆下去之类的想法。这个误会,就导致了信任危机,或者有可能只是加重了个信任危机而已,毕竟他们招的是一个客户端主程的职位,这个职位相当重要,他们势必会对担当这个职位的人进行一系列的考察,自然也是关于信任的问题。
从CTO口里说来就是,我“很犹豫”,后面没有说出来的潜台词是“这货可能干几个月就跑了”( 不幸被他言中了,囧)这个思想贯彻始终。首先是晾了我两个星期不做具体的工作,看他们已有的一堆代码,他们称之为“framework”(框架),一个不是在他们公司工作的外援专家写的。事实上,功能并不是很多,部分还是废代码(跑和不跑一个样),但是为了实现cto的所谓解耦合和分层,不得不加上。也许cto认为,找nb的人写好这个东西,我只需要派几个萌新复制粘贴一下业务功能代码,这个产品就做出来了,更糟糕的是,他们就是这么做的,所以一开始就要把这个framework做的好一些。
顺便提一下,这个外援会在固定的时间点来公司,并且会在家里或者他自己的办公室里改进这个framework。不过,这个外援没有外号,叫的是本名。
话说回来,后来我慢慢了解到,这个框架并没有成熟的游戏做底子,仅仅是外援的一些想法的实现,写和用的人不是一个,还想短时间做好,这样必定悲剧。看完之后,我的想法很简单,删除大部分的预设和代码,按照另外一套简单思想做,慢慢堆砌功能,可是。。。
之前说了——cto大哥认为我“犹豫”,怕我写一半跑了,就完全否定我的提议,或者直接找借口说,你找一堆人先商量一下。商量?写代码框架这件事,或者说做工程的这事,和主工程师有很大的关系,怎么可能获得一个更优的解决方案?
我在对项目的底层框架的修改权的争夺上面,还和那位公司的外援发生过些许矛盾,有的时候还会当着大家的面挣个脸红脖子粗的。不过最终直到我离职,都没有获得修改底层框架的权利,仅仅是在它上面再堆砌一些功能而已。
再跑个题,另外说一下足球公司的 code review(代码审查)大会,代码审查本意是你写的代码需要一个或者几个其他组的同事看, 他们会提出问题、发现问题,共同提高代码质量和大家对于项目的整体熟悉程度。我之前无论在什么公司干活,都没有做过审查,只是在书上看见过,认为这个审查和UML流程图一样是拖慢项目进度的没用的东西,所以没有关心(我后面会再提到个代码审查的)。
在足球公司,代码审查变成了一个大会,在会上,所有软件工程师都会参加,然后……然后,这个大会就变成了“批斗大会”,代码的作者极力维护自己的代码,其他人则极力攻击他的代码,吵得不行,要是这样的大会提高了总体的代码质量也就罢了,关键是,吵完之后,大家愤愤不平,然后只有会议结束才可以修改代码,但是等到大会开完,大家回到自己的工位,由于心里保护意识的强迫,完全忘了自己被攻击时候的事情——即使记起来了,也会有坚持不改的愿望。
题跑完了,得说回来。
最后,当然,他们还是接受了我一些建议,这些建议仅仅是他们没想到的地方(语法糖、tricks等),或者之前踩过坑,觉得不好的地方,我把写了4年,维护了两个游戏的代码给了他们看,他们才相信我的一些建议。
然而,还是那个“不信任”,HR主管让我向他们保证,一年内不会离开,否则就不会分配工作。这事情就觉得怪怪的,你想啊,作为企业,首先肯定是尽可能吸引招聘人才,其次是创造环境让人才发挥出最大的长处获得发展,最后分配利益让人才留住,可不是让他做一个保证,我一定干多久多久,不然你就滚犊子。我在向他们保证的时候,一直很尴尬,她也很尴尬,她坦言,自己是被团队要求过来和我谈这个的。但是我又一想,自己已经不想再换公司了吧,总要干一段时间吧,就硬着头皮答应了,当时心想,如果他们再让我签保证书,我立马摔桌子走人。
入职两周,做了保证之后,就进入了公司的日常,被介绍给同事,说我是新来的主程,以后工作分配听他的吧。然后在每日被一个妹子催,一天好几遍的催,让我给时间点,然后是开会,有时一天n个会,几乎无法写代码。虽然我很感谢他们对我所做的改变,比如因为要做20站地铁,他们把我的上下班时间调整了一点,但是比起大小周制度、一周两天加班到9点,就基本没啥好处了。
唉,说到这个“通勤”和“制度性加班”,我现在想起来还是觉得累。
先说通勤,足球公司在浦东,我租的房子呢,在闵行,不要问我为什么那么租房子那么远,因为我是一个有孩子的中年大叔,幼儿园、老婆工作距离才是第一刚需。我家里“外环路”地铁站最近,之前去心动的时候,直接做一号线十几站地铁到“上海马戏城”,其实也挺远的,但是我只呆了一天,所以通勤上的问题就不是十分明显,但是着这次是到浦东,中间还需要换乘,一趟下来,20几站地铁,在地铁上的时间就需要有七八十分钟,时间一长,人就难免有些浮躁。记得在2012年的时候,我曾经在北京坐过地铁31个站,一百二十分钟的通勤时间,坚持了七个月左右,放弃,而这次只坚持了两个月,果然是老了啊。
在北京那次离职的导火索,竟然是一次地铁上的吵架,不是我吵,而是另外两个人吵架,两个人吵架的声音在挤满人的车厢里的持续了5分钟,我心情差到极度,下了车,进了公司,就提出了离职。
再说说“制度性加班”,公司规定,每周一、四晚上工作到21点,每隔一周的周六加班,但是晚上5点下班。算下来并不是996,每周多工作10个小时,这对一个曾经996三年的猛男来说,应该不算什么,可是那是在08年,我那个时候孓然一身,干劲十足。可以现在……这样的制度对于公司其他人来说,并不算什么,他们大多数是孓然一身,并且也住在浦东。
每逢周一、四,夜里9点下班的时候,我只能打滴滴,不然就得11点才到家了。坐在滴滴车里,望着窗外,十分失落。一个月下来,我身心俱疲,感觉非常差,常常失眠,要靠每天喝vc泡腾片来防止感冒。
除了这些,再说一说工作内容的硬伤吧。
我之所以作为客户端主程进入公司,最主要是因为公司的技术转型需求,他们已经看到了Cocos2d的没落和Unity3d的崛起,决心将自己的核心产品都移植到Unity3D下面去,于是需要一个Unity3D的专家来带他们,这点他们真的做的没错,大方向对了,可是实施的方法却十分糟糕,核心原因还在于CTO不懂客户端技术(他是一个java服务器程序员出身)。他们在外部找到一个Unity3D的专家,但是兼职,于是需要一个全职的技术专家,他们确实低估了技术转型和找一个专家的成本,认为付一笔外包费,外加招一个人就能解决了,太过天真。事实也是如此,在我走了之后,他们也又找了一个技术大牛,也是一个中年大叔,他遇到的问题和我一样,后来也干了一个多月,就走了,走的时候,还请了劳动仲裁,理由是不给加班费(这个当然不是真实原因),可想而知,这是有多大的矛盾。
一切都是操之过急,他们其实有挺好的技术储备人才的,他们之前发展挺好,从一个作坊式的小团队发展成中小型企业,有一帮即忠诚又能打的兵。但是,CTO却遇到了瓶颈,又不知道如何组织底下的人去学习,一起提升,或者说组织了,但是在他们所认为的那个时间范畴内太慢了。
从这个公司的现象,可以看到国内中小型公司的一个状态和困境,其实这个足球公司还算好的,毕竟有一个较为清晰的发展路线,其他有些公司在“作坊式成功”之后,为了大而大,没有清晰的发展路线,盲目的扩大,这也想做那也想做,最后什么也做不成。“急”也成为他们心里的统一情绪,如果能在今天做完的,那就不能等到明天,但,大家真的忘记了一个显而易见的道理,“拔苗助长”,知识、技术还有企业文化都需要一个正常的发展时间,没有人能够越过这个时间鸿沟,否则必定掉到沟里去。
又有点扯远了。
离职的时候,我的心情其实是极差的,因为我这个自诩守信的人竟然又离职了。公司里的一些小伙伴各种挽留,请客吃饭,因为我的性格如此,在离职时刻尤为如此,八匹马都拉不回来。有件事情比较逗,在劝我留下的时候,在微信上,他们终于叫了我的本名,而不是“马特乌斯”,这点让我唏嘘不已。不过,我现在回想起来,当时如果不走,我的技术积累不会得到任何提升,当学习完lua的框架之后,我会停留在自己的舒适区里面。
我很少会在文章里面说别人的技术不行,毕竟技术这个东西是需要积累的,而且人和人的关注点也不可能一样……但是——我要说“但是”了,他们的技术真的不行,即便是管着10几个开发人员的CTO,他也要设计日常的编码活动,甚至说有一些编码细节问题自己还没有手下的人的清楚,心里还颇有些抵触——“我怎么会比你弱?”,他也陷到了“如何和比自己强的人相处”的困境之中。公司的技术建设在他的领导下,依然没有建立起良好的开发模式,使用的进度管理方式仍然是国内那种普遍的方式:“用人催”;没有CI,没有工作拆分,要想了解目前工作的进度,只能让一个去询问,问问所有的人,目前的工作怎么样了,记录下来,然后汇集成一个日报,汇报给领导团体。所有人,都是2D程序员,没有一个人懂3D图形渲染,但是却想涉足3D游戏引擎,这是难为那些老实的技术人员了,毕竟3D图形渲染要在全日制的环境下面学习一年才可能有些基础的认知的啊。
在我的日记里面,有一个只有标题没有内容的日志:“离职感受”,它创建于我离职的2018年年初,当初是想记录一下当时内心的感受和结论,但一直没有时间去写他,因为我当时这在经历一个巨大的梦魇。
EA的梦魇
当时来到上海撒简历的时候,我发现EA(Electronic Arts 艺电)在上海也有分公司的,而且在招人,我就稀里糊涂的在官网投了一份简历过去,按照国内官网招聘信息的尿性,基本上没有人回复的。我简历投递过去,压根就没有想要有个什么结果。一周后的某一天,突然我走在路上,接到了EA HR的电话,
“喂,你好,是xxx么?我是EA的HR GiGi”
“谁?!”
“EA,艺电的HR……”
我赶紧道歉加各种唯唯诺诺,不过遗憾的是,我当时已经答应了心动,但是我留了一个心眼,没有告诉她,毕竟对方可是EA啊,我说能不能发邮件到我的邮箱,让我仔细看看职位的描述,于是不久我就收到了邮件,虽然最后我在回信中婉拒了这个面试邀请,但是,我拿到了这个HR的邮箱地址。
在经历过“心动一日游”和“马特乌斯”过后,我到了EA,我现在还在EA,一年多快两年了,我的技术栈和视野有了长足的进步,但这些都是用一次次的梦魇换来的。由于我自己极度不适应大公司的人际关系和开发流程,而且职位上也在入职是被分配的非常低,我几乎每天上班都在考虑辞职的事情。
其中故事,还是听我慢慢道来。
在足球公司遭遇到了各种危机之后,我开始想起了EA HR给我发的邮件,回复问,我现在还有没有机会再去应聘EA?他们说可以的,他们还在招人,于是就安排了一次面试。工作十年,我都是裸辞,辞别上家再去找下家,这是第一次“骑驴找马”,感觉有些心惊肉跳。
EA上海公司在市中心最繁华的写字楼里面,那环境怎么描述呢?我在初中的时候看过一部偶像剧,《真情告白》,都市儿女情长的那种,里面男主必定是高富帅,而电视剧里面的公司的各种环境和里面的各种穿衣打扮的人物,像极了我那天去面试所见到的一切。唉,刘姥姥进了大观园。
面试那天我发挥的并不是很好。一开始是笔试,笔试和其他的游戏公司笔试差不多,并没有太多的算法题目,但是我却答错了一个基础的知识题目,这个基础的题目在其他工程师看了,用Unity3D几年的人,不应该搞错的,我其实犯了一个错误,把其他语言的特性想当然的放到了C#的语言特性上面,弄了一个乌龙。
然后,在面试的问答环节中,我在某些Unity3D处理细节上也犯了同样的想当然的错误,我自己以前写过引擎,对于文件的读取操作是在底层有过缓存的,所以在使用Unity3D的那几年中,我也想当然的这样认为,还有很多问题,比如UI的如何优化问题,我甚至都没有考虑过,虽然我的游戏在线上跑了好几年了,现在回想起来,那些闪退、发热等性能问题,可能就是对这些问题没有研究透彻。其实这些问题我在一开始使用Unity3D的时候,是遇到过的,也对我产生了一些困惑,我却没有去深究。
我承认,面试里,我的工程师“想当然”的毛病犯了,而且被专家发现了,这第一印象就没有弄好,以后想改变,就难上加难了。不过最后,HR给我的反馈是,我的水平没有达到他们所期望的那些高度,但是我也算通过了,只是薪水不能像之前要的那么多了,让我考虑考虑。
这是第二次降薪跳槽,第一次是心动到足球公司。但那时,EA的公司知名度、工作环境啊,甚至包括在面试过程中不小心看到的他们的升降办公桌,都让我魂牵梦绕,再加上EA的办公地点在市中心,我只需要一个小时通勤时间,而不是之前的两个小时。
那就去吧。
入职的第一天,自己用上了宽大的可站立式办公桌,高级的开发工作站,两台显示器,我虽然是最低级的工程师,但是这些都是EA每一个工程师默认的配置,后面还有一台升级过配置的 Mac Mini 做第二开发机和一个iPhone作为开发设备。中午的时候,领导还按照公司规定,和自己吃了一个午饭,六点半下班的时候,我不敢先走,但是看到其他同事默默的拿起背包,按时离开了工位,我也在七点的时候默默的立刻了几乎空无一人的公司。上下班不用打卡,只要自己不耽误团队内部的工作协同即可。第一天下班,自己心情好极了,感觉来到了天堂,就等大干一场了。
一般来说,梦魇的开头和美梦是差不多的,只是后来一直掉一直掉一直掉……
这个梦魇的成因,一方面我需要恶补很多知识,因为以前我自己兼职了客户端、服务器、ops等职责,懂的是“广”,但不“精”,那个时候创业,只需要能够跑起来就可以,并不会在一个点上深挖,因为让游戏跑起来上线试错回血,才是首要目标,我的技术中很多“想当然”的部分就是那个时候留下的恶习。
另一方面,是进入“大公司生产模式”的极度不适应,这种不适应方方面面都有,从工作方式和日常人际关系,甚至在走廊里面遇到一个见过单不认识的同事都不适应。后来我才渐渐地在LinkedIn上面找到了那些所谓的“职场生存指南”的存在意义——我以前的小公司,甚至呆过的一两百人的中型公司都不曾有过这些问题。
那段时期的自己,创业公司的失败,找工作的各种折腾,阴霾缠绕,好不容易找到几个工作,还被我在短短两个月的时间里面离职两个。自己不自信,而又十分希望通过某些工作上的成绩去证明自己的能力。一个对自己能力定位成CTO的人,极度想要在一个陌生的团队组织里面找到一个自己合适的位置。然而,这个想法一下子碰到了大公司里面的“螺丝钉”工作思想。
另一方面,公司招聘之后,在合同里面写着一些话语,感觉自己的就是一个小领导,什么“领导团队”之类的话语,现在想起来才知道,这个招聘策略是大公司的惯用策略——招聘大能力的人来做一个螺丝钉,也不是说螺丝钉不好,其实是一种工作思想的转变,而我那种小作坊式、全栈式的的工作法与之发生了强烈的冲突。
这段时间我不断的学习新的知识,什么“帧同步”,“UI优化”,“CI”,“GC free”等等的东西,甚至包括英语——因为团队里面有个外国人,而这个外国人确是老大级别的人物,我的老大也得听他的意见,然而,我却直接听不懂他的话,一时间巨尴尬。我在地铁上,路上都是在学习,有时候也会加班到七点多才偷偷溜走(公司规定,加班需要申报,不然会视为违规加班),那段时间真的是成长很快。记得刚入职没多久,还没有年假,突然小孩子生了传染病,需要隔离在家一周,不能去幼儿园,我不得不把老娘从老家召唤过来帮忙,搞的自己狼狈不堪。
除了学习,当时还发生一件对我来说很不得了的事情:我和我的顶头上司发生了一个剧烈的冲突,气得领导气急败坏地拍桌子走人,现在想起来真是有些不值得。事情的其实就是关于游戏框架里面的一个子系统怎么设计的问题,这个问题我自己现在想起来,一部分问题是那位拍桌子的领导解释任务的能力太弱,另一部分是我理解起来出现了偏差,我把这个系统的职责想的太过大了点,设计的太过复杂了,我们两对一个名词的解释出现了严重的不同。我们在工位上面争执了起来,后来又把小组的人召集起来开了一个小时的会,所有人都试图给我解释,我那个时候牛脾气又正好犯了,于是消耗的时间太久,最后领导拍桌子说,“你的这个方案不予通过,你的拿出别的方案,就这样,散会!”,他自己的就走了,留下几个小组成员和我,我当时意识到这次犟大发了,赶紧用乞求的语气问大家是否能够帮我一下理解这个问题,好在,小组里面的几个人最后又花了十几分钟的时间给我把问题最终讲明白了。
这次的经历,让我了解到,公司里面的那些是有脾气的,不能得罪的,那些人是你的盟友,那些人解释问题比较让人明白,那些人说话含糊不清,等等等等。等于这个小小的技术讨论会成为了我的职场启蒙大会,我从此开始有一个小公司的职员开始向一个大公司职员转变。
然而,那个时候——应该说从此半年多,我没有一天不想离开EA。我的日志本上,写满了关于大公司的弊端和阴暗面描绘和思考。除了那次比较夸张的冲突,其实我在日常工作中也和这位有着明显社交人格障碍的老大有着小冲突,很多时候,我自己也是强压着自己的怒火,秉着“农开森就吼”(上海话,你开心就好),尽量和他和平相处,毕竟我是个搬砖的,毕竟我已经跳了两个公司了。
先把人事矛盾放一边,我们来说说技术提升的这件事情,应该说是如何开发游戏这件事情,我有了更新的看法。
首先说一下CI(continuous integrate 持续集成),在这之前,我从未听说过各个概念,在这之后,如果我开一个新项目,CI在我的第一行代码之前就要建立起来。在我之前的开发过程中,制作游戏可运行的版本,那是必须程序员参与并且主导的,而CI其实就是把这个小小的过程交给机器做,而主导打包过程的不是程序而是测试人员,他们来告诉机器应该用哪个版本打包出来测试和交付上线。
我在以前,任何打包都要一键生成才行,也就是说,在程序员的机器上,必须做到,只要点一个按钮就能自动的把这个事情全部完成,编译,拷贝,上传等等,然后交给测试人员去测试。可是一直都没有想到过把这个过程让一台专门的机器去做。如果把这整个过程交由机器去做,整个工作流的驱动方式就会发生根本性的改变。我不知道这种工作方式是不是我在这几年创业的时候突然间普遍了整个IT,而我却不知。
其次是敏捷开发的团队合作、开发工作流。这个流程我一开始完全就是懵逼,开例行站会的时候,以为是国内的那种工作安排会,还去试图抢别人的工作,还问这问那,搞得有些异类。
我还是说说以前我是怎么工作的吧,以前的开发是以任务为驱动的,策划设计出一整套系统,通过会议审核通过之后,然后交由主程主美去分配任务给其他各个人,然后汇总形成功能交付策划、测试验收。这个方式依然不变,但是执行过程却变的更加细致了。以前如果要开发顺利,必须有一个人来强行督促,这个人需要有一定的权利,熟悉策划文档,对美术也很熟悉,对测试人员的各种流程也需要很熟悉,一般只能是项目经理或者主程,为什么说这个人很重要呢?因为只有这个人去“挤牙膏”,才能有成果,如果这个人放水或者请假或者不称职,那么团队就会处于各种散漫之中,如果这个人能力有限,对程序懂得不多,对美术懂得也不多,那么这个人推动项目的时候会遭遇各种说辞,“策划文档太妖”,“程序效率不高”,“美术资源太费”等等拖慢进度的借口,因为人都是“懒”的,他知道你不懂,所以说出一些借口来试图拖慢进度,毕竟晚一天干完就多一天工资。
这就是为什么一般国内都会把项目分成拿来作为诱惑,来加快项目进度。
这也是为什么一般好的项目经理都是程序做的好的人转的,因为他懂程序代码,一般的小喽啰忽悠不了他。
这也是为什么国内好的项目一般都是老板起早贪黑亲自抓的,因为老板权利最大,最适合“挤牙膏”。
而敏捷开发只用了一个办法,就解决了这个矛盾,那就是“计划”(Planning),这个计划周期一般是两到三个星期,它会把这一个周期里面的任务拆分成一个个的任务,每个任务可以拆分多个子任务,子任务还可以再拆,最终会把这个任务拆成可以在一到两天内完成的任务(一般是按小时算的)。
然后,在没有分配任务之前,就开始估点(Scrum),这里估点的方式也是别有一番风趣,一开始把一个适中难度的任务拿出来大家讨论,定为3点,然后大家把1、2、3、5、8、13的牌子拿着,一起给一个个任务评分,如果任务和标准任务一样,就3点,如果只有它一半左右的难度,就2点,如果两倍于它,就5点或者8点,以此类推。为了防止先举牌的人有锚定效应,还让大家一起评分。如果大家的估点差异过大,最大的和最小的就pk,最终确定一个点数。
估点完毕之后,就开始分配任务了,会按照自己的喜好认领,也可以指派,应为这个时候所有任务的难度都是一起决定的,所以在任务的难以程度上几乎也没什么异议,而且在自己认领任务的时候,也不好意思老是挑选简单的做,大家的工作时间都是一样的。
在每一个计划周期之后,还会有一个回顾(Retrospect, postmortem ),看看大家谁的任务没做完,为什么没有做完,谁只领取了简单的任务但还是有问题,这个时候大家自己也有个认识,自己领的任务是不是太难或者太简单了,或者有谁阻止了自己的任务完成速度(因为有些任务有依赖)。
当然,在真正执行的时候并不是特别的严格,但是确实在很大程度上避免了我说的“挤牙膏”和“找借口”的方式,利用团队的力量把这个问题解决了一大部分。当然,他的正常实施还需要一定的软件配合,一些必不可少的统一思想,一些非常高级的构架师,毕竟这里最具用挑战也是最重要的一个部分就是拆分任务和估计点数,如果每一个高级工程师带领,大家没一个统一一点的技术背景,那持续的时间可以比开发还要费事,估点也是一个体力活。
我罗里罗嗦的说了那么一大堆,你以为我在EA的日常就是这样开发的了?那你就大错特错了,我在那里只完整的经历过一个计划周期(两周)的试行估点,就放弃了这种,不是我放弃的——我只是个板砖的,做决定的老大们还是觉得计划预先拆分数月的工作量和估点太麻烦,后来还是变成了老大分配任务自己估点的方式进行。
所以说即便在EA这样人才济济的公司,依然面对不了太过激进的工作方式改革,步子迈大了会扯到蛋。不是这种方法不好,而是,任何一个团队都有意这最适合自己的开发方法,不是这个方法有什么大的问题(一些别的公司就是这样开发的),而是说,EA这个团队不适合完全按照这个敏捷开发的方法开发东西。
我在EA还学到了很多东西,比如如何意识到英语是一个很重要的事情,因为我发现公司里面等级越高(钱也越多)英语水平也就越好,除了这个原因,一个更重要的发现是,很多开发的知识几乎都是英文的,GDC(game developers conference)信息量非常大的开发者讨论会议,使用英语把很多几乎是一线的经验介绍给开发者,这些都是英文的,没有翻译资料,相比于之前看书的途径,在Youtube上看GDC的开发者讲座来得更加真实和实时。
我在EA的期间还看见了所谓的“大公司病”、“官僚主义”。就是,当我发现一些不舒服的地方的时候,看不惯的时候,我自己以往的经验几乎无法获得解答,反而是在看LinkedIn的一些文章的时候,却感觉立刻找到了解决方法。现在,我在新加入一个团队的时候,也会像一些“成熟”的职场人士一样,偷偷地在组织构架下面看其他不认识的人的头衔,哪些人是领导,哪些人是和自己一样的板砖的,也学会了那么一点点阿谀奉承,也学会了一点点如何让领导觉得自己是在很努力的干活(而不是真的很忙),也学会了如何面对一个陌生的同事从对面走过来的时候的尴尬(装着没看见)。
来EA的前几个月我一直都是和团队几个成员一起出去吃小店餐,以便融入团队,后来肚子不太舒服,就在全家买的东西然后坐在店里吃的,我开始都不敢把食物拿到公司吃,而现在则是一个人去买饭,一个人拿回来,然后一个人坐在公司舒服的沙发上吃,用着公司的微波炉、热水、纸巾……虽然我看到很多人都会经常形成一个小团体一起吃饭,但是我也看到有和我差不多的很多独自的人,一直都是一个人,我和他们在路上碰到了,也只是点点头,简单说两句不过心的话。
职场人生就像那首儿歌一样:“找啊找啊找朋友,找到一个好朋友……”,我们不断的寻找人生的朋友,可是随着年龄的增大,朋友也越来越少了。
我在EA短短不到两年里,换了好几个组,好几个顶头上司,甚至出现过自己的上司和自己不是一个组的情况。但作为一个人支持过整个团队技术开发的创业小金刚,我一直都保持着高昂的斗志激情,很多事情都抢着做,但是在最近一次的6月大评审的之后,我彻底颓废了——升级失败,我好几次主动的提出过我想要升级的愿望,我按照自己的评价,我对公司做的贡献一直都是很高的,可是面对整个公司的颓废期(股票下跌得厉害),依然还是那个最底层的技术人员,也就是2级软件工程师,随便抓个人都比我高。我可能会另外写篇故事来说一下这个升级的事情。
我的南下求职记到这里基本上就已经结束了,我从外表行为上终于变成了我以前嗤之以鼻的那种人,虽然我在EA里面还有更多的职业生涯感悟,我也记下了数篇日志,但是也已经不适合放在这里了,不然这篇记叙散文就会变得无穷长下去。就在我写到这里的时候,我在EA基本上呆了两年了,这两年的日子里,自己又老了2岁,心中的一些火焰基本上已经归于平静,然而生命不息折腾不止,我显然不会一直停留在这里。
<全文完>
在写毕业设计四处寻找资料的时候偶然看见了这篇文章
感觉发现了宝藏
看见了过来人的经历,感觉其中的一部分与我的实习经历是何其相似
唯一的区别,大概是博主选择了离去而我选择苟着拿到了实习证明
疫情当下,工作也不好找,感觉以后的生活充满了迷茫
自己只要是积极向上的,拥有一定处理事务,完成任务的能力,那就很好了。迷茫是避免不了的,过来那段时期就会好了。