前言 不知不觉已经工作了快 7 个月了去年这个时候还跻身在考研的大军中不禁有些感慨… 结合这 7 个月发生的一些事情简单做一下总结吧…
一、那时候刚入职不同于其他同学忙于毕设的 4 月提早安排趁寒假已经完成毕设的我已经开始扑在了「找工作」这件事上有了去年「秋招」打下的基础复习起来快了很多没过多久就开始投简历面试了面试也总体比较顺利刚面没几家就迅速和一家自己看好的初创公司签下了。
公司使用的技术栈区别于自己熟悉的 Java/ MySQL 这一套而是主要使用的 Rails/ MongoDB所以刚入职的一段时间基本上都是在自己熟悉技术栈也趁着闲暇的时间把自己入门时候的一些学习心得写成了文章发表
MongoDB【快速入门】http://www.wmyskxz.com/2019/04/25/mongodb-kuai-su-ru-men/
Java转Ruby【快速入门】http://www.wmyskxz.com/2019/04/26/java-zhuan-ruby-kuai-su-ru-men/
对于职场小白来说所谓「职场」还是显得有些陌生刚来的时候虽然跟周围的同事都稀松平常地打了一圈儿招呼坐下之后随着他们又埋头噼里啪啦敲打键盘工作的深入又顿觉周围一片陌生还挺奇妙的在第一周完的周报里面我写道
刚来公司有些迷茫只是看着CheckList对照着熟悉一些技术也不了解自己应该要熟悉到哪种程度就希望自己能再主动些不管是技术问题还是其他问题多请教然后尽快跟其他成员熟悉起来。
刚开始上手的时候也有好多问题不懂我都习惯性的选择自己研究一阵儿因为自己有写博客的一些经历被问过好多一搜索 or 自己一尝试就能解决的问题所以比较克制但是后来「入职 1v1」沟通的时候被说到有问题别自己死磕半个小时没解决尽量就找一下旁边的同事。摁我一下子就把我的「主动性」发挥了出来。
不过好记性也不如烂笔头找了一些工具记录把这些「问题的答案」都记录了下来方便之后再查找当时对于 Git 都不是很熟悉也记录了很多常用的命令在里面还有一些问题的反馈甚至知道了月会要自我介绍也打了一遍草稿记录在了这里那段时间真的问了好多问题周报里也手动感谢了坐我旁边的两位大佬..
入职两周的时候虽然已经开始上手做一些简单的埋点工作但自己对于 Ruby 还是不是特别了解和熟悉趁着某一个双休抓着一本《Effetive-Ruby》啃了两天也把自己的学习输出了一下
《Effective-Ruby》读书笔记http://www.wmyskxz.com/2019/05/12/effective-ruby-du-shu-bi-ji/
就这样一边熟悉一边开始接一些小需求我记得我写下的第一个 BUG就报出了 6K 条记录.. 慌慌张张在修复之后我不禁感叹「不要太相信用户的任何数据」。包括 equal 反写也是之后在错误之中学习到的..
刚上手没有一段时间就接到了一个新项目的需求跟着一位大佬开发一个新功能大佬负责搭建基础代码和设计我负责完成其余的功能代码没敢一丝懈怠下班回家之后也对照着别人写的代码敲敲敲时间和完成度上倒是没有一丝耽搁只是现在回过头一想当时没有什么单元测试的概念和意识就自己在本地 Post-Man 测试完就完所幸比较简单 自己测试得比较仔细到现在也没有出现过什么问题。
工作对我这样的小白另一个好处就是「见识和增加技术的广度」。公司所使用技术栈不论是广度还是深度都是自己在大学本科的学习中不可企及的程度JekinsDockerK8S跳板机一下子冒出来好多新鲜陌生的名词怀着好奇心也尝试了解了一些
了解【Docker】从这里开始http://www.wmyskxz.com/2019/05/29/liao-jie-docker-cong-zhe-li-kai-shi/
「消息队列」看过来http://www.wmyskxz.com/2019/07/16/xiao-xi-dui-lie-kan-guo-lai/
Kafka【入门】就这一篇http://www.wmyskxz.com/2019/07/17/kafka-ru-men-jiu-zhe-yi-pian/
也随着公司的逐渐壮大各模块的耦合也越发严重各条业务线之间的协作沟通成本越来越大逐渐开始提出「微服务」这样的概念具体怎么样理解就不作讨论了总之就是期望通过梳理/ 重构/ 拆服务的方式来解决「协作」问题所以期间也开始了解学习一些这方面的东西
什么是微服务http://www.wmyskxz.com/2019/06/07/shi-me-shi-wei-fu-wu/
《重构改善既有代码的设计》读书笔记http://www.wmyskxz.com/2019/06/08/chong-gou-gai-shan-ji-you-dai-ma-de-she-ji-du-shu-bi-ji/
甚至期间还做了一些「微服务」的调研我们选用什么样的姿势和技术栈更加合适所以也输出了一些关于「Spring Cloud」的东西但是最终驳回的原因是待我们整个容器化之后 k8s 平台自带了这么一套东西业务同学只需要关心业务代码就行了也就没有继续深入了
你想了解的「Spring Cloud」都在这里http://www.wmyskxz.com/2019/06/09/ni-xiang-liao-jie-de-springcloud-du-zai-zhe-li/
然后我们在拆解的过程中也借鉴到一些「DDD」的思想也尝试进行了一波学习
【吐血推荐】领域驱动设计学习输出http://www.wmyskxz.com/2019/06/13/tu-xie-tui-jian-ling-yu-qu-dong-she-ji-xue-xi-shu-chu/
总之这一段时间我一边通过各种小需求接触和了解了公司的系统的大半一边学习和了解着各种不同的技术增加了技术上的广度。
三、开始负责一些项目为了加速服务化的推进工作和验证「DDD」的一些东西部门老大把一个边界足够清晰也足够小的一个模块单独交给我期望我快速上线不过最终交付已经逾期快大半个月了.. 虽然从最终的结果来看顺利交付完成了拆解任务并从 MongoDB 数据库转变成了 MySQL.. 但期间也踩过好些坑当然也学习到一些东西..
例如我真实地意识到「完美」这个词的理想化。就拿设计 API 来说吧.. 自己就基于 RESTful 风格设计了好几版.. 左想右想都觉得差一些有一些接口觉得怎么设计都不优雅.. 后来纠结一阵子也就放弃了.. 再例如写代码这件事情吧好的代码整洁的代码是一次一次迭代和重构中出来的如果一开始就想着写出「完美」的代码那么最终的结果可能就是写不出来代码。
另外一个小插曲是在做数据迁移的时候我差点把线上服务器搞挂了.. 我在测试环境验证了一把之后就直接在线上进行操作了因为当时对于数据库的操作管控还没有那么严格加上自己对于线上环境的复杂程度认识不足我就起了 50 个线程去分批量地读取 MongoDB 的数据迁移到 MySQL造成了线上库的性能报警就赶紧停了.. 紧接着就被一群大佬抓进了一个会议室做事件的复盘..
说实话我紧张坏了第一次经历这样的算是「事故」的情况吧差一点线上就被我搞挂啦一时间不知所措… 让人感到温暖的是部门老大随即丢来的消息
那天还有一些相关的同事都陪我写复盘邮件到了晚上 1030现在想来都十分感谢他们。后来回到家我还打电话给我妈我说我在工作中犯错了我做了xxxx这些动作你觉得我做的怎么样呢老妈的回复也让人安心只是现在想来一些后续的动作可以做得更好的…
因为「埋点」这件事涉及到系统的方方面面我也借此了解了很多不同的模块也是拜这一点所赐吧后来我被派到各种各样的支援任务中同样也因为对不同模块都还不算陌生都还算完成得不错吧…
时间一晃在公司就四个月过去了也在这个过程中从各个大佬那儿都学到了一些东西在 8 月底发的周报里面我写下了以下的总结
之后也跟着大佬碰了一些公司的核心模块期间也没有停止在工作中不断地做学习输出
Git 原理入门解析http://www.wmyskxz.com/2019/08/16/git-yuan-li-ru-men-jian-xi/
Java计时新姿势√http://www.wmyskxz.com/2019/07/30/java-ji-shi-xin-zi-shi/
Java8流操作-基本使用http://www.wmyskxz.com/2019/08/03/java8-liu-cao-zuo-ji-ben-shi-yong-xing-neng-ce-shi/
《代码整洁之道》读书笔记http://www.wmyskxz.com/2019/09/14/dai-ma-zheng-ji-zhi-dao-du-shu-bi-ji/
React 入门学习http://www.wmyskxz.com/2019/10/15/react-ru-men-xue-xi/
谈一谈依赖倒置原则http://www.wmyskxz.com/2019/11/18/tan-yi-tan-yi-lai-dao-zhi-yuan-ze/
对代码还没有保持足够的敬畏之心。
特别是一开始上手的时候有时候甚至是在线上环境搞测试后来越来越注重 codereview 和单元测试好了很多。
沟通还不够深入/ 到位
有一次是临时接到一个需求因为「通用语言」没有达成一致导致最终交付的结果不符合产品的期望最终我们所有相关人员在一起开了一个会统一了「通用语言」造成了额外的工作和负担拿到需求就应该确认好相关事宜的越底层越细节越好这方面的能力我仍然欠缺但我已经持续在注意当中。
另一次也是因为这一点我需要帮助 A 系统拥有某一项功能之前 A 系统已经介入了 B 系统完成了部分功能我因为没有进一步地确认 B 系统的现状就去接入了有完整功能的 C 系统但其实 B 系统已经在上一周和开发 C 系统和 A 系统的同学对接好了并完成了相关功能的接入少了这一部分的沟通就造成了不少额外的工作量.. 所以「沟通」还是非常重要的也只能说持续进步吧…
缺少一些主动性
当我头上挂着一些事情的时候还是能够保持着效率的只是当我做完了就时常缺乏一些主动地思考了通常都是被动地去询问同小组的同事有什么事情是需要帮忙的.. 虽然也积极地参与到自己感兴趣的那些技术评审之类的事情之中但似乎效果都不佳.. 也没有什么实际好的输出..
接了一些私活儿黑活儿没有充分考虑团队之间的配合
因为「埋点」会接触各个平台的童鞋并且时常变化和有一些新的需求有时候直接绕过了一些环节直接找上我了我心想直接自己弄弄改改就可以了也就没多想… 但是现在想来这样跨团队的事情不能越过「顶头上司」私自进行一方面经常我的 BOSS 不知道我接了活儿另一方面这样的私自对接就会造成一些信息的流失对于团队之内还是团队之间都会造成影响…
五、回顾做得好的部分养成了阅读的习惯
公司买书是免费的也有自己的图书馆同事也不乏喜欢阅读学习的所以跟着跟着就养成了阅读的习惯期间也学习到了一些方法论的东西贴一下入职以来读过的那些书吧技术类的就没有囊括了
其实每天阅读的时间也不长想我大学总共捧起的那么些课外书不禁有些唏嘘…
早睡早起 晨间日记
早睡早起从步入职场以来就发现这样的习惯会带来一些额外的价值例如一些阅读我会放在早上后来还加入了「晨间日记」用来「回顾前一天的事情」和提前部署「今天的任务」这不禁让我多了一份清醒也让现在不怎么锻炼的我每一天精力更加好一些目前正在从印象笔记往 Notion 逐步迁移的过程中
学习撰写 Commit Message 后来向大佬那儿学习到了如何标准地提交 Commit包括 Commit Message 应该怎么写我觉得这是一个很好的习惯每一个 Commit 都有上下文并且还带上了 JIRA 号任务也很好跟踪虽然公司并没有大范围地盛行起来但我觉得这样好习惯应该坚持下来
任务进度及时反馈给相关人员
自己比较注意这一点因为不这样做会让别人感受不怎么好.. 光是自己心里清楚是不行的.. 要保持信息的通畅才行及时反馈是很重要的一步..
自己先 review 一遍代码
犯过一些白痴错误之后就有些担心逐步养成了自己先 review 一遍代码的习惯..
六、小结 看着自己这样一步一步成长过来没有很懈怠自己就算比较满意了在工作中学习了很多东西不管是技术上的硬技能还是沟通中的软技能也认识到了很多厉害的大佬和有趣的小伙伴们..感恩在路上相遇有幸共同行走过一段已然算是幸运突然翻看起自己的朋友圈有一句话说得好「成长从来都不是告别过去成长是更加坚定的看向未来」
期待一路同行的大家都能够 Be Better
-------- END ---------
最近面试BAT整理一份面试资料《Java面试BAT通关手册》覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。关注公众号并回复 888 领取更多内容陆续奉上