Fraser Xu Thoughts on life and code.

2016 Review

先来回顾一下15年定的小目标

一直都没有对下一年有过什么认真的规划,因为觉得自己的新一年充满着无数的变数,根本规划不来。但是可以设定一些小小的目标,即使不完成也没有关系。

那个时候才刚过来墨尔本一个月,不知道这边的生活会是怎样,也有很多新东西需要去了解和接受,所以不知道要定什么目标。现在回过头来看也对,这一年的生活确实是没有办法预料的。

有机会的话就出去走走,没有的话也没关系。

16年相比15年走的地方少了很多。大部分时间留在墨尔本,期间借着参加CampJS和JSCONF China去了次悉尼和南京。自己本是计划可能会去新西兰或者欧洲或者美国但是都没有实现,但是没去成也还真买啥关系。和这大半年的工作有很大关系吧,后面再慢慢解释。

在国内的时候就不太喜欢人多的地方,也不喜欢在人多的时候主动去找人交流。

过来这边算是找对了地方?澳洲的各个地方对比中国,全是地广人稀,去哪都没有什么人。加上自己一般不主动去人多的地方,所以单从社交这一点几乎是没有什么变化的。

16年主要干了些什么

来澳洲最主要的原因就是工作,所以来的第一年,生活差不多都是围绕工作展开的。

来公司后加入的是公司目前盈利最多也是最大的一个项目Envato Marketplace,听起来好像是加入了最好的团队,但从技术角度来讲并不是。这个项目的代码让我第一次听说了什么叫做Monolith。我自己之前的经历主要是JavaScript开发,前端和后端都写点,熟悉Node.js的开发人员应该都知道这个社区提倡模块式开发,只要是能从核心业务中单独分离出来成为一个模块的我们都会尽量把它写做一个模块发布到NPM然后到项目中使用。但是现在这个项目(主要为Ruby On Rails)因为历史技术和产品等各方面的原因,把下面7个子站点的大部分代码放在了一个仓库,这样的结果是随着时间和产品复杂度的增加,代码会变得更加难以上手和维护。当然Monolith和Modular Development各有各的好处,我这里也不做过多探讨。

提到这个是因为我是以前端工程师的身份加入到这个项目中的。传统的服务器端Ruby On Rails渲染页面,前端使用jQuery, CoffeeScript, Bower。因为项目起步比较早而且大,用的Rails的版本也比较低,前端的工作和后端的工作相互依赖,就导致了依赖版本升级困难,开发进度受到各自的影响。

另外个人过来之后觉得最大的问题是自己的开发效率也因此受到很大影响。第一次需要clone好几个G的代码,安装各种依赖,数据库同步,启动各种服务。修改一行CSS代码在浏览器刷新看到效果需要10s以上的时间。在这样的环境下工作了大概一个多月,做的实在不是很开心。

公司其实内部也有其他新的项目和团队,因为没有历史包袱,都在技术方面敢于尝试使用新的技术。就前端方面也比较能够跟上业内的节奏。可能因为自己之前在公司做过几次前端方面的分享,其他团队的Manager好像知道我之前的技术背景和他们现在的符合,加上他们有前端近期要离职,所以找我谈了问我有没有兴趣到他们团队去帮忙。

那个时候的我当然是想去的。于是主动约了自己所在团队的Manager的Manager, 表明自己的立场,在那样的前端环境下觉得自己没有进步,工作效率不高所以做的不开心。楼下团队找我下去帮忙,问让不让走。

其实在约谈之前,自己知道,公司招人的时候都是按团队招的,一般来讲哪个团队招的人在哪个团队工作,内部换的不太好。所以自己的想法是如果现在的团队能够让我在现在的项目中用到新的技术,改善前端的技术和开发体验,我还是会优先留下。如果团队实在没有办法接受这个建议,那么我就换到其他团队去。

另外一点自己比较有把握的是,公司的开发团队不管是管理层还是普通开发人员,很多也都了解现在的状况,都有尝试作出改变的想法,但是却没有好的机会去具体执行。还有就是这里的Manager还是比较能听进去建议的,所以在谈话之前我就能够猜到大致的结局。

正是那次谈话,决定了我在那之后的工作内容和方式。先是我一个人脱离其他团队,从项目中的一个非常简单,且访问量一般的页面开始,花了一周的时间完成了一个简单的Node.js + React.js服务器端渲染的应用(期间也尝试过用Graphql但是没有成功).

在那之后”碰巧”遇到公司内部结构调整,我们分出了一个新的Foundation团队。这个团队和其他团队不一样的是没有具体的产品开发需求,相反主要去研发一个新的基础开发平台,让其他的技术团队能够用这个团队的成果更快更好的去完成他们的开发需求。自己也就很幸运的加入到了这个团队当中。

接下来的大半年差不多就是和新的团队一起围绕这个目标在工作。开发管理团队也是冒着很大的风险努力说服产品团队,所以也给我们团队定了很明确的预期时间目标。做的好大家都开心,做的不好队伍可能就要解散。

项目进行到目前还算顺利,按计划大概1月底到2月初能够用我们的平台在线上运行产品的核心搜索页面。搜索页面算是整个产品访问量最大的页面,根据统计访问量(统计一般只针对单个站点但是同样的代码和服务器实际运行了下面的7个子站点)应该也在全球前100,加上我们使用的技术团队的其他人也都没有足够多相关的经验,所以挑战不小。

因为到现在项目还没有正式上线,所以更多的技术细节可能之后再单独的写出来跟大家分享。

Revolution or evolution? Who knows.

一些做的不好的地方

  • 和亲戚,朋友,新老同事的交流变的更少了
  • 文章写的少了,技术的非技术的都是
  • 开源项目代码贡献和维护变的不够积极
  • 技术分享的频率在逐渐下降

一些有意思的事情

  • 在驾照还没考到之前买了一台二手🚗,而且无照驾驶还去了不少地方
  • 停用国内手机号,QQ密码和Weibo密码都忘记或被修改而且找不回来了
  • 以讲师和组织者的双重身份参加了JavaScript中国开发者大会,做了题为Learning design patterns from modern JavaScript frameworks 的分享

2017年可以有哪些改变

第一件事情是把驾照拿到,这个假期过的这么折腾是个教训。

第二件事就是写10篇以上的文章。

第三件事就是至少去到一次澳洲和中国以外的国家。

最后一件事就是努力将现在的项目继续在公司推进下去,在项目上线后能够运行稳定。花更多的时间提升项目性能,优化开发体验。同时推动团队的前端开源氛围。

Cheers.