乐趣区

2018 所思所感

写在前面
2018 马上就过去了,今年对于我来说是很特别的一年,因为去年的现在,我曾经十分迷茫,因为工作这几年,写了很多代码,参与了很多项目,但总有一种碌碌无为的感觉,而且似乎离成为一名合格的全栈工程师越来越远了。因此,去年给自己定下的目标就是,在新的一年中,一定要远离自己的舒适区,开拓自己的视野,尽可能的 forget the label,不再以前端或者后端的角色限制自己,到头来虽然还是感觉碌碌无为,但有些事情的过程难道不是比结果更重要吗?
今年一整年来,陆陆续续看了很多书,翻译了很多文章,写了很多笔记,还折腾了很多新技术、新框架,每日也坚持学习英语,基本上也算是比较充实了,今日看到 SF 中的“总结你的 2018”活动,因此凑个热闹,写这么一篇,简单分享下这一整年来,对于自己经历和看到的一些事情的感悟和看法。
业精于术,立于道
由于今年陆陆续续接触并上手了若干种技术栈和框架,前端后端都用,整体的感觉就是我之前一定对全栈这个概念有一些误解。之前我对于全栈的理解,过分地将关注点放在了全字上面,但实际上并非如此。同时,“学不动了”这个关键词估计可以算是今年比较火的词汇了,因为前端的技术栈更新换代实在是太快了,这也让我非常理解那些说“学不动了”的人的心态。
想要打破这种困境,必须要明白业精于术,立于道这个道理。举一些例子,像前端中的 MVVM 框架,React、Vue、Angular 这些东西是术,而组件化的开发思想、底层渲染机制、代码复用方案是道,各种编程语言是术,而面向对象、函数式、响应式的开发思想是道。当然了,我这样说的意思不是说这些术就不重要了,请注意,这句话中关于术和道的先后顺序,只有先精于术,才有可能立于道。
因此,如果你不熟悉某一类技术栈的话,先挑一个较成熟的框架或者库,学会它,之后再深入了解它的原理,然后再利用这些原理举一反三的横向扩充其他技术栈,会产生”学不动了“的想法,只是因为学习新东西的方式不正确而已,正确的学习方式应当是利用已有的知识来举一反三,从而达到事半功倍的效果,从而打破“学不动了”的困境。
关于面试
由于我一直比较喜欢有挑战性的工作,每当自己进入舒适区的时候,就会产生危机感,这也是我 10 月份以来,陆陆续续进行了一大波面试的直接原因。
老实讲,面试的过程并不顺利。像各种大厂,比如阿里、腾讯、京东的面试我都参加了几次,我一直认为自己的技术水平还是不错的,但在实际面试中,还是会对一些问题有所疏漏,以至于答的不能让面试官满意,以至于最终基本都挂掉了。还有一次印象比较深刻的经历就是,在内推流程中直接简历评估就被 PASS 掉了,这让我一度很是蛋疼,备受打击。但后来也明白了,面试这个事情,最忌讳的就是妄自菲薄,因为挂掉不一定意味着你的能力不行,也可能是不合适,而且,面试也不是一个可以量化的考核过程,达标并不意味着通过,面试者肯定会选择最好的那一个,况且,千里马常有,而伯乐不常有,所以也没必要太计较结果。
匠心精神
关于这一点,是我在最近接手公司的一个项目时感悟到的。关于接手的项目,只能用混乱来形容,代码毫无规范、缺乏单元测试、设计缺乏逻辑,其实对于接手这种类型的项目,抱有一定的负面情绪也是正常的,但我想说的是,一定不要让这些客观因素影响了自己的工作态度。
一开始,我是很反感接手这种遗留项目的,况且代码还如此混乱,因此对于一些需求的实现,总是抱有得过且过,应付了之心态去完成,结果当然不尽人意,bug 很多,每次发布更新时都很忙乱,因此后来觉得不能再这样下去了,就耐下心来,好好地将项目的一些关键模块的代码看了一次,并进行了重构和调整,并补充了单元测试,之后每次发布更新都很顺利,bug 也少了很多。
所以少抱怨,多做事,耐心地解决问题,这可能才是一个合格的工程师该有的工作态度吧。
要有包容之心
程序员可能是杠精最密集的职业之一,毕竟每天 true/false 见多了,说什么事情都要争个对错。比如在技术社区中,有各种版本的“驳”学,如果你自己看的话,会发现最后你也不知道他们在讨论什么了,基本是为了驳倒他人而驳。我想说的是,作为一个心智成熟的人,一定要有包容之心,理智的探讨技术问题,而非抬杠。
还有就是对待你的同事,不要因为一些显而易见的错误而抱怨或者说一些不适当的话,谁能保证不犯错误呢,有可能下一个犯错误的就是你自己。
总结
大概就这些,下面我将 2018 年内翻译和编写的具有专题性的文章做一些汇总和分类,以供参考,如果还能在一定程度上帮助到他人,那简直太荣幸了。
30 分钟系列

30 分钟理解 GraphQL 核心概念
30 分钟理解 CORB 是什么
30 分钟 HTTP 查漏补缺之 Vary

高级 Vue 组件模式系列

高级 Vue 组件模式 (1)
高级 Vue 组件模式 (2)
高级 Vue 组件模式 (3)
高级 Vue 组件模式 (4)
高级 Vue 组件模式 (5)
高级 Vue 组件模式 (6)
高级 Vue 组件模式 (7)
高级 Vue 组件模式 (8)
高级 Vue 组件模式 (9)

高级 Angular 组件模式系列

高级 Angular 组件模式 (1)
高级 Angular 组件模式 (2)
高级 Angular 组件模式 (3a)
高级 Angular 组件模式 (3b)
高级 Angular 组件模式 (4)
高级 Angular 组件模式 (5)
高级 Angular 组件模式 (6)
高级 Angular 组件模式 (7)

SOLID 原则

读懂 SOLID 的「依赖倒置」原则
读懂 SOLID 的「单一职责」原则
读懂 SOLID 的「开闭」原则
读懂 SOLID 的「接口隔离」原则
读懂 SOLID 的「里氏替换」原则

接口设计

RPC vs REST vs GraphQL
13 个设计 REST API 的最佳实践

其他

dart class overview
Angular Elements 及其运作原理
小心 Angular 中的单例 Service

退出移动版