被迫内卷不如主动卷起来
其实很多时候,工作需要的语言可能和我们的方向不同,比如我在工作中前端、Java、PHP、Python、Go 都写过,而且大多时候都是换种语言写增删改查而已,这种情况我们无法决定和避免,我们能做的只有改变自己。
其实 “能写出代码” 和 “能优化代码” 是存在很大差距的。比如并发编程和 JVM 相关的知识都是需要系统学习的,别看平时写增删改查一般用不到,可一旦在生产环境中遇到内存泄露、并发冲突、GC 等问题就容易一脸懵逼,到时候只能向别人求助。
我建议重点关注自己 3 方面的提升应对职场内卷:
学习自主性
自己要始终坚持某个语言的学习。如果工作忙,那就每天阅读1-3 篇技术文章,这也是一个持续进步的过程。
尽量参加一些主修语言的开源项目或者自己尝试写轮子阅读一些框架的源码,提升是飞速的。
只要能做到长期自主学习一门语言,哪怕每天投入的时间不多两年之后你的进步也是很大的。但如果两年的时间内,你一直在跟着公司业务写重复的增删改查,哪怕一直在写同一门语言,也不会有什么技术上的成长。
学习通用知识
语言只是工具。工作时间久了你会发现,同一方向的语言(比如后端语言 Java、PHP、Go)写起来基本没什么区别。
有多个方面的原因:
-
现在的框架封装的都太好了,基本上拿来就能用,不需要前期过多的技术学习。
-
项目开发中绝大多数代码都是业务逻辑,而不是某个编程语言特定的代码。
-
除了语言和框架外,很多技术是独立于语言的,比如后端的数据库、Redis、MQ 等中间件,算法、设计模式、软件开发原则等思想。
-
无论什么语言,开发项目的流程、方法和工具都是一致的。比如都需要进行需求分析、系统设计、开发、测试、部署上线的流程,都需要用到流水线发布、灰度发布、多环境隔离等。
我的主语言虽然是 Python后端,但临时帮同事开发 Go 项目时,完全没有任何压力。因为框架和编程规范别人都帮你搞好了,只需要写接口、写业务逻辑(if else)就行了,部署项目时用到的 Linux 命也早都烂熟于心。
所以我建议是多学习语言无关的通用知识。比如业务理解能力: 能够清晰地讲解出你负责的业务,比如某个功能的流程、某个业务存在的意义和价值等等。除了了解自己的业务外,再把视野打开一些,关注整个部门(同事)的业务,从更高的视角整体分析问题,而不只是关注自己的 “一亩三分地”、只是拧自己的螺丝。
此外,还有上面提到的通用后端技术、通用的软件开发思路和方法论、开发项目的方法和工具栈等等。多学这些通用知识,思维灵活一点,无论你转什么语言,都有自己的不可替代性。
高效自学能力
这个能力其实是对多个能力的概括了,比如文档阅读能力、归纳总结能力、问题解决能力等。其中,文档阅读能力是快速输入新知识的核心,因为工作中很少会有保姆级教程,一般大家都是通过文档(甚至口头)交流。
这些能力如何体现在工作中呢?比如我要接手同事的项目,第一件事就是要文档;读完一遍文档后,我会自己再简单地归纳总结,然后基本就知道项目如何运行、有哪些开发规范、如何部署;在遇到报错时,我也能凭着自己过去踩坑的经验和搜索能力,很快地解决问题。
有了这些能力,学什么语言都很快。我关注到的很多大佬,都有跨语言的能力,能够更灵活地应对不同的挑战,发展机会也更多。但是,很多初学编程或者刚毕业的同学容易保留 “学生思维”,比如什么都去问别人、没有教程就不会做、从来不写总结、经常重复踩坑等等。这些都是职业发展的阻力,需要刻意改变。
结语
程序员的职业发展不仅仅取决于所使用的编程语言,更取决于个人的学习态度、知识广度和解决问题的能力。通过持续学习和不断提升自己,程序员可以在不同的技术领域中找到适合自己的发展方向。