2020年末总结

序言

  转眼间2020年就过去了,在2020年的最后一天,也该写一篇总结给自己一个交代。写总结的目的是为了反思过去,同时也是为了展望未来。

回首过去

  回首2020年,不管是对我还是对整个世界来说,应该都是糟糕的一年。新冠疫情席卷全球,好在国内发现及时,基本已经控制下来了。但看着国外每日数以万计的新增病例,还是感到触目惊心。
  近两年明显感到自己对技术方面松懈了,不像当年在学校时一样废寝忘食的学习,会去看各种视频、博客。总结下来原因大概有以下几点

  1. 不像在学校一样有大把空余时间去学习,工作后需要把绝大部分精力投入到业务上
  2. 日子过得太安逸,没有外力推动去进步
  3. 懒,学习始终是枯燥无味的。不如打两把游戏、刷几条抖音来的轻松

正向反馈

  忘记了是在哪本书中看到正向反馈这个词了,在我理解来这个词的大致意思就是:做任何事情,都是需要激励与鼓舞的。拿玩游戏来说,玩游戏的正向反馈就是“我可以去刷一个BOSS,刷完BOSS后能使我变得更强,变强之后我就有能力刷更强大的boss”。这样就会形成一个良性循环。学习也是同理,但学习要找的正向反馈比较难。这是由于学习的正向反馈周期比较长,可能你学了很长时间,你依然不知道你所学习的知识能干嘛。会感到迷茫,学了半天感觉自己所学知识无用武之地。

  自己之所以对技术产生松懈,也是由于缺乏正向反馈。感觉自己掌握的知识可以应付绝大部分业务开发了,处在一个温水区,让人失去对进步的渴望,没有动力去学习。其实公司目前还有很多东西需要去完善

  1. 应用没有负载均衡,每次停机部署至少需要暂停服务30秒到1分钟。这对互联网公司来说其实是不可接受的
  2. 应用部署流程不完善,新应用上线仍需运维手工修改nginx配置,不能一键化部署。部署过程缓慢,jenkins和应用服务器不在同一个内网服务器导致服务部署经常需要5-10分钟。
  3. 绝大部分应用都是有状态的,难以做集群化部署。例:定时任务、延时队列、session等。没有统一的集中化定时调度平台。若集群化部署会导致相同任务在多应用中并发执行
  4. 基础设施极度匮乏,后端无统一支付中台、短信中台,各业务方需自行实现支付状态同步重复造轮子,若实现不合理甚至会出现重复支付的可能。目前的短信提供商存在单点问题,严重情况下会导致所有用户无法登陆注册。前端缺乏业务组件、部署环境、版本管理等,绝大部分页面都是CV大法,费时费力

上面列出来的只是一部分,其中还有很多问题等待着研发部门去解决。当中的任何一个问题,都值得深入去研究,思考如何优化。部分问题自己也有尝试去推动解决,但由于各种各样的原因导致最后还是不了了之。

  1. 权限不足,很多事情没法推动
  2. 缺乏并肩作战的伙伴,独木难支
  3. 无人引领方向,摸着石头过河,导致有些方案不足以在生产环境运行

2020读过的书

  20年读过的书不多,基本上都列在了21年的必读书单上。除了张亮的《未来架构:从服务化到云原生》好像没一本完整读完的书籍,所以21年要继续把这些书读完。虽然也买了不少纸质书,但大部分时间还是用微信读书,看了一下统计今年在微信读书上花的时间才106小时,平均一天不到20分钟。21年应该会把每日阅读量提升到一个小时。最近好像由于版权问题,微信读书上的不少好书只能试读了,后续可能还是得购买纸质书籍。

展望未来

主要方向

  2021年的主要方向还是补充基础知识,重点学习方向JVM、并发编程、MySQL存储引擎、Linux基础。基础稳固后消息中间件及缓存中间件是第二大学习方向。第三大方向会去深入理解分布式系统的一些概念(这块内容比较多,但市面上没有什么特别好的实战书籍,大多数都是浅尝辄止。今年重点学习分布式一致性协议及分布式事务。)。如果还有时间的话会去看看云原生的生态体系,如Kubernetes,Service Mesh,Serverless、Prometheus等。

它山之石 可以攻玉

  以上列举的基本都是后端知识,后端学累了的话,也会看看前端。React会是重点方向。重点学习的不是React的语法,而是核心部分。如JSX的本质,虚拟DOM和diff算法,React是如何解析并最终渲染出HTML,路由是如何实现的的等等。架构的核心思想其实不分什么前后端,思想终究是通用的,要学的是思想,而非应用。

2021主要书单及专栏

必读书单

  1. 《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》—— 周志明
  2. 《MySQL技术内幕:InnoDB存储引擎(第2版)》—— 姜承尧
  3. 《深入理解Kafka:核心设计与实践原理》—— 朱忠华
  4. 《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第4版)》—— 龚正、吴治辉、王伟、崔秀龙、闫健勇、崔晓宁、刘晓红
  5. 《Java并发编程的艺术》—— 方腾飞
  6. 《Redis设计与实现》—— 黄建宏
  7. 《Docker:容器与容器云(第2版)》—— 浙江大学SEL实验室

选读书单

  1. 《高性能MySQL》
  2. 《深入理解计算机系统》
  3. 《RabbitMQ实战指南》
  4. 《鸟哥的Linux私房菜》
  5. 《分布式系统:概念与设计》

专栏

  1. 《Java并发编程实战》—— 王宝令
  2. 《MySQL实战45讲》—— 林晓斌(丁奇)
  3. 《数据结构与算法之美》—— 王争
  4. 《设计模式之美》—— 王争
  5. 《深入剖析Kubernetes》—— 张磊

官方文档及博客

Java语言和虚拟机规范

Java相关文档

MySql官方文档

阿里云RDS-数据库内核组

美团技术博客

软件架构探索-周志明

本来还有一个阿里云中间件团队的博客,但在几个月前无法访问了。原博客地址:阿里中间件团队博客

关于博客

  20年博客基本没怎么写,21年应该会做的每周至少1更,一个月4更的状态。把自己的所学所想转换为文字记录下来,更有助于技术水平的提高。同时也是对自己的一个督促,每周一篇的更新促使自己进步。

总结

  参加工作近两年,自己也在不知不觉中成长,不管是工作上还是生活上,都不像两年前那么稚嫩。从前总觉得自己到了瓶颈期,技术方面没什么长进,但现在回看两年前的代码,才发现自己还是有一定的进步的。瓶颈期总是在不知不觉中突破,技术是需要时间沉淀的,人也一样,欲速则不达。最后以韩愈的一句话结尾,与大家共勉:

业精于勤,荒于嬉;行成于思,毁于随。——《进学解》韩愈