整体规划

  • 工作产出总结
  • 新技术学习
  • 技能树构建

工作产出总结

准备把工作中做过的事以及一些过程产物进行总结,争取抽象提炼成可以外发的内容。

为什么要做这个事呢,其实是有个过程的。

首先在过去整个一年,我在工作上的投入和产出其实是不少的,但大多都记录在了公司内部的文档系统。这样做没有什么问题,但就是对于自己的知识库建立帮助不大,因为相当于大部分的内容都沉淀在了公司内部。而且这样也会导致很多思考不够抽象、通用,以至于只能产生针对具体问题的影响,而不能产生后续更大的影响。

另外,其实年中和同事聊天过程中,偶然聊到职业发展的话题,发现其实有些同事会保持在公司以外的笔记软件记录个人思考以及一些总结的内容,比如语雀Notion等。当时的我不以为意,但也觉得自己好像确实有挺长一段时间没维护个人的知识库了,所以当时也就萌芽了这个想法。

最近在狼叔的年终直播里听到颜海镜又聊到这个话题,感觉确实要重新捡起个人知识库建设的习惯了。

新技术学习

去年断断续续看了一段时间 Rust 文档,还算不上入门,但学起来比以前接触新技术时感觉轻松些。因为现在至少对于 JavaScript 这一门编程语言掌握更熟练了,因此很多编程语言设计上类似的地方可以类比着去理解,因此这也就有了 这篇 内容

2024年,要继续保持对于新技术的学习,并争取使用新学习的技术做一些小项目。因为之前有过很多次的学习经历,深感单纯看文档学习的效果很差。有项目实践一下起码对于实操更有帮助,也算有更切实的学习产物沉淀出来。

技能树构建

最近看了一些狼叔发的内容,又提到了“全栈”这个词(因为他是研究 Node.js 的,而 Node.js 最早的定位就是前端全栈最适合的语言)。

现在整个市场对于前端的要求都越来越高,而这个岗位的重要性和热度(市场需求)却逐渐降低。作为一名专业的前端工程师,当达到某个阶段,比如工作五年,理所应当逐渐跳出纯前端的范畴,向更大的范围迈进。

具体来说,就是需要掌握更多前端以外的技能,比如起码熟悉一门服务端编程语言,而且最好能有实践经验,这对于职业转型或是在岗位内负责更多的事情都是有帮助的。

对于服务端编程语言,我按照兴趣的排序是:Python > Rust > Go

选这三门语言,是因为发现他们都有自己的官网,而 JavaScript 竟然没有😮‍💨,只有 ECMAScript文档MDN,连 JavaScript 服务端的运行时 Node.js 都有自己的官网

Python 放在第一个的原因有很多,一是去年一直都在听一档关于 Python 的 播客,很感兴趣,算是重新捡起了对于 Python 的关注。二是众所周知 Python 是一门非常容易上手的编程语言,既具有脚本特性,可以快速写出一些可以运行在服务端环境的逻辑,又可以作为快速开发生产级别项目的技术选型,而且还适合作为刷 LeetCode 算法题的语言(因为常用的基础数据结构完备,语法简洁,可以屏蔽很多语言本身的复杂和写法上的冗余)

Rust 优于 Go 放在第二位,是因为毕竟还是作为前端的身份去学习后端语言,当然以实用为主。现在整个前端社区都掀起 Rust 重写前端基建的风潮,显然接触和掌握 Rust 所能带来的收益是更大的。

Go 排在第三位,而不是 Java 或 PHP 什么的,是因为 Go 在后端的应用广泛程度有目共睹,尤其是国内使用 Go 的开发者越来越多,很多国人也都积极参与 Go 开源社区的建设,而且很多老的 Java 或 PHP 服务甚至都在向 Go 迁移。

可选任务

其实很多程序员是把开源和算法作为日常的主要内容的,因为这基本是编程圈内的“硬通货”。但我结合个人实际情况和现状,将其排到可选任务列表,原因有很多,包含家庭、个人精力和工作等很多因素。

