一晃三年过去了,完完整整毕业三年了。
今天也是几乎所有毕业生被强制离校的日子了。不舍总是会有,但是也即将面对更加更加浩大的世界,前方的星辰大海不光光需要你去体验它,更加需要你去创造它。这个世界比你想象得大,这个世界比你想象得简单。
第 -1 年
毕业前的这一年做了非常多的事情,比如拿了十几个 Offer,比如轮滑协会的指导,比如三家公司的实习。
第一份实习是高新兴。
这是一家以城市安防为主的企业。
主要工作是做用户体验,画PRD,写研发管理系统。也是在这个过程中,完完整整研究了一遍,经典企业开发流程。
研究->需求->设计->开发->测试->上线->维护/迭代
这对我后边对于开发流程的认知,有了极大的促进作用。
主要成果:
为开发中心开发了一套可视化的研发管理系统。
第二份实习是赞同科技。
这是一家专门给银行业做前端系统的企业,比如 ATM机。
在这份工作中,我的贡献不多。主要还是认知的升级为主,原来金融业的前端可以玩得这么复杂,原来可以做这么多的分层和前置系统保障稳定性,原来还可以开发 IDE 插件,方便开发人员进行开发。
第三份实习是云中致用。
这是一家以云代替运营商捆绑电话短信的创业公司,比如云sim卡。
在这份工作中,我搭建了一个 Android App,主要为做界面设计功能设计以及实现,具体功能类似 iOS 的电话、联系人、短信功能。这是我第一家感觉整个团队都很厉害的公司,每个人的个人能力都强到爆炸。
主要成果:
开发了 Android App 第一版本,实现了 短信小红点、消息Notify提醒、联系人分组 等功能。
ps:云通讯:即使手机上没插sim 卡也能远程使用这个运营商的sim卡进行通话上网短信等。
第 1 年
毕业了,来到了人生地不熟的深圳,来到了中国平安,这家传说中有浓厚国企氛围的公司。在公司外去看一家公司往往是比较片面的,甚至是舆论主观引导的,到一家公司里边,它会从文化、流程、人才、保障、技术 各个方面慢慢让你对这家公司更加的熟悉。
到了公司也是人生地不熟,但还好有很多的小伙伴不断培养我,不断帮助我,领导也给了我巨坚决的信任。做具体的带项目呢,是从 2015年12月份 开始的。
做O2O贷,一个全新的新核心系统,一套全新的系统集群,RiskManagement (后边简称 rm)不再一次性承接这么多的业务数据,也就是现在的谁own有原始数据,谁维护它。以前总是习惯落自己本地一份,现在一切接口化,一切数据以接口的形式去 owner 方访问。这时候好像也没什么非常特殊的技术点,就是感觉怎么旁边所有的人级别都比我高。嗯哼??
虽然这个系统还是严格做了前后端分离的,所以每个人除了写后端接口后前端的部分也是要自己负责的。当然带着团队做了一段时间,发现前端代码非常混乱,各种全局变量充斥着代码,就连最基础的 seajs 也没人知道原理,使用方式不是很优雅而且还因此触发了 seajs 的一个 bug。
(seajs 是内存缓存的,一个 js 只会加载一次,所以这时候一个变量如果不在每个页面中进行实例化,可能会影响到到其他引用这个 js 的页面)
于是我做了这么四件事。
1、定制前端规范。编写了基础页面框架,规范使用可以避免任何的变量污染和触发上述 seajs bug。
2、前端自动化渲染,后端模块划分。很多表格table都是可以自动化生成的,可以降低 85% 的代码量,新需求的变动也只是变动字段或者变动位置,在数据层面解决就好。
3、培训前端面向对象思路。一切的不规范都是源于不熟悉,这时候组织一些培训非常有必要,比如为什么会有这个基础页面框架,自动化是怎么设计的。
4、重跑机制重构。后台有一些状态机推动的任务,本地可能更新成功了,但是推动下游系统状态机失败,这时候可能是网络原因。我根据监听者模式完全重构了这部分代码,一个业务一个class,可维护性极大提高。
也就是这个时候,整个rm几乎充斥着我的代码,特别是注释(ノへ ̄、)。好了现在四处可见我的代码。
2016年3月份底开始,好像人就在那一瞬间就成长起来了,得知要接起整个rm系统了。也是初生牛犊不怕虎,这么大一个系统一个人就敢把它接起来,完全没考虑过要是干不来咋办。管他呢干了再说,后面可不还有领导帮我撑腰呢吗?也是非常感谢领导对我的信任,得多大胆才能把系统交给我。要随时做好承担责任的准备,没什么不行的。O2O贷上线了,问题接踵而至,需求也像雪花一样飘来。通话唯一标识不唯一的问题,生产发生概率不高,但是在O2O每天这样的量级上,概率不高但是频度很高,跨了四五个系统,几个月才搞定。踩的这个坑,知道了解决一个bug最难解决的的是人,各系统中的人,沟通很重要。
第一次强调 owner 感,无论跟你合作的人是什么级别,无论这个事情有多扯蛋。但是,只要你觉得这个系统是你的,这个项目是你的,这个事情是你的,嗯,去 push 它就是了,看它成长,陪它成长。
平安有版本经理这么一个职位,也是我在带开发之余做的事情,这个职位是做什么事情呢?收集版本日数据,各个系统的发布,跟进发布后的异常。哪个地方会很烦呢?就是全世界有任何关于发布相关的事情都会找你,要是处理不好,可能会心情不愉快,甚至很抵触。对于这个岗位,我的理解是什么呢?就是尽一切的可能,从各个时间节点去保证版本发布的流畅性以及稳定性。
工作成果:
担当起整个 rm 的各个发展阶段的责任。
担当起版本经理负责人的角色。
第 2 年
再后来,审视了自己半年来的带队经历,发现自己的视野还是比较窄,技术也还需要磨练,这个时候就投入管理的工作,对于自己来说并不是一个非常合适的做法,跟领导商量开始转向架构的工作,这一转就是三个月。三个月期间,又完成了微表情识别的项目,一笔单一秒钟产生15条记录,每笔单平均27000记录,一天大概2700万。这个量级在Oracle做存储和分析明显是不适合了,所以就这个契机,开始了大数据的征程。那时候是2016年9月。
经过很多领导很多同事的一番努力,终于终于在十月份微表情上线了。但单这一个应用一天能产生2700万,后续还要做分析,Oracle明显撑不住,这很明显机器性能再好也一两周就扛不住了。咋办呢?也就有了现在的所谓的大数据。
原来我们觉得数据这么大存储问题很难很难的问题,一会就搞定了。恰恰好楠姐耀哥那边也有大数据方面的需求,也就开始做着了,一头扎进去但是一开始技术选型就没有选多对,但是还好,我们开始了大数据这个方向这条路是正确的。
2016年9月同时,开始接触另外一个反欺诈项目,需要基于全普惠两千多万客户上百亿数据进行团伙欺诈分析,好了当时在这个领域的知识储备是0。但是我们目标的目标就是30秒内完成客户欺诈的分析,这在接下来的七个月时间内没有变过。
开始利用Hive、HDFS、yarn、Spark、Sqoop、Ozzie 这几个套装开始打组合拳,一个月后就出了第一版,算是实现基础需求了。这段时间我的破mac担当了技术探针的工具,非常多的技术都是在这上面产生的,也非常多的ppt是在这上面做出来的。信心十足,一跑,30分钟。握日,果然数据量一大再好的逻辑都不好了,经过了夜以继日的优化,优化来优化去效果好像也就那样。调整Executor的memory,尽量减少网络IO啊,调整算法减少Stage,调整分区数减少Shuffle,调整GraphX的分区策略和分区数减少网络IO。
就好像吴军大佬说的,你的算法在X的规模下可能表现很好,但在10X、100X的规模下可能就不是那么回事了。
还是达不到要求,再后来我们开了个大招,我起了个头打算把整套架构打掉重做,团队详细讨论。结果就是把整套架构打掉重做了,我们团队很给力,只花了三周时间就完成了,结果已经能达到秒内相应。看起来也还蛮不错的。所以在那之后,比较多的工作就是分析架构未来可能存在的瓶颈,也都有条不紊。那时候是2017年5月。
从3月份开始,自己就有一种预感,机器学习应该会是主流,后面会开始有用。也不知道是来自于哪里的执着,就去报了一个培训班,让老师带着我去入门,去学习。一步一步,学着机器学习算法,特征工程技巧,智能分析系统架构,深度学习算法及框架。也算是入了个门,够做很多的事情了,设计了一个智能分析平台架构,自我感觉还不错,估计过几年往回看不会觉得自己,还真是初生牛犊不怕虎。那时候是2017年8月。
精心给部门的小伙伴们,准备了四个分享,分别是:主流图数据库架构及开发、大数据入门及应用、普惠大数据架构演进、机器学习算法及架构。大家的兴致其实还是蛮高的,但可能我讲得不太好,也讲得不是那么对胃口,也可能是事先小伙伴们没有什么基础,这些干货听起来理解起来还是蛮吃力的。但是,绝大部分小伙伴还是觉得,开了眼界,也有深度,甚是欣慰。对我来说,我的努力,这就值了。那时候是2017年9月。
在做的过程中,坚信没什么东西是不能解决的,也就有了后面的各种各样的反欺诈的尝试。同样量级的数据量,同样的算法,从30分钟到5分钟到5秒,我们花了半年,让我再次相信我们没什么东西是我们克服不了的。有工具,找到它,没工具,创造一个。
后面跟越来越多业界的朋友交流,才知道原来我们做的这些东西很多其他公司或机构都在做类似的事情,解决方案也接踵而至。交流,是一件很重要的事情,能把你的想法分享出去,也能获得到很多很多大神的帮助,这些开拓你眼界的朋友,都是一生的财富。
构建知识图谱分为一下这么几个过程。
1、数据搜集
2、主体识别及生成
3、关系生成
4、图计算业务应用,知识推理
5、图谱维护
6、业务应用接入及决策。
上边这每一个环节都耗费了我们团队很多的时间和精力,特别是在图算法理解,以及系统吞吐量 RT 这些指标上,Hadoop套餐还是满足不了秒级的图计算。
所以我们最终的方案是这样的。主体识别及生成使用 Spark 进行挖掘,底层数据使用图数据库进行承载,关系生成使用搜索引擎加速全文本搜索效率,计算上使用服务器嵌入模式开发插件进行图计算,并用单机版 MpaReduce 加速提高图计算的并行效率。
也是这个方案,帮助我们的效率达到毫秒级别。
自己去看很多很多的paper,很多很多的书,很多很多的算法,好像慢慢的慢慢的在英语上逐渐开始不成为阻碍项了,很多东西是不是一旦开始动手就变得没那么难了呢?
也是这一年开始写公众号,作为一个技术废柴,希望能把最近关注的东西分享给大家,要是能对大家又一丁点的帮助,那真是太棒了。
这个时期呢,认识了池老师,也加入了池老师的圈子。发了一波机器学习的文章被小象发表了,也写了一篇新闻稿被 infoq 收录了。
第 3 年
第三年,职业上重新启程,加入阿里了这个新的大家庭。其实呢,职业上的转变在一开始都是很不适应的,但可能大蕉这个小伙弹性比较好,过程中也没感觉到有多大的不适感。
心中一直谨记池老师对我说的那句。找个好团队,跟个好师傅,保持开放和积极的心态,吃亏就是占便宜。
收益匪浅。
加入成熟的团队
有什么好处呢?最大的好处就是学习一下内部的开发体系是怎样的,是怎么样的团队在支持这么庞大的业务。
也是第一次,第一次以内部人员的角色去深入了解零售这个行业本身已经背后的技术体系,第一次有机会学习到这么多这么多优秀的技术,第一次才发现的原来身边写代码的都是这么这么这么厉害的人。
感觉我真的是一个很幸运的娃。依然遇到非常好非常好的领导(多马),也有着非常好的两个师兄(宽、遣)。
在这环境中压力大吗?其实有时候压力还是存在的,毕竟有很多项目在并行着,一直要切进程。
学习了非常多技术,开源的以及未开源的。比如 HSF、Tair、Switch、Diamod、MetaQ、MaxCompute、ODPS 等等等等。
在这一年中,其实总体来说输出是变少了,因为要学习非常多非常多内部的东西,所以输出的都是一些感悟性的东西,技术方面开始感觉这些技术其实都有非常多的共同点,一通百通,还是需要继续学习继续好好努力呢。
每天必做的事情呢,就是听一波极客时间,让眼睛休息一下下的时候也能稍微学习一下下,有人总说买这个知识买那个知识很贵,也会问这个有什么用呢?我的想法就是,who knows,试试看呗,万一听到一句非常有帮助的,这么多专栏的钱都回本了。还有人说我这么忙怎么学习?嗯,再忙也要抽时间跳出你工作的线程,从外边看看你所做的工作,是不是有什么地方是不对劲的。
大蕉升级攻略
1、看书。
多看一些"闲书",不要整天只盯着技术书看,可能会有非常不一样的思路呢?比如《浪迹之巅》,比如《优雅的理性》,比如《程序员心理学》,比如《人类简史》,等等等等,会有不一样的收获的。
2、观察你所关注的人关注的领域。
如果你跟我一样,技术sence不是很好,那我可以给你一个建议。关注一下你相信的人,观察他们关注的领域,就可以了。
3、看原始材料。
阅读各种原始材料,比如某框架作者写的论文,作者写的书,论文本身,源代码。等等等等,能读一手的,就不要读二手的。
4、写代码。
在看到文章,理解完系统设计、原理、配置项之后呢,最好上手写一下代码跑一跑,debug 一下。这对你的成长非常有益。毕竟 don't bb show me the code。最好把你学习的东西,应用到你的项目中,这是最棒的结果。比如我自己实现了 MapReduce,自己实现了Google File System,自己实现了配置中心,自己实现了区块链小玩具。
5、分享
把你学习到的东西,用你自己的话总结一下,分享出来,可以的话加上你的建议,更甚至把你的改进反哺到原项目中。
6、owner 感。
把你手头的项目,当成你的孩子,别当成你的负担,好好做好它,好好思考它的未来。你就是它的 owner。
三年了,距离五年的目标还有两年,大蕉同学要继续加油吖,勿忘初心。继续往前,继续关注身体,继续关注技术,继续关注业务。
peace ️