2020征途大总结

本文最后更新于:2021年1月3日 下午

前言

时间如白驹过隙,一转眼一年就要过去。2020年是不寻常的一年,这一年跌宕起伏甚是惊险,相信大部分人都是这样的感觉。但是惊险之中伴随着不一样的精彩,那么按照以往的惯例,年底了对自己这一年进行一波回顾和总结,再者对未来做一些规划和展望。

在脑海里仔细回顾了一番,今年算是有比较大的进步和提升,一方面是技术上的积累与提升,另一方面是对工作中团队的价值与个人的价值观、生活观有了新的认知。总的来说,收益颇丰。

团队价值与个人价值的思考

在今年之前,我很多时候认为个人在团队、工作中的价值,就是做好自己分内的事情,只要每个人都尽心尽力做好手头上的事情,团队自然也会发展得好。大多数人应该也是这样的想法。

那么,先把团队与个人的综合发展都看成是一个多维度图形。现实中每个人能力跟发展的侧重点不一样,个人的精力和时间也是相对有限,在工作中埋头苦干也许能一直把分内事情做好,但没有与外界的交流和对比,我们很容易掉进自以为是的进步的思维陷阱中,走的是独行侠道路,那么个人的多维度图形,其实就只剩单维度

从团队的角度来分析,单干会使某一项维度数值很高,但其它维度并没有得到成员的补充与推进,这就造成了单项凸出问题,不利于团队均衡、持续的发展。这个问题也是在我们推进团队分享的模式后才发现:由于每个人的认知范围和能力不同,在交流中大家会发现很多新大陆,原来这个业务还能这么处理,原来还有这种技术可以这么玩。在这种开放的氛围中,自身的局限和视野很容易就被打开了。所以我们每一周或两周,都会进行一次分享交流,内容不限,通过思想的碰撞来促进团队之间的交流,发扬自身的长处,同时也发觉、弥补自身的短处。这种分享沟通的氛围,也很容易调动大家的积极性,让大家在一个积极的氛围中更有干劲,这时就算你不想进步,也会被动进步。关于团队分享的好处与作用还有更多,下面还会提及。

那么到这,原先以为的“做好手头工作就行”这种想法,只能算是履行工作职责,而团队价值与个人价值应该是:个人价值应当能协助推动整个团队发展,而良好积极的团队氛围反过来促进个人进步,这两者是相互推动与促进,让整个维度的数值更加均衡与可持续发展

新事物学习技巧

12月份,在2020年最后一个月份,刚好被安排协助用react来开发新项目,因为先前一直是使用vue技术栈,所以本次开发算是一个小挑战,但同时也是有很多不一样感受和收获。

站在巨人的肩膀上,可以看得更高更远”。这句话同样适合用在学习上。其实并不算是第一次接触react,但是自hook出现以来算是第一次用它来开发完整的线上项目。在这一个月里,学习、思考、实践彻底形成一个完整的闭环,对于一个新框架如何快速上手,我的做法是先快速浏览一遍官方文档,了解其相关概念和用法,这一步其实是让自己有资格去站上巨人的肩膀,然后下一步就是去github上面找那些与业务相关的优秀的开源项目,把源码clone下来后,去看一下他们是如何优雅、灵活地使用,这一步就是站在巨人的肩膀上。在这种双管齐下的情况下,我得以迅速掌握react主要的知识并运用到开发中,最终快速高质量完成项目。

在现在这个万物互连的时代里,其实学习有很多技巧,不单要靠自己去领悟,还可以借助别人的优秀实践来快速提升自己,遇到问题可以通过社区搜索解决方案,还可以对搜索结果做一个记录 ,比如哪个社区给出的答案是比较有质量的,哪些社区的答案是比较水的,这个过程也可以筛选掉一些水文,保证以后的搜索效率更高效。

对于框架的思考

在社区经常可以看到很多人问:“新手是学react好还是vue好,哪个更有前途”,还有各框架的“拥护者”们之间的鄙视与争吵。我先前主要技术栈是vue,最近有用到react来做项目,刚好可以结合开发中一些不同的感受做一个思考总结。

我在这里要先抛出一个观点,框架的选型要充分结合自身业务需求、开发期限和当前团队的情况来决定

首先毋庸置疑的是react写起来确实挺灵活,jsx写法可以捣鼓更多东西,让开发有更多的可玩性。但是灵活度高的框架适用于所有项目吗?有没有别的框架更适合当前项目呢?

