很多人都会根据企业的发展需求,再选择自己的开发方向。其实没必要完全根据企业的发展路线来决定的个人的职业路线。正如《黑客与画家》和《黑客帝国》所表达的,程序员应该将白天的工作作为一种职业相关性的经验积累,而将晚上的时间用于尝试新的技术和领域。这样可以有效地提高自身的技能,并产生许多新的思路。
比方说,我自己身边的同事,多数习惯于Visual Studio设计下的.net架构。而且他们从ASP.NET到ASP.NET MVC始终保持着以后端为主的开发模式。所以,对于前端开发多数围绕jQuery和IE9维护工作。虽然我很希望能有一个前端开发者能加入,但是一直没有办法找到。毕竟,哪有年轻人愿意回到史前。这说明了什么?必须尝试改变,而不是等企业自己反应过来。于是,我独自研究Vue、React和Svelte,目的是提升自己的开发能力。没错,就是朝全栈开发方向。转型一定不要妄想精通,毕竟没有一个有经验的C++开发者敢说自己精通C++(除了教材课本)。所以这里我采用了广度优先的模式:
- 自身花大量的时间积累多种开发语言的技术,并反复比较Pros和Cons,并且不断重新学习计算机基础。使得基础有了充分的掌握,比如多线程、内存回收、NIO和AIO等。
- 找开发网站中的热点词汇进行学习。牛人都爱装,但是文章的内容不如标题具有含金量。比方说前不久,《Linux 5.15 有望合并 Memory Folios,可使内核构建速度提升 7%》。虽然我查了一堆关于
Memory Folios
的资料,但都看上去就是一份工作汇报。但是他或许可以提高JVM的GC吞吐量,这样设想或许就觉得用处可能很大。 - 多找框架和工具,主要成熟度高,而且便于开箱即用。典型React Icons。虽然国内开源比较去中心化,没有标准的类库查询网站。最典型的就是Golang有中国社区,但是没有外国的pkg.go.dev的网站或是github下书目录式的awesome golang。这里Vue也似乎如此。既然喜欢,就多搞搞事情。
- 对问题查找答案,永远比别人告诉的强。(授人以鱼不如授人以渔)
我们不需要马上按深度的方式去学习技术,而是合理地利用时间和经验来提升学习的效率。大概自学了半个月,我已经可以分别使用Creat React App和NextJS来完成前端开发的工作(前端开发的经验留下次分享)。开发不难,主要是麻烦。我就偏偏喜欢折腾自己。由于用户取向不同,建议装一个Linux的VM或是买个Macbook,但不推荐采用我的广度学习方式,毕竟前期学习成本巨大。
为什么不要完全按照企业的架构呢?企业往往会给出一些通用的选材,而缺乏个性。我的一个Java的朋友,直到他用了一年的Eclipse才发现企业白名单内有Intelij,而且目前还在用,原因是项目组不用。我已无语了。我比较喜欢VScode和Atom,不太喜欢Visual Studio。主要是它设计太过于.NET,缺乏个性化的乐趣。Google和Facebook都喜欢保持开发者的个性和热情。团队永远鼓励个人的发言,不存在上下级之间强制的主从关系,有点像Debian和Ubuntu的社区模式。
多多接触开源,你或许也会喜欢上他的,并为之狂热。