参与开源

开源是几乎每个对编程有热情的程序员都向往的事情,但也是有门槛的。比如如果你编程的水平不够,那么参与开源所产生的价值也就微乎其微,因为开源本质上还是能够将所编写的代码发布出来,能够为人所用,对他人产生价值。

而且开源后期的维护成本可能很高,如果没有足够的精力和时间,很可能陷入被动,沦为费力不讨好的事。我看过很多“失败”的案例,他们或烂尾、或入不敷出,总之收益并不如认真做好一份本职工作。

所以在工作相对稳定的情况,我选择试探性地参与到开源,这是因为之前一直都是以旁观者的身份关注开源或赞助开源,如今职业发展到了一个阶段性的节点,我决定更进一步。

深入学习 WebSocket 和 WebAssembly

这两个技术是我工作中常接触到的东西,也是比较核心的部分,之所以把这两个也划到可选任务,一部分是因为工作中难免要不断接触,所以可能不必专门花时间去从零学习。另外还因为这两个话题其实很大,任选其一都可以往专家的方向发展,而工作中所用到的部分可能只需要其冰山一角就足够。

但如果是负责相关模块的长期维护,有些比较边界的问题一旦遇到,如果对其了解不深,就容易陷入迷茫,无从下手,这也就是所谓的“瓶颈”。

而突破瓶颈最好的方法就是直面它,通过更了解其背后的原理和本质去克服这些瓶颈。

刷算法

算法这个东西很敏感,对于一个在职者,你一碰它,别人就会认为你有跳槽的意向。这是因为现在程序员的面试市场,算法题似乎已经成为了一项必不可少的面试内容,甚至成为是否能够拿到 Offer 的筛选条件。

这可能是市场发展的某种必然结果,既然已经发生,只好顺势而为。而且换个角度看待算法这个东西,这本来就是编程比较核心的部分,市场筛选增加了这个条件,其实某种意义上是回归了对于程序员岗位最初的要求。提高门槛固然会让竞争加剧,但长远来看的收益则是提高了从业人群的平均水平,让行业得以长久健康发展。

而且算法题是一种比较简单有效地保持对于编程语言基础熟练的方式,因为它常常需要我们在解决具体问题时选择合适的数据结构,这就相当于在间接地保持对于各种数据结构特点的复习。

另外它还要求我们对程序的复杂度有意识,即程序运行的性能,这在实际生产中也是经常避不开的话题。因为程序从来都不是单纯用来运行某些简单的数据输入的,生产环境的数据量级往往会无限增长,这就要求我们对于程序性能复杂度有着比较敏锐的观察和改进意识。

生活上

  • 早睡
  • 控制体重
  • 适当锻炼

早睡

这一点在过去一年落实的还好,但也偶尔会发生连续几天零点以后睡觉的情况,因此导致第二天的状态在一定程度上受影响。

新的一年希望可以保持平均在 23:30 以前入睡,如果实在睡不着就去床上看书,毕竟看书是容易催眠的。

控制体重

体重是个挺大的问题,五年前还没有这个困扰,那个时候140斤,是比较健康的状态。但随着生活趋于稳定,再加上三年疫情,一下子变成了传统的中年人身材。

之所以计划定为控制体重而不是减肥,是因为减肥是个比较难的事情,做不好可能会适得其反,所以将其作为长期规划,短期内还是尽量控制摄入,管理好饮食习惯。

适当锻炼

去年趁着夏天的尾巴,报了个游泳班学了10节课,体验还不错,明年可以继续尝试。

还跑了将近一个月的步,因为住的离奥森近,算是比较方便的优势,可以继续利用这个资源。之前一直停跑的理由都是北京没有适合跑步的地方,现在住在奥森附近,这个理由也就不攻自破了,因为在奥森跑步的体验还真挺好的。