前言
正式工作已经一年了,也想对这一年来的经历做一些总结,立下未来一年的flag,希望能给自己一些激励和更多的思考,对看到这篇博客的朋友尤其是刚毕业的同学一些启发,因为最近看到其他年度总结的博客,会情不自禁的做一些参展与学习,思考如何才能在这条路上走得更顺利一些。
工作
工作包括实习期在内共1年6个月,一直在推荐搜索组,前期主要是负责算法同学工程方面的需求支持,目前是负责搜索相关的业务,包括索引构建以及日常ES维护。
实习期
实习期以学习为主,接触了一些推荐工程项目,负责支持客服机器人配置维护页面,由于组内没有专业的前端,边学边做,用vue搭建了一套智能客服维护页面,经历了N次需求变更(算法同学提的需求,也并非专业产品,导致需求做完,被老大驳回,改需求重做),导致element-ui和vue的官方文档倒是翻了好多次,对我这种前端几乎0基础的后端同学十分友好。
工作期-前半年
入职后已经明确需要负责的项目,类似阿里的PAI机器学习平台,帮助算法同学沉淀公司的算法能力,顺带的帮助BI等对算法不太了解的用户使用机器学习算法解决问题。项目前后端以及需求都由我负责,老大做把控,难点主要是以下三点:
- 本身没有算法方面的知识,对算法目前的痛点把控不准
- 公司内机器学习训练模型、分发上线的流程不清楚,导致前期需求紊乱,方案设计了数次都有问题
- 前端要做成可拖拽的DAG算法画布,对前端技术要求较高,单纯的element-ui组件无法支持
前两个问题随着与算法同学的沟通、老大的建议和对阿里腾讯百度的机器学习平台调研下基本解决,第三个问题,由于前端资源的缺乏,只能硬起头皮思考解决方案,自己实现一套可能性太小,在不断地寻找下找到一个DAG demo(找不到我参考的demo了,这个整理版与当时用的应该是一致的),一点点debug后弄明白了各个事件,后续还做了一些改造,前期需求明确以及调研花了一个月左右,正式开发前后端以及与现有调度系统打通共花费约4个月。
工作期-后半年
后半年从同事手中接手主搜索引和业务索引离线构建与实时更新相关工作,这方面的业务需求会偏多一些,后续了解了ES方面做的一些优化,主要是打分插件与监控系统。主要完成了ES健康自检自动切流工作,提升线上集群的稳定性。
技术
技术栈还是以Java为主,服务端还是ssm为主,其他的中间件用到最多的主要是zk,分布式一致保障与zk的回调机制都尤其好用。mq、dubbo、redis多少有些相关的应用,涉猎不深。
索引离线构建涉及到hive、hbase和hdfs相关应用,日常索引维护过程中也学到了一些shell实用命令,尤其是有一次负责索引和hdfs集群迁移,通过shell去校验数据减少迁移耗时起码50%以上(python脚本甚至是java脚本,shell更为便捷,就是可读性不强)。
前端的话,可以算得上合格的代码搬运工吧,vue和element-ui用起来还是挺爽的,上手极快,日常90%的需求都能在文档里找到解决方案。挑战比较大的就是把别人的DAG demo迁移到工程里,并拓展出一些特殊功能,由于个人非专业前端,涉及到各种样式问题的时候,只能求助公司前端架构组的同学,也感谢前端大佬朋友不管我是否能听明白,每次能把原理给我讲解一遍(qaq),让我了解到前端水深,及时回头放弃深入的念头。
技术上回顾这一年,问题较大的是后半年代码写的并不多,大多数时间在进行调研思考以及设计方案,准备空闲下来写一些小应用,有时候想法和写的代码还是存在较大差异的,仅仅是思考有时候无法想明白的问题,具体实践一下才明白为什么要这样做。在刚毕业前几年,代码还是一个程序员吃饭最基本的能力。
生活
生活上还是处于比较宅的状态,晚上下班后偶尔会跑跑步或和同事打乒乓球,可惜经常打球的同事前些天离职了(痛失球友),一年的工作也让我开始有了小肚子(手感还可)。回家后偶尔刷刷b站,搓几把炉石,周末有空会找个i wanna游戏或是番剧消磨时光。
下一年目标(希望不是flag)
- 在ES方面有更深入的了解
- 源码级别,了解索引写入、查询的过程
- 应用层面,了解高版本的特性以及原理(如折叠字段原理,可配合代码学习)
- 参与一次ES开发者大会
- 学会并掌握10种以上设计模式
- leetcode 100题+
- 坚持锻炼,保持每周三次以上的运动,(工作日坚持做keep,周末5km以上长跑)
- 阅读五本以上非技术书籍
- 坚持吃早餐