最近,在小灰的知识星球上,有个小伙伴问了一个蛮有意思的问题:
这个问题看起来有些复杂,其实可以归纳为一句话:
IT技术更新换代很快,如果我们花费很多年去学习技术,有一天旧技术被淘汰,新技术成为主流,那我们是不是就白学了?我们程序员的努力还有什么意义呢?
不得不说,这个问题困扰着很多程序员,小灰自己也常常在思考。
那么,程序员该不该努力钻研技术的?今天小灰来说一说自己的想法。
先说结论,程序员的努力当然是有效的。
无论是程序员,还是其他大多数凭本事吃饭的职业,个人的成就主要取决于四个因素:努力、选择、天赋、运气。其中天赋和运气是不可控的,因此我们这里只谈论努力和选择。
那么,我们应该选择什么样的方向去努力钻研呢?
在职场上,我们需要掌握的技能有三类:一类是应用技能,一类是底层技能,一类是通用技能。
应用技能,就是可以直接用来做事情赚钱的技能,比如Go语言、MySQL技术、Spring框架等等。掌握了这些技能,你可以开发项目,在近期为公司创造价值。但是,这些技术难免会有时效性,很可能过一段时间就不再流行。
举个例子,十几年前兴盛一时的Delphi语言,因为市场的转变,现在已经很少有人使用了。
底层技能,对于程序员行业来说,包括操作系统原理、算法与数据结构,设计模式、架构理论等等。这些技能在短时间内无法让你快速提高生产力,但是却可以让你在职业发展的中长期受益。而且,这些技能的有效期很长,在可见的未来,在程序员的各个细分领域里,一直都有用。
举个例子,无论你是做Java,做Python,做C ,亦或是做前端,算法和数据结构的理念都是互通的。
通用技能,包括沟通能力,情绪控制能力,团队管理能力等等。这些技能不仅对程序员有用,哪怕有一天你不当程序员了,甚至你退休以后,都能给你的工作和生活带来一定的好处。
比如,当你从程序员转行做了产品经理,沟通能力依然能派上用场;当你谈恋爱结婚,未来教育孩子的时候,情绪控制能力同样可以派上用场。
因此,我们在选择某一方向去努力的时候,切记不要一味追逐流行的新技术,那样只会让我们疲于奔命。我们需要在学习应用技能的同时,不断加深底层技能和通用技能的提升,为更远的将来打好基础,全方位进行提升。
当你长期坚持在正确的方向上努力,或许一年两年看不出效果,但经过五年十年,你和同行的能力差距会变得非常显著,而且不会因为技术的更新换代而改变。
比如说,你用Go语言工作了10年,有一天Go语言没人用了,Come语言成了主流语言。那你损失的只是这一项应用技能,而你这些年的底层技能、通用技能并没有白积累。
当你和职场新人一起学习Come语言的时候,你大概率比他学习得更快,因为编程技术之间多少会有一些相通性。
再加上你的算法和设计功底,良好的沟通和管理能力,你一定比新人更有价值。
不过话又说回来,随着人的年龄增长,你一定会有家庭的牵绊、体力的下降等问题,让你在职场上的竞争力有所下降。但这些和工作能力没有关系,并不在我们今天的讨论范围内。
程序员的努力有意义吗?
选择正确的方向,兼顾应用技能、底层技能、通用技能的提升,那我们的努力就必然是有意义的。
小灰的回答就到这里,如果这篇文章对你有所帮助,欢迎点赞哦~~