2015年阿里工作与生活回顾
前言
现在已经进入了2016年,这是我从事IT这一行业的第10年。不知道能否称得上是一个职场老人,但终有种老年人的心态,喜欢回忆过去——最近被初中同学拉入一个初中同学的群里,刚开始两天让人激动得不舍得睡去,因为群里的老同学们都聊得火热,可我竟然在很长一段时间内都没有敲一个字或者说一句话,只是看着大家互相提起当年的种种糗事。
十几年前的很多事情虽然还记着,但是更多的却忘却了。远的记不起来,不如回顾下刚刚过去的2015年。。。
御膳房
14年年底至15年1月31日整整2个多月的时间,我们整个大部门突击开发阿里的大数据商业解决方案——御膳房,大家的工作都很辛苦,加班加点,每个人的身体和意志都经受着不断地考验。鉴于保密,我不太方便透露很多,最后产品上线,所有人总算稍稍松了口气。这个项目后来的节奏稍微变得缓慢一些,但是新需求和功能都在持续的迭代与更新之中。。。
这个项目是我入行以来遇到的最紧急、最复杂、最有强度和参与人数最多的项目(250人左右),从某种角度来说,这也是一种荣誉。虽然苦、虽然累,但是感觉很值得。
瘦身
由于持续2个多月的封闭开发,自我感觉身体状况有所下降,需要调节,而且体重已经超过173,以前的衣服都不再合身了。为了保持一个健康的体魄,年后就开始在公司提供的跑步机上边跑步边瘦身。刚开始的一段时间,每天跑步5公里,中餐和晚餐都有所减少。后来将距离调整为每天10公里,直至15公里。由于跑15公里的时候身体稍有不适,并且出现了血尿,当时也吓了我自己一跳。所以在网上查阅一些跑步的资料后,每天在跑步之前会先喝一些温开水,然后将距离降到13公里后,就再也没有出现不适的症状了。从第一天减肥开始,每天都会将当天的跑步距离数、消耗卡路里和时间记录下来:
日期 | 时间段 | 耗时 | 距离 | 消耗卡路里 | 备注 |
2015-03-11日 | 未记录 | 57:57 | 11.60km | 1068cal | |
2015-03-12日 | 未记录 | 65:11 | 13.20km | 1210cal | |
2015-03-13日 | 未记录 | 70:21 | 14.40km | 1322cal | |
2015-03-16日 | 未记录 | 72:42 | 15.10km | 1384cal | |
2015-03-17日 | 未记录 | 73:21 | 15.32km | 1522cal | 严重血尿 |
2015-03-18日 | 未记录 | 24:01 | 5.004km | 460cal | |
2015-03-19日 | 未记录 | 40:00 | 8.381km | 864cal | |
2015-03-20日 | 未记录 | 47:40 | 10.00km | 904cal | 轻微血尿 |
2015-03-23日 | 未记录 | 38:11 | 8.003km | 733cal | |
2015-03-24日 | 早晨 | 38:08 | 8.002km | 793cal | |
2015-03-24日 | 下午 | 23:54 | 5.004km | 496cal | |
2015-03-25日 | 早晨 | 38:05 | 8.013km | 793cal | 跑步机死机,中间有停顿,时间、能量为估算 |
2015-03-25日 | 下午 | 23:51 | 5.003km | 457cal | |
2015-03-26日 | 早晨 | 38:04 | 8.003km | 754cal | |
2015-03-26日 | 下午 | 23:49 | 5.003km | 570cal | |
2015-03-27日 | 早晨 | 38:01 | 8.001km | 731cal | |
2015-03-27日 | 下午 | 23:49 | 5.003km | 494cal | |
2015-03-28日 | 早晨 | 37:59 | 8.004km | 732cal | |
2015-03-28日 | 下午 | 23:49 | 5.003km | 456cal | |
2015-03-30日 | 早晨 | 37:57 | 8.002km | 732cal | |
2015-03-30日 | 下午 | 23:47 | 5.004km | 457cal | |
2015-03-31日 | 早晨 | 37:55 | 8.003km | 732cal | |
2015-03-31日 | 下午 | 23:45 | 5.001km | 457cal | |
2015-04-01日 | 早晨 | 37:53 | 8.003km | 733cal | |
2015-04-01日 | 下午 | 23:43 | 5.002km | 457cal | |
2015-04-02日 | 早晨 | 04:46 | 1.002km | 90?cal | 工作忙,没时间了,呵呵 |
2015-04-02日 | 早晨 | 33:06 | 7.003km | 642cal | 工作忙完,回来补上 |
2015-04-02日 | 下午 | 23:40 | 5.003km | 458cal | |
2015-04-03日 | 早晨 | 37:48 | 8.002km | 733cal | |
2015-04-03日 | 下午 | 23:38 | 5.003km | 458cal | |
2015-04-07日 | 中午 | 37:46 | 8.003km | 734cal | |
2015-04-08日 | 早晨 | 37:44 | 8.004km | 734cal | |
2015-04-08日 | 下午 | 23:38 | 5.004km | 458cal | |
2015-04-09日 | 早晨 | 37:43 | 8.004km | 735cal | |
2015-04-09日 | 下午 | 23:38 | 5.004km | 458cal | |
2015-04-10日 | 早晨 | 37:39 | 8.002km | 734cal | |
2015-04-10日 | 晚上 | 23:36 | 5.004km | 459cal | |
2015-04-13日 | 早晨 | 37:38 | 8.003km | 735cal | |
2015-04-13日 | 晚上 | ? | 4.001km | ? cal | 不知道怎么没记录 |
2015-04-14日 | 早晨 | 28:12 | 6.002km | 551cal | |
2015-04-15日 | 早晨 | 37:33 | 8.004km | 736cal | |
2015-04-15日 | 下午 | 23:30 | 5.003km | 460cal | |
2015-04-16日 | 早晨 | 37:30 | 8.002km | 736cal | |
2015-04-16日 | 下午 | 23:28 | 5.004km | 460cal | |
2015-04-20日 | 早晨 | 37:28 | 8.002km | 796cal | |
2015-04-20日 | 下午 | 23:27 | 5.004km | 460cal | |
2015-04-21日 | 早晨 | 37:26 | 8.002km | 734cal | |
2015-04-22日 | 早晨 | 37:24 | 8.003km | 734cal | |
2015-04-22日 | 下午 | 23:27 | 5.004km | 460cal | |
2015-04-23日 | 早晨 | 37:23 | 8.007km | 733cal | |
2015-04-24日 | 早晨 | 37:20 | 8.004km | 733cal | |
2015-04-24日 | 下午 | 23:22 | 5.002km | 458cal | |
2015-04-25日 | 早晨 | 37:17 | 8.002km | 732cal | |
2015-04-27日 | 早晨 | 37:15 | 8.002km | 731cal | |
2015-04-27日 | 下午 | 23:17 | 5.002km | 457cal | |
2015-04-28日 | 早晨 | 37:13 | 8.003km | 730cal | |
2015-04-28日 | 下午 | 23:15 | 5.003km | 456cal | |
2015-04-29日 | 早晨 | 37:11 | 8.003km | 731cal | |
2015-04-29日 | 下午 | 23:15 | 5.003km | 456cal | |
2015-05-04日 | 早晨 | 37:09 | 8.004km | 792cal | |
2015-05-04日 | 下午 | 23:16 | 5.004km | 456cal | |
2015-05-05日 | 早晨 | 37:08 | 8.006km | 732cal | |
2015-05-05日 | 下午 | 23:17 | 5.006km | 457cal | |
2015-05-06日 | 早晨 | 37:04 | 8.001km | 731cal | |
2015-05-06日 | 下午 | 23:14 | 5.004km | 457cal | |
2015-05-07日 | 早晨 | 37:02 | 8.001km | 732cal | |
2015-05-07日 | 下午 | 23:12 | 5.004km | 457cal | |
2015-05-08日 | 早晨 | 23:05 | 5.002km | 458cal | |
2015-05-11日 | 中午 | 37:00 | 8.003km | 732cal | |
2015-05-12日 | 中午 | 36:58 | 8.002km | 733cal | |
2015-05-13日 | 中午 | 36:56 | 8.003km | 733cal | |
2015-05-14日 | 中午 | 36:54 | 8.004km | 732cal | |
2015-05-15日 | 69.7kg,第一阶段完成目标; |
可以看到最后我的体重降低到了69.7公斤,体重大致下降了35斤。很多同事最后看到我都很奇怪我是怎么做到的?其实就是坚持(跑步)加控制(饮食)。从5月16日开始我将工作重心转移到了对Spark的研究上,我将在下面一一道来。
Spark源码研究
15年1月,我和其它同事一起在杭州开发《御膳房》的时候,我意外得知负责阿里的实时多维分析平台——Garuda和实时计算平台——Galaxy的和仲就在我们同一办公区的同一楼层,于是我找到了他。他是个看起来已经发了福的中年男人,从他的第一句话开始,我就觉得很开心。他将我带到单独的一间会议室,花了近一个小时为我耐心讲解Galaxy和Garuda的原理,最后还推荐我去研究Spark的源码。当时的我可以说对Spark一窍不通,听到和仲的建议,心想:“有时间就抽空研究下吧!”。在春节期间我查阅各种资料才明白Spark原来是用Scala编写的,可是我也从来没有接触过这门语言,只能从网上下了《快学Scala》这本书的电子书,花了大概10天时间读完整本书,然后见到Scala的语法就不再感到陌生了。Spark是Apache的开源项目,要研究它自然需要得到它的源码,从Spark官网上找到了它的github地址,然后git clone下来。研究任何系统的原理,最好的方式就是去研究源码,而研究源码最不可或缺的方式就是调试,而调试之前你必须做一些准备工作,比如:编译、打包、部署。虽然Spark本身是一个maven项目,但由于国内对外部一些网站资源的屏蔽,导致一开始并不顺利。刚开始的一周时间,我在工作之余就会去尝试编译、打包,但是在踩过很多坑之后曾经一度放弃了研究。还有个客观原因是很多人都推荐IntelliJ ,而我这个老顽固仍然守着Eclipse不放手。有大约一周左右,我没有再去想Spark,可能是太累,也可能是没有精力。在一周后的一天早上,我重新打开了Spark的项目进行尝试,然后很多问题都解决了,后来几天我编译通过了。
自从能够调试Spark的源代码,日子似乎比一开始要好过多了,你不用再去踩坑,你要做的只是一行一行去调试源码,进而理解每一段代码的逻辑意义。事情不可能一直糟糕,但也不可能一直顺利,直到一天我无法理解一些怪异的Scala语法,以至于我又陷入重围。回过头重新去理解Scala的语法,才知道当时花了10天去理解Scala,并不是看上去的那样——我掌握了一门新的语言!很多语法的深层次含义我并未理解,甚至为了快速突破Scala而略过它。除了语法上碰到的问题,对于一些能看懂的语法,我却不知道Spark的原作者为何要这么做?比如为什么要把RDD划分到不同的Stage中。对于不理解的问题,我查找各种资料,有时候能找到,但有时候你会陷入互联网的海洋中,你感觉到自己就像是一个机器人爬虫,永远都在无尽的网上爬啊爬。。。
有时候自己可以跳出这种漩涡,而有时候是因为耗尽了时间,已经到了凌晨1点,我不得不放弃。事实证明,放弃并不意味着失败,也不意味着这是一件坏事。当你重新梳理好自己的思路,喝一杯热茶,曾经的潘多拉魔盒解开了。在程序的世界里,只要你肯研究别人的源码,你就会不断陷入新的漩涡。当我解决了一个又一个难题的时候,一个想法从脑海深处油然而生。。。
写一本书
由于自己解决的问题越来越多,所以写一本书的想法就这样诞生了。当我有这个想法的时候,并没有立刻就去联系出版社,因为我怕内容质量不高而被出版社拒绝出版。我打算再继续写一些内容,并对内容进行进一步的整理和浓缩后再联系出版社。我首先写了SparkContext、存储体系、任务提交与执行以及计算引擎部分的内容,在Spark核心内容只剩部署模式的时候开始联系出版社的。我已开始联系的出版社是电子工业出版社,按照网上说的方式给他们发了邮件,但是过了一周都没有反应的时候,我从《深入理解Java虚拟机》一书的最后宣传页中,找到了机械工业出版社的联系电话。跟出版社的工作人员要到了王福川编辑的邮箱,于是我发了第一份邮件询问具体的投稿事宜。王编辑在一个小时之内就回复了我,让我把我的写作选题、思路及大纲发给他。经过多次的邮件往来,王编辑代表机械工业出版社对我说,他们对我的书很感兴趣,愿意合作。按照王编辑和高婧雅编辑的建议,我又扩充了环境准备、Spark设计理念与基本架构、Spark SQL、流式计算、图计算及机器学习等章节的内容。8月初,我赶往出版社,与两位编辑面谈合作细节并签订了出版合同。
9月20日我完成了初稿(总共650多页),按照出版社的要求对格式作了调整后完成交稿。一直到12月份,出版社和我一起对书稿进行了4次的修改和校正。12月初出版社开始排版。12月中旬出版社开始设计书的封皮。12月下旬交给印刷厂印刷。最终于2016年1月1日出版上市。
起初,这本书的命名为《Spark技术内幕:深入探索Spark架构设计与实现原理》,但由于与同时期要出版的另一本书有命名冲突,于是改名为《深入理解Spark:核心思想与源码分析》。《深入理解Spark:核心思想与源码分析》已于16年1月1日出版,有兴趣的同学可以看我这篇《深入理解SPARK:核心思想与源码分析》(前言及第1章)》、《深入理解SPARK:核心思想与源码分析》(第2章)》、《深入理解SPARK:核心思想与源码分析》——SPARKCONTEXT的初始化(上)以及《深入理解SPARK:核心思想与源码分析》——SPARKCONTEXT的初始化(中)。
学车
由于交了稿,所以打算实现人生中的另个一小梦想——开车。经过多方打听,得知国内驾校市场的混乱,心生恐惧。身边很多同事都从东方时尚毕业,而且都很推荐,于是抱着试一试的态度在10月21日报了名。11月3日考了科目一,99分,留了个小遗憾。12月16日考科目二,100分。12月30日科目三90分(自我感觉应该是100),但考官没说扣分原因。下午的科目四错了一题,98分,又留个小遗憾。
顺便给想要学车的同学们给些信息:东方时尚秉着不拿学员一支烟的理念,不吃拿卡要,绝对可信。大多数教练的态度都很好,有个教练在我开车的时候还给我讲历史,呵呵!在校的学生建议报计时班,自己周一至周五学车,人少车多,一个人一辆车感觉很不错。如果非要挑出点毛病就是学费略高,但是多掏1000块钱买个好心情也是值得的。
16年1月9日在神州租了车,开了车去顺义、平谷,那里的路很宽、车很少,实在是练车的好地方,别提有多开心!唯一的缺点是当时在一个急弯路没有看见红绿灯,闯红灯了,不过过去这么多天也没查出来违章,自己提心吊胆了好多天,万一记6分,以后不敢开车了,否则记满12分,又得重新来一遍!
总结
从表面上看,2015年很充实,有很多突破和进步。但是瑕疵也很多,只能期盼来年有更多进步!