从华为到亚马逊再到Oracle!我经历了沈阳、南京、北京和西雅图四个城市
点击上方“开发者技术前线”,选择“置顶或者星标”
属于开发者的文章第一时间送达!
本文是四火 十几年编程生涯,从华为到亚马逊,再到Oracle任职,经历了沈阳、南京、北京和西雅图,从大学到现在一直坚持写博客,大约千篇文章,包含了技术图谱,职场经历,生活阅历,从国内小城市到国外大都市的一路打拼,值得读者去思考!
作者: 四火 原文地址:http://www.raychase.net/allarticles
活了快三十年,出生在小小的县城,温和而且充满回忆,读书开始,逐渐接触到城市的生活。真正长驻的城市,就只有题中列的这四个而已,自然印象深刻,如数家珍。只是视角可能有些奇怪,而且思路繁乱,略带流水账性质。
沈阳
沈阳是我读书时候呆着的城市。在这以前,其实没有大面积接触过北方人(所谓“北方人”其实有诸多定义,比如以长江为分界线的,以秦岭淮河为分界线的,而我一直以黄河作为分界中国南北的标志),但是这一次算是一步登天到东北。沈阳这座城市很漂亮,但是因为留有重工业化的痕迹,空气不算干净。我在沈阳第一次接触了各色烧烤(小时候我哪接触过这东西啊),烤肉、烤蔬菜,自助烧烤。学校在三好街边上,一开始觉得这帮天天折腾电脑的人,而且软硬通吃,应该就是所谓的民间高手了。
我们学院成立不久,风气不怎么样,反叛的学生不少。很多老师都是从别的学院借来的,看起来也不怎么爱教,还因为这事儿闹过投诉,闹过罢课。我记得有一次学校要求学生早上六点钟下楼去唱歌做早操,我们都懒散惯了,根本就不可能服管教。第二天早上整层宿舍楼全部门窗紧闭,导员过来挨户敲门也都装不在,就是不开。总的来说大学里面受到的约束很少,这一点我觉得受益良多,和压力山大的中学生活相比,可以有大量的时间做自己喜欢的事情。
在沈阳去过世界园艺博览会,周边旅行去过丹东爬凤凰山,去过长春号称寻找中国电影的历史。北方生活的节奏是缓慢的,特别到了冬天。我觉得东北人很懂得享受生活,两瓶啤酒+花生米,这样的搭配在哪里都可以见到,火车上、庭院里、饭馆里。到后来逐渐喜欢上了旅行,但是很少很少再去东北。去过一些地方,有和南京相似的江南小城,有和北京相仿的国际繁忙都市,也有和西雅图一样的安静城市,但是却没怎么再见到和沈阳类似的地方了。
和许多南方来的同学不一样的是,生活适应得还算可以。而且我挺喜欢东北话,当时跟着宿舍里的哥们学了不少,直到现在我还能说一些。几年以后,有次我去剪发,一听那口音就特别熟悉,和我以前一个同学特别像,于是我说“您是不是鞍山的”,她吓一跳说剪了那么多年头发了,能听出她是东北来的人很多,能精确到城市附近的我是第一个,更何况我还不是东北人。
气候上面和很多人一样,更喜欢夏天。冬天白天短,而且一到寒冬,就不太愿意出门,屋子里面有暖气,大家都舍不得开窗,宁可让小强们爬满桌子和床。夏天的沈阳并不比南方凉爽,但是印象中宿舍里晚上没有电,因此也没有电扇,有一个暑假我没有回家乡,是在沈阳过的,有时候是觉得晚上热得挺难捱的,不过也一样过来了。沈阳的空气很干燥,洗了的衣服当天就干了。和当地人说起江南的梅雨季节,衣服都会发霉,他们觉得不可思议。
南京
南京的回忆更加鲜活,大部分时间都住在雨花台区,工作关系平时闲暇时间不多。当时工作的繁忙程度,反正现在想起来都觉得吓人。基本没有周六,周日也需要补觉,因此很遗憾没有好好欣赏和感受一下南京的温度。当然,这可能和年龄和经历也有关系,当时似乎没有觉得很想去走一走看一看,就是埋头在专业的东西上面。
周日下午有时候我也会跑到南航去和那些大学生一起踢球,要不就是小区附近的篮球场,在夏天打球的人特别多,普遍块头也没有东北的时候那样人高马大。打完球以后,啤酒+烧烤,或者是南京最有名的灌汤包,这简直是最美好的享受了。
去过玄武湖,去过夫子庙,也去过紫金山好多次,印象中南京人并不特别热衷于推销南京的景点和风情。总的来说,算是一座比较温和的城市,所谓吴侬软语,南京话听起来也比较好分辨,毕竟它的位置从气候上说不南不北,要是再往南方言就难懂了。
到现在我依然觉得虽然工作繁忙,但是在南京的那些经历令我至今受用。无论是工作还是生活,毕竟这期间是刚踏入职场踏入社会的最初几年,而华为这样有点接近学校的氛围,还有南京这样温和的城市环境,给了我一个相对舒适的缓冲。等后来我离开,再去别的节奏飞快,而且人言风语更繁杂的城市,就觉得自己已经做了一些功课,不会觉得唐突。
在南京工作的一个好处是回家方便,坐五个小时汽车,就到家了,赶上节假日就可以回家和父母家人团聚,这种方便的出行,自从我离开家乡以后,就再没有过。但是南京工作的问题在于,毕竟还是个不够大的城市,而且对于中国的互联网环境来说,南京的机会还是太少。“一半是华为,另一半是华为的客户”,这就是南京软件行业的一个侧脸。我记得当时我确乎是想在南京长期安家的,但是很快就改变主意了。
北京
于是我来到了北京,真正的现代化大都市。无论是生活、工作,视野都觉得一下子开阔了很多很多。工作一下子因为从一个忙得出名的民企转移到一个朝九晚五正常上下班时间的外企,感觉生活突然轻松好多。印象最深的是刚在北京入职的一两个月内,每天下班,回到租的的房子,吃完楼下的盖饭,打了会儿游戏,一看表才晚上八九点钟,这个时间在南京的时候我可经常还没下班呢。
也是从北京的时间开始,慢慢我喜欢上了爬山。其实在北京爬山很不容易,我也没有车,北京的山脉都在城市的西面或北面,而我住在东南角的四惠东,所以一般都要坐两个钟头的公交车或者地铁,然后往往还需要打黑车,才能到达山脚下。当时有个在天涯上班的同事,我们俩总是一起出行,后来他回广州工作了,我也就没有伴儿一起去了。
其实直到现在,若单纯论生活质量,综合来看我依然认为在北京期间是最高的(我在知乎上面回答了 北京周末的问题 ,还被吐槽说“北京天气好”不对——可那个不是天气不好,那个是空气不好)。每天能够步行上下班,家里有可爱的小狗,周末生活丰富,大小体育馆都很近,办了会员卡,常去打球。还可以参加各种线下聚会,接触各路牛人,天气还很不错,北京下雨的天气很少。当然,不能不说一说美食。相比沈阳和南京,都不算在繁华的地段,饮食方面选择很少,而在北京期间,我一日三餐现在回想起来其实相当丰盛,早饭从中式的稀饭包子茶叶蛋油条到西式的面包蛋糕三明治,基本上可以长期不重样;午饭和同事们一起下馆子,相较于北京的房价,饮食上的消费简直是太便宜了;晚饭在小区附近吃各种“清淡”一点的东西,比如板面,再鲜榨一“胖杯”猕猴桃果汁,这样的生活至今都回味。
记得以前总结过,除了房价、交通和空气污染,北京各方面都是很有优势的,比如医疗,比如教育,比如互联网氛围。但是这三大问题,确实也给我带来了许多困扰。从南京的最后半年开始,我得了一种像是哮喘一样的怪病,特别是天气不好的时候,总是觉得喘不上气,并且总是咳嗽,按照哮喘治了大半年也不顶用,医生也搞不清楚原因。这个问题在北京两年半期间,反反复复,我隐约觉得也许这和空气质量有一定的关系。这个症状直到我后来离开北京,才慢慢好转。
总而言之,现在我依然认为,如果哪一天回国工作,我肯定还会选择北京。在那里也许待过的时间不久,却给我留下了深刻的回忆。我们可以不在北京买房子,这一笔钱可以大幅度提高生活质量;我们甚至也不需要买车,交通已经足够发达,我们只需要找一个自己喜欢的生活环境,找一个开心和自己觉得能实现价值的工作。
西雅图
从北京到西雅图算是一个很大的改变。用一句广为传说的话来概括就是,好山,好水,好无聊。我把北京慢慢喜欢上的爬山远足带过来发扬光大了。一年我会去五十个以上的地方远足(地点都 贴在这里),平均每周至少去一处。即便天气不好,只要雨不大,我也不介意在雨中漫步。
西雅图的天气和北京大不同,一年一百八十多天是雨天,注意我说的是雨天,剩下的天气里,还有一部分是不下雨,但是也不放晴的。而这些糟糕的天气,主要分布在冬半年,西雅图的夏季其实很吸引人,天气又好,白天又长,还不热,也没有蚊虫(这个很神奇);但是冬季简直就像换了张脸,一周七天得有六天下雨,剩下一天能不能见太阳还不好说,而雨还下得淅淅沥沥,不干不脆,有点像家乡江南的梅雨季节。有人说,西雅图的下雨天数每减少一天的话,房价会上涨 1%。全年看,温度没有特别低的时候,很难相信它的纬度其实和哈尔滨差不多。
但是,所谓的无聊可不仅仅是天气造成的。一方面是因为没有选择住在 downtown,远离了喧嚣,也远离了热闹(这是一种很典型的生活方式,到“城里”工作,在“乡下”生活);另一方面则是,本来这里的人口密度就低,没有像国内似的大小社区商店,什么都卖,而且似乎大家也不太在晚上压马路,也许酒吧有人,也许派对有人,但是大街小巷的商店好多都关门了。有些朋友对我说,没事啊,清静多好,我喜欢清静。可是,这样的生活只有自己长时间体会了才有评判权,我觉得大多数从在城市里热闹惯的朋友,都不会喜欢这样冷清的氛围的。
很多朋友问我,有没有歧视。其实哪里都有歧视,但是通常情况下,在美国不太有人随便 judge 你,这一点我老婆和我都深有感触。比如对于一个穿着样貌奇特的人来说,要是在我的家乡,走在大街上,会招来各种目光和非议;再比如对于残疾人,无论是正面的或是背地里,都能见到各种不公正对待的事情。但是在这里这方面就好很多,这和它本身就是一个移民国家有关,人来自五湖四海,没有相对强烈的视角和标准,人们的包容性就会好很多;另外,公开场合歧视,特别是种族方面,是属于非常严重的问题,因为这个打官司的例子有很多,因此绝大多数人会有意识无意识地避开这一雷区,哪怕他内心里这杆秤是不平衡的。
对于医疗系统,我想额外提一提,在美国看病是非常非常贵的。如果你是穷人,没什么财产和收入,那么可以在大病情况下走急诊,申请免账单(小病就自己扛着吧),但是对于大多数人,看病是一笔非常大的开支。举个例子,去年 12 月份我因为一些神经系统的症状,做了一次脑核磁,虽然早有心理准备,但是账单收到的时候还是吓了一跳,核磁费用五千多美金,人工费用另算(核磁医生护士的诊查费用是另收取的,要知道看一次医生,哪怕什么都不做,花十分钟问诊,然后嘱咐回家喝水睡觉去,就得一两百美金)。即便有了保险,依然是一笔非常大的开支。另外,美国的医疗其实无论是诊断还是开处方,都非常谨慎,有的诊查还需要保险公司审批,这些都导致了整个流程缓慢无比,有的病人就这样给“拖好了”,也有的就“拖死”了。国内的医疗虽然混乱,但是无论是价格还是效率,都是美国的医疗体系远无法比拟的。
生活就像做软件时候的技术选型,你选择某一项技术的时候,自然有优缺点,所有技术都有局限性,你得到了好的一方面,也要承受坏的一方面。多一点选择余地,是我们所有人所希望的,但是所有的生活的两面性都需要面对和承担。无论是好是坏,都是体验,多样的体验是宝贵的,无论怎样的天资和努力都无法获得,只有亲自去经历。而人,也是在体验中慢慢成长和完整起来。
我在华为的五个瞬间
从 08 年 7 月 28 日正式加入华为,到 12 年 1 月 17 日正式离开华为,三年半的光阴,我一直没有机会好好整理一下我的行囊。现在回过头来,却又发现故事太多,无从下笔。也罢也罢,挑选我在华为五个令我深刻的瞬间,这些故事我带着不同的感触经历。不管现在开放的互联网上如何风言风语,不管在其中经历了多少欢乐或者悲伤,有多少感慨和抱怨,我依然非常感激华为带给了我这波澜跌宕的时光,谢谢我的朋友们,是你们,一直陪伴我走完这段旅程。
我参与的第一个项目
我参与的第一个项目是服务端的一个产品的研发,做一个涉及到营销业务的需求,对当时的我来说,业务逻辑还比较复杂,而且实现基本上要落到存储过程中实现;接口层只需要实现一个 SOAP 接口即可,相对来说简单得多。那个时候还没有开始大规模推行敏捷实践,而且设计文档也较为讲究,项目组成员,尤其是结对测试,给我的方案提出了相当多的疑惑,被迫我一头扎到业务里面去,到最后,好歹把流程梳理清楚。
我实现的整个代码量只有 2K 左右,但我依然感到自豪,做了一个完整的版本,体验了整个基于瀑布模型的流程。期间,项目经理在项目中及时的反馈和自我反省,给我留下的深刻印象。
北京出差的经历
出差时忙碌而痛苦的,在两个半月的时间里,要搭建环境、调测、维护、保障、客户约谈、交付等等等等,算是真正的接触一线。
工作地点开始在上地的机房内,每天对着 N 台庞大的机架,巨大的噪音震得我脑袋直疼,出了大楼耳朵还是嗡嗡叫个不停。我们就拿纸箱子当桌、漆包线轴当椅,通宵若干次,硬是坚持到基本的调测完成。
之后搬到了金融街,每天接电话接到吐血,经常遇到需要同时接两个电话的情况,其中有一周左右还需要 24 小时支持,一晚被迫起来好几次处理问题,天天挂个眼袋,看谁都是凶神恶煞的眼神。
从零开始做,一个大型的电信门户项目
这个项目最开始只有几个开发人员,到后来发展到若干个分支版本累计足足有数百人的大团队,我们视这个项目,就像看自己的孩子一样,看着它从无到有,逐步成长、成熟。
开了动员会,接了军令状,大家充满热情,心里却都又没有谱,我们就是在这样的状态下动工的。最开始计划一周多的迭代,足足做了将近一个月才完成。我们缺少的是这个领域内全方位的经验,产品的初创总是阵痛的。我一直觉得,一个程序员的成长,不能只经历那些成熟稳定的项目,一定要去体味那些从无到有的过程,无比的激动人心。
在项目刚开始的这段时间内,我们每天都在 9、10 点钟或以后回家,每天除了贡献许许多多项目的想法,做设计、搭框架、立规约,还充实自己这方面的内容,那段时间的自己,真可以称得上十足的奋斗者。
一个失败的方案
这个方案的罪魁祸首是我。一个关于页面集成的方案,即一个页面要引入其他子页面,有多种可以实现的方式。通篇都是我完成的方案设计。最开始使用 ajax 引入外部 div 的方式,被证明页面复杂、结构混乱,而且很容易遇到页面上的问题;后来我们还考虑过用 iFrame 等替代方案,都没能成行。最后,我主导设计了把被引入的页面以自成 plugin 的形式加入到父页面所在应用的方式,另一个同事细化了这个办法,实践证明这是一个比较好的方案。
这件事情对我触动很大,我做了回溯,把我自己的总结和完整的问题追加到了项目组团队的博客上。程序员总要经历大大小小的失败,没有失败就没有成长。之后再做一个设计的时候,我会想,哪些特性才是实际需要的,怎样去避免过度设计和冗余实现。
持续的性能优化
性能优化对于任何一个大型网站来说都要涉足。有的性能和稳定性问题定位复杂、解决困难,非常折磨人。
最开始我以解决实际的具体问题为主,辅以一些通用的、框架官方推荐的优化方案,并且处理了一些开源框架内部和我们自己代码中不合理的实现,如成为瓶颈的全局锁等等。
之后的阶段我开始做一些简单的页面静态化,这部分对性能提升有很好的效果,但是它是双刃剑,也带来了一些业务展示方面的问题。
随着页面静态化方案的不断落实,我总结了一些数据采集工具和问题定位工具,参考了一些互联网网站的性能优化方案,给项目做了从 Linux 平台参数调优到代码调用分析的全面体检,并且给出了后续项目在性能方面改进的方向。
PS:关于那些我要感谢的人
还有无数像以上一样的故事,都是你们陪我一起经历。没有华为,我不会成长成为现在的自己;没有你们,就没有我的今天。愿你们一切都好。我要尤其感谢的朋友们包括:
WWJ:你是我的导师,我新员工阶段对我影响最大的人;
荣哥:从你身上我阅读到了执行力,一个最脚踏实地的优秀项目经理;
晓君:你是我的好朋友,我们一起吃饭、一起加班,也一起聊天,你是我最愿意分享技术、体验和感受的对象;
YL:你负责的性能专项测试是我经历过的当中最优秀的,没有之一;
职业生涯下一站
在亚马逊已经呆了五年多了,想起 第一次换工作 的情形仿佛还历历在目。如今,就在我还有半年多就将迎来我第十个工作的年头,经历了 骑驴找马的面试 ,不久我将迎来第二次职业生涯的重大变更,下一站:Oracle,Bare Metal Cloud 组。
我的工作经历,可以用多样来形容,也可以用乱七八糟来形容。其中的原因有客观的,也有主观的。客观的原因是项目和团队的需要,本来工程师团队如同资源池,就是要去解决不同的问题,这些问题是由当时的境况和市场决定的。主观的原因是,我本来就是一个领域涉猎相对广泛的程序员,而且兴趣三年两头自己都弄不清楚,有时候这未必是好事,但是这也让我得以尝试各种风格的项目和团队。
具体来说,毕业之后进入我的第一家公司华为,做过服务端 service,之后到电信服务商的现场开局;短时间几个月内也尝试了一下移动端 iOS 的开发,觉得兴趣并不在此;接着从无到有快三年时间做了一个大型的 portal,这段时间可以说是我初步强化 full stack 技能的时期。离开华为后,加入亚马逊,先在全球配送的团队学习业务;然后到销售预测团队接触了一点 machine learning,维护一个 HA service,也做了不少 data visualization 的工作,期间算是开始正式和 big data 打交道;之后发现自己对大数据的处理是个短板,就来到如今的团队,用 Spark 在 EMR 上为海量的商品计算成本,同时也花大量时间给亚马逊内部开源的分布式 workflow 贡献代码,这段时间也是我对分布式系统学习最多的时期。
如上,回过头来看,很多领域都有涉及,优劣各具。能够有这样多不同技术领域的经验,这于我自身而言我显得宝贵,但又折射出,自己却依然没有选定一个明确而具体的方向,还停留在一个广泛的摸索学习阶段。我给自己的计划是,还有四年我就三十五岁了,到那时我希望自己可以有足够的经验来评估这一切,既包括深度,又包括广度,从而逐渐明确一个未来想专注的方向。而现在,还有四年时间供我继续尝试和补白。这里有一个平衡,像跷跷板一样,一头是自己熟悉的,一头是自己不熟悉但是想去熟悉的,前者更自如、更能发挥自己的优势;后者则往往是兴趣之源。把握好二者的平衡是我的一个目标。既要能让自己掌握的技能有用武之地,又要找到自己不熟悉的兴趣点。
想起在亚马逊期间,学习了一些 AWS 的知识,cloud 是个非常值得关注的领域,但是实际上却从来没有过机会在真正的云团队工作,我很感兴趣但是没有经验。因此在衡量评估手中的几个 compensation 差别不太大的 offer 中,只有微软的 offer 和 Oracle 的 offer 是明确给我在 cloud 团队(微软的 Azure,Oracle 的 BMC)工作的机会的。因此最终我从它们中间选择加入这个我认为有潜力但是也挑战十足的团队。做了一些 research,相比而言,Azure 已经成熟,BMC 还有很多从无到有的工作要做,无论成败,值得去试一试。从 iaas、paas 到 saas,这座金字塔上,我终于能够有机会第一次把精力放到 paas 这一层上面,这将是我从未有过的体验。
朋友问我离开亚马逊不可惜吗,老实说,非常可惜。我非常确信留在亚马逊我可以学到很多东西,即便我已经呆了五年多了,我依然发现有太多有趣的项目我可以去尝试,各种兴趣点都可以在这里找到匹配的团队。但是我需要把自己放到市场上去重新评估自己,既是新的和巨大的挑战,也是通过报酬的形式来对自己评估和认可。朋友告诉我,跳槽总是越跳越难,因为给你的回馈越丰厚,别人对你的期望也越大。如果不能抓住机会,职业生涯的进步就会延缓下来,而这样的延缓有时是很难再迎头赶上的。举例来说,毕业三年内应该具备的能力和工作到第十年是完全不同的,而到了第十五年,又会有完全不同的要求。这个行业发展太快,快到没有时间停下来踌躇喘息。
如果说第一次跳槽是从华为跳到亚马逊,从中等城市南京跳到大都市北京,从传统电信软件跳到互联网行业,那么这一次,没有在同样的层面上发生巨大的改变,却要尝试在一个自己不熟悉的领域,加入一个历史不那么悠久辉煌(指的是团队历史而非公司历史),却野心勃勃的团队。当然,一样的是把自己放到人才市场上掂分量,一样的是做出了缜密和细致的考虑,决定下得既犹豫又坚定。犹豫是因为在做出选择前,争取和评估了自己未来的各种可能性,这个过程徘徊冗长;坚定是因为在明确自己感兴趣和想提高自己的领域以后,这个目标就方法从大雾中浮现一样,很快清晰起来。
最后,如同在 2011 年年末第一次换工作一样,祝自己在新的环境和团队中顺利成长,得到自己想要的东西
再见,亚马逊时光
新入职 Oracle 已经超过一周了,但是一直没敢下笔,写一点东西纪念将近 6 年的亚马逊时光,总有惶恐的感觉。现在觉得不能再拖了,文字不在多寡,仿佛一种仪式,把整个亚马逊的经历画上句号。离开老东家的时候,往往是喜忧参半的,并且难免对前任颇有微词。在我离开华为的时候,便是如此,多为感怀和想念,但是诚实地说,也有一些厌烦的情绪,于是有释放之后的舒坦。这其中的缘由,我在以前的文中写到过。但是离开亚马逊,我却仿佛不再有这些负面的情绪,除了感伤和怀念,便是感激。要说明的是,如今亚马逊的股票直往上蹿,它却远非完美,也有诸多令人遗憾的风言风语。我觉得它在某些方面可以被称为“美国的华为”,做企业的成就自不必说,但是总有许多声音在抱怨对员工施仁不够。我相信这些声音大部分都是真实的,都是客观的,但是公司太大,团队独立性太强,就我的经历而言,并没有体味到这些问题。
时光回到六年前,在我对互联网的概念还迷迷糊糊的时候,在云计算之类概念才兴起不久的时候,我仍然享受着和同事开心的工作氛围,但实在决定受够了在华为的做事风格,于是下决心离开,也想离开传统电信行业,到别的行业去过过瘾,探探险。决定做得有点唐突和冒失,而且早早告诉了我的团队经理,看起来是一个一时冲动的想法而已,不过迷迷糊糊就把那些陆陆续续的挽留给拒绝了。现在我依然觉得,其实当时根本没有把问题想清楚,有时候做起决定来真是没头没脑得吓人。几个月时间里,借着周末和请假的空隙,从南京,到上海、杭州,再到北京,面试了好几家企业,我把这些和不同的公司接触的经历深深地印在脑海里,在权衡几份机会的时候, 陈皓 凭借他描述的做事的氛围和方式,或者说奇特的工程师文化打动了我,我决定从南京远上北京,加入他的团队,加入亚马逊。老实说,在当时我对亚马逊知之甚少,可能不比“卖书的”这三个字多多少,并不能算非常理智的决定,但是回过头来看,无疑是幸运和正确的选择,为此我也很感谢他和我的这些对话。2012 年的 2 月份,正式加入亚马逊,GFBA 项目组,开始和全球开店和商品配送打交道。
从一家民营电信巨头,跑到互联网外企,实在是一个巨大的改变,其中的“鸿沟”,对当时的我来说,确实有点艰难。我记得第一个月的时候,我和老板说,我觉得大家每一个人都比我强。不过,相较于看起来似乎更“平易近人”的技术,英文才是我最大的问题。读那些英文文档几乎是每天上班最痛苦的事情,不只是心里的痛苦,而且还胃痛,是真的胃痛,此处没有修辞手法。看到英文就胃痛,这也是蛮有趣的。我记得当时坐在边上的同事,用半问半嘲讽的语气跟我说,“你英文不适应怎么行啊”。我没有回答,觉得有些难受,似乎觉得不公平,但又没什么机会反驳。其实我自己并不确定,而且读书的时候英文就不好,也就谈不上什么信心。
接下来,你可能会以为我要灌鸡汤,写发愤图强的事情了。错了,我既没有发奋,也没有拿那什么“涂墙”。住在公司附近,交通上时间开销很小。每天下班以后,觉得时间很多,想起在华为动辄 9、10 点钟回家的生活,忽然觉得很幸福。有时候看看其它书,有时候就干脆打暗黑 III,总之就是坚决不看在上班的时候已经苦不堪言的那堆似乎看不完的英文材料。好在老板不给我很大压力,工作时间比较自由,我们学习各种互联网技术,或者亚马逊的技术,然后在团队里分享。工作效率不能说有多高,但是可以在一个相对轻松的环境里面接触这些以前从没见到过的技术和方法,特别是有时候可以琢磨琢磨那些在外企更有经验的程序员的态度和工作方法,实在是令我收获颇丰。
在度过了漫长的适应期以后,组织上变化的关系,GFBA 这个组要解散,面前有一些别的组可以选择。于是加入了 Demand Forecasting,和商品销量的预测打交道。相对而言,这个组做的事情似乎会更有趣一点。接着的时间我得以有机会去接触一些机器学习的内容,也就是从那个时候开始,我逐渐觉得,学历在这一行的很多方面可能和能力并不挂钩,但是在某些领域却不是,例如机器学习的内容,人工智能的内容,数学基础好的,高校里面研究过这方面的,就是有更专业的方法。而我这样的很多东西都是半路出家自己学习的,既称不上系统,又难说深入,在这些方面的差距很难弥补。随着年岁的增长,不再心比天高,越来越能够正视自己的不足和局限,也越来越能够理解自己在哪些方面更容易遇到天花板,自然也更清楚自己什么部分更有优势。
我觉得当时我们团队在 Forecasting 这个新领域发展得非常不错。在 2013 年下半年的时候,在 promote 之后,我开始不安和躁动起来,开始酝酿野心,想尝试一些别的体验。我曾经说过,我生活过的每一个地方都像是一个奇妙的盒子,我会在未来“ 寻找其它颜色和风格的盒子 ”。而下一个盒子,就可能是硅谷,或者西雅图,来到更远处的一个“软件之乡”。在我开始尝试寻找和接洽在美国的团队的时候,正好,有一个机会可以来到西雅图,而且保持这个组不变。我就和我老婆商量,一切都是未知数,心里也发毛,这似乎是一个看起来挺不错的机会,不换组的话工作上的变动可以尽量小一点,压力就会小一点,我们应该抓住。于是我们两人就开始准备,专门正儿八经地学习英文,这似乎是在读书之后都没有的经历了。
2014 年 5 月的时候,我们搬到了西雅图。接下去的时间,最初的三个月内,遇到的困难实在不少,我老婆在生活上给了很大的帮助,于是过渡这个既新鲜又痛苦的过程变得相对顺利。无论如何,能够在世界上最大的两个软件国度拥有居住和工作的体验,作为工程师来说,真是宝贵的经历。
在 L 签证的前提下,没有跳槽的可能,可是由于组内人事变动,躁动的心又开始作祟,想去一个更加“国际化”的环境工作,也想把自己在数据处理方面的短板补一补,于是考虑换组。和一些经理谈过之后,面了 5 个觉得感兴趣的组,2015 年 11 月,加入了 Contribution Profit 这个组,计算成本和利润。从做的事情上看,算是真真正正天天都得和名副其实的“大数据”打交道了。很高兴学到不少有趣的东西,Scala,Spark,distributed workflow 等等。
2016 年算是因为各种原因,老实了一年,当然,拿到了 H 签证,这意味着跳槽成为了可能。
2017 年下半年,面了一堆公司,最终 决定加入 Oracle,而整个冗长的手续,一直拖到 2018 年初才办好。一周前离开的时候,回想起在亚马逊的时光,恍如昨日。我在亚马逊学到了各种各样的技术,但是这些并不是我最引以为傲的。我见识到了大型互联网企业是怎样运作的,在云计算的巨头工作“是怎样一种体验”(知乎体)。工作上我认识了一群伙伴,来自世界各地,五花八门的风格,其中不少还有挺不错的私交。我学到了一个工程师应该具备怎样的严谨,怎样争论问题,怎样铺陈事实,怎样做 trade-off……美好的体验太多,6 年了,仿佛只是惊鸿一瞥的时间。
贴一张在本来发在朋友圈的,我写给给同事们留念的贺卡。并且非常负责任地说,所有的头像都丑爆了……还有这张用了 6 年的已经快要磨烂的工牌:
你好, Oracle!
加入 Oracle 的 OCI(Oracle Cloud Infrastructure)团队一个月了,感触颇多。事实上每一次团队的更换都是一次体验记录和整理的好机会。技术方面的东西有很多,在允许的范围内,我会在以后慢慢再谈,但是其他方面,现在我想稍微谈一谈,特别是和我的老东家 Amazon 比较地看。以下的文字更像一篇帖子,而不是文章。
先说工作中的生活。Amazon 的总部在西雅图,整个 SLU 满大街走着大亚麻的人,但是 OCI 目前只有 downtown 两栋楼的几层,人数要少得多。对我来说,每天上班从 van pool 改成了 bus,commute 的时间代价略高,但由于车次很多,因此也能够接受。Downtown 的环境比较复杂,比 SLU 复杂得多,据我观察白天治安还是不错的。午饭那堆各式各样总在变化的餐车(food truck)没有了,取而代之的各种小饭馆。没看到楼里有自动售货机,不过有免费的水果、零食、咖啡、饮料,都称不上有很多选项,但也聊胜于无。午饭后我经常走过两个 block 去派克(Pike)市场附近逛逛小商铺晒晒太阳。
说回工作。从各式工具,特别是基础设施上看,Amazon 显然更加完备,Oracle 则有时显得缺乏,有时具备但是略显过时。在 Amazon,如果需要一个合适的 kv store,有很多 AWS 上面的选择可以考虑。但是在 Oracle,选项就非常少了,需要更依赖于开源的资源,或者开发团队就需要做更多的工作,甚至干脆从头做一个,于是,这方面看机会也就更多。其实,在软件行业里,这才是常态,毕竟像 Amazon、Microsoft、Google 这样的互联网大公司工作,才有接触到那么多现成的基础设施的机会,在绝大多数公司中,都需要自力更生一点。我无法评判哪一种一定更好,有现成的选择当然使得技术选型和研发过程显得更加顺利,但是另一方面,时间久了就会忘记了这些东西本来该有的样子,和实际是怎么实现的,就好比总是吃现成饭的人,哪一天 S 给他一堆食材调料,让他自己下厨,就很难适应了。
毫无疑问,在云这块领域里,Amazon 绝对是业界标杆,而它和 M、G 并称三驾马车,其它公司都和它们有着或多或少的差距。无论从基建、招聘、硬件、设计各方面等等来看,Oracle 的野心着实很大,挑战无疑也显而易见。但是无论如何,这样一家“古老”的公司,如此之狠下心去参与云计算的变革,这样的勇气让人觉得真是感慨。当然,传统关系数据库的成功之老本,无论怎么成功,总有一天要吃完,这样的变革,也可以说是早晚必行的事情,那个时间点出现,都会引发争议。和 Amazon 这样火爆的形势比起来,身在 Oracle 其中,我保持谨慎乐观,但是这样能够在云计算的浪潮中扮演更大角色的机会,实在让人很难拒绝。
团队可以简单谈一谈,但是项目上面,我能说的不多。我所在的是整座从 IaaS、PaaS 到 SaaS 的金字塔中很底层的一层,代码用的 Python 居多。我们团队气氛和 Amazon 的很像,目前在迅猛的扩张中,招聘任务很艰巨,也很令人期待。目前全部都是有经验的程序员,包括非常资深的程序员,没有刚毕业的新手程序员。背景上面情况各异,但是多数人都有或多或少的云开发经验,比如从 AWS 团队来的,从 Azure 团队来的,也有少数人有和硬件打交道的丰富经验。我本人大概是一个例外,这二者都没有,这也给我带来了一些意料之中的压力。当然,毕竟已经工作快十年了,这些事情也算不上什么大问题。
我经历的每个团队都有不同的风格,有极其充满激情的,有团队成员之间关系走得特别近的,而我如今这个团队,最大的特点,用两个字来概括,就是“成熟”,不仅是专业技能上的成熟,也包括业务领域知识上的成熟;不只是工程师沟通方面,由于成熟的背景,使得沟通显得尤其简洁,还包括研发经理的管理方式——主动的工程师+松散的管理。总体来看,身边的工程师都在努力工作,这方面要比我几年前待过的某些团队显得更加务实。没有人吹牛,很少人在打酱油,这让我看到了一点创业的氛围。
编者注:一个有信仰的程序员,从码农到程序员,再到世界顶级工程师的进阶之路!励志背后,不知道承载了作者多少的艰辛和努力!致敬为梦想奋斗的人
加群 请回复加群,淘金请回复“码农淘金”