个人发展方向的建议

130 阅读6分钟

注,只是建议,觉得有道理可以点个赞,没道理就当没看见,甚至点个踩也行,没必要非得按照我说的做

《还没用熟 TypeScript 社区已经开始抛弃了》的一些思考

我第一次接触TypeScript是2019年,当时在写Angular。乃至于现在,我都觉得当时的开发体验特别好。class内部不需要管太多类型设置,上下文类型推断很舒服。我写一个公共组件,用类型就能完整的表达我想说的意思,都不用写文档了,并且还能有非常棒的编辑器提示。

中间隔了两年,我现在又用TypeScript了,不同的是,这次是用React写函数组件。因为去除了this,上下文的提示功能感觉没之前好用了。可能又是因为组合式API分的太细了,又可能是对react/umi不熟悉,TypeScript提示了一些类型,我都不认识,一点都不傻瓜。我又试着写类组件,哎,类组件干不过函数组件不是没有道理,它太麻烦了。

我跟这篇文章说的一样,只是想要一些函数的类型提示而已,怎么现在要花费越来越多的时间去处理类型报错。诚然,TypeScript作为一种语言是一定要不断的完善它的。但我们明明是在用JavaScript写一个项目,为什么非得要引入一个其他的语言呢?JavaScript又不是不能做。就如同WebAssembly一样,单纯的前端开发者没必要以它为主开发项目,尽管它的性能可能更快。

精益求精的死胡同

那TypeScript一直不更新简简单单的做类型提示行不行?那必然也是不行,项目太多太多,遇见的问题也太多太多,TypeScript既然要解决类型的问题,那肯定就得解决到底。如果不推出类型编程,要维护的类型字段就太多太多了。还是增加了很多的工作量。所以它注定在这条路上走到黑。

其实我也很容易走进这个胡同里。我之前每写个公共组件,都想要适配各种各样场景,从而不断的扩充它的api,哪怕我明知道,很可能这个组件甚至这个项目,到最后都是我一个人在维护,我以后需要用到的时候再去拓展它更好。

哪怕是我平时我写项目的时候,我也会不自觉的想,我这么写代码会不会太复杂,能不能以更优的方式解决这个问题。就这样优化了两三次,然后把任务延误了,我的效率常常是组里最低的。

其实我们都知道,日常工作中,肯定要以按时按量完成产品需求为首要目标,代码能跑就行,优化代码甚至都不在老板的考虑范围之内。

再比如,我之前写的一个文章探讨多项目公共代码的管理问题,我写文章时查资料,也注意到一个老哥写了个来专门处理这个问题,在这个道路上走的很远。可是,多项目公共代码管理方案本来就是一个比较小众的领域,并且在这个领域上也已经有好几个解决方案了。再在这个领域努力是不是属于钻牛角尖呢。

不止他,还有那些微前端框架的开发者们,本来iframe本来就已经很好了,再写个微前端,甚至还不止一个这样的库,感觉真的是无用功。如果只是为了解决iframe的性能问题,为什么不把单页面改多页面呢,把公共组件/UI放在一个文件引入,浏览器使用缓存加载,不比微前端慢多少,甚至更省内存。

我个人理解,人的精力是有限的,不如把精力和聪明才智放到其他地方,比如怎么解决团队成员技术能力参差不齐的问题,怎么提升团队氛围融洽度,怎么提高用户体验。这些都比搞一个库来的有用,要知道,写一个库可能用不了多久,但持续的维护/完善它就需要投入更大的精力了。

过往

工作两三年后,我已经能独立完成各种日常工作,以至于技术提升陷入停滞。

我当时徘徊于两个选择:深入学习前端技术还是拓宽自己的技术面。

受过往经历影响,我选了前者。想着不如把自己有限的精力集中到一个点,毕竟再穷的团队也雇得起一个Java开发,我nodejs学的再好,也不会让我写后台。做好团队的螺丝钉,当个高级前端很不错了。

而且现在是一个高度分工的社会,之前那种“全材”越来越少,而“专材”越来越容易找到工作。所以我报了高级前端的培训课程,学习了vue原理,react原理等等。

又两年过去,我勉强算上高级高级前端了,想着能找个高工资的工作。却突然遇见疫情封控,市场急速下行,我学历又不好,面试机会都少的可怜。

不光是我,我一个朋友也有同样的遭遇。并且我们还意识到一个存在已久的事实:越是高级职位,数量越少,竞争越激烈,要求也越高。所以,我们想脱颖而出,就得学会更多的技能。webRTc、音视频、3D数字孪生、后台、运维部署、网络安全、产品、项目管理……

而且,一个高级前端只会前端,听起来就不怎么高级……

够用就好的智慧

兔子去钓鱼,鱼饵一定是蚯蚓,而不是它喜欢的胡萝卜。

我们找工作,一定是看别人要求什么,所以我们学什么,或者做什么。就如开发了乾坤微前端的人,他去面试一个不需要微前端的公司,那这个库对这次面试的帮助就大打折扣,再如果乾坤这个库压根没没几个人知道,那面试就更不加分了。

我很早就听过《一元打火机》的故事(原文找不到了,凑合着看一个类似的吧),够用就好的逻辑让它能压低很多的成本,所以卖的很好。

所以,如果能回到三年前,我闲暇时间比较多的时候,我可能会学习一些Java/数据库,去做一些开源项目,拿出去能唬人,对以后面试更加稀缺的工作时候,会有很大帮助。并且越是稀缺的工作,对应聘者的要求面也越广。

像vue/react原理这些,面试之前就当小学课文背背就好了,没必要下大功夫研究,意义不大,除非以后真的打算做一个类似的框架出来,或者面试的岗位就是去某个公司做一个框架出来。