react虽然开发灵活,但是一开始的配置十分耗费时间和折磨人,很多功能都需要自己再去安装额外的插件;vue的话就比较方便了,vue-cli初始化的时候基本配置都设置好,可以直接开发无需操心配置,比较适合快速上手并投入开发。

所以问题就显得很清楚了,如果我们的项目是需要短时间内快速上线的,我们会愿意花那么多时间去调试、安装一堆配置吗?还有一个是考虑业务需求的因素,比如某种业务在某个技术栈上已经有很多典型成功的案例,且代码有很多最佳开发实践可以学习,那我们是否可以选择该技术栈。

因此选择某个框架和相对应的技术栈,不管是reactvue还是angular,不单单是看这个框架的名气,还要充分结合自身业务、团队情况、框架生态等因素来考虑,而不是盲目跟风选择热门或听起来比较高大上的框架。

对于一些喜欢折腾的团队,那么尝试新框架并玩一波周边生态,那也是非常不错的事情,前提是得有这个时间可以钻研。同时,想成为一个优秀的开发者,我们也不应该仅限于某某框架,这类事物都是互通的,无需太过纠结,如果某一天团队有这个需求,那我们就得学,这个理由就是这么简单粗暴。

对于阅读源码的思考

之前我曾立过flag,要主动学习优秀框架的源码,后面在枯燥与无聊的折磨下中放下这个想法,并重新审视一番。

优秀框架的项目结构是庞大且代码是海量的,如果漫无目的地阅读,那枯燥是唯一的感受,恐惧与放弃是最后的选择。那源码要怎样阅读?带着问题,解决问题的目的去阅读

比如我对vue的响应式感兴趣,想知道它是如何做到响应式的,那我就去源码里面找到相应的模块,去阅读它实现响应式的逻辑,到了最后发现,原来响应式的核心是使用观察者-订阅模式,并使用es5的defineProperty来实现。同时通过源码的一些注释,就可以发现该api存在的问题,于是在vue3改写响应式的时候使用ES6proxy,我们就能快速知道它为什么要换成proxy。所以阅读源码有时就是这么简单且不枯燥,只要带着问题,并在阅读中去寻找能够解答问题的蛛丝马迹,很快啊,源码大意了,来不及闪就被消化完了。

学习成果总结

知识积累

今年的积极性对比去年,应该算是好了很多。今年买了几本新书:

  • 《JavaScript高级程序设计》第四版(红宝书4)
  • 《JavaScript语言精髓与编程实践》第三版(绿皮书3)
  • 《程序员修炼之道》第二版

除了看书之外,部分进步也是来源于“做分享”。一位同事对我说过一句话“学习新知识后可以搞一个分享,除了巩固之外还能让你知道你是不是真的理解掌握了”。这句话我深有感触,分享有几大要求:知概念懂原理能拓展。为了不误人子弟,这会迫使你去做更多的资料收集和吸收来保证分享的质量,同时还要做好解疑的准备,这个过程会让你加深对该知识点的理解和掌握,同时分享也有抛砖引玉的作用,经常会有同事也分享关于该知识的一些见解,这里会产生很多的思想碰撞,无疑也是一个扩展知识面的好方法。
所以这里给一个建议,如果学习到新知识,有空的时候请多做分享,这是一个百利无一害的行为,绝对能让你脑海里的知识更加牢固。

实践成果

学到了知识,咱也不能光说不练,所以自己也尝试写一个基于vue2.x的组件库,目前持续更新中(最近比较忙,更新停了一段时间)。具体可访问这里

自己也从造轮子这里学到很多东西,很多细节是平时没法注意到的,只有在造轮子的时候,你需要从0到1去考虑整件事情,整个思路通畅了开发才能继续下去,同时也掌握了一些单元测试、自动化测试的方法,给自己的开发做一个保障。也写了一个配套的博客,记录了这个项目的整个过程。

除了这种明面上能看到东西,还有一些无形的东西,比如解决问题的能力、思考问题的能力也有了很大的提升。

最后总结

随着知识的积累,知识面的扩展,我们要解决的问题也必将更多更难,学无止境,达者为师,前进的路上一定要保持一颗谦卑之心,方能在得意时不嘚瑟,失意时不失落,保持持续进步。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!