程序员的核心竞争力是什么?

有网友在某职业社区求助:“今年 35 岁,刚过完年第一天,因为年纪较大被公司劝退了,建议我这个月底提离职。十年开发经验,接下来我该怎么办?怎样维持生计?

35 岁,真的是程序员的一道坎吗? 程序员的核心竞争力到底是什么? 作为程序员需要掌握多少技能才能“可持续发展”呢?

01 核心竞争力

除去平时被提到无数遍的学习能力、编程能力、表达能力、耐心等。究竟是哪些明显不同于其他人的能力,可以助力你在职场上一路顺利前行呢?小编采访了几位年龄不同的程序员,从不同的年龄段的程序员身上,得到了不同的答案。

(1) 解决问题的稳准狠是衡量一个程序员是否优秀的重要因素之一,也是资深技术人员真正的价值所在。

作为一名程序员,我们要掌握多门编程语言和各种数据库技术,了解前端技术、后端技术,通晓网络七层架构,知道 TCP/IP 三次握手和四次挥手,编写漂亮的代码,设计优美的架构。除了这些知识储备之外,在工作中,我们面对的更多的是研发、程序运行和产品上线过程中遇到的各种问题,如何利用自己已有的知识储备,以最小的代价在短时间内解决问题,才是展现一位程序员真正能力的时候。

随着时代的发展,技术信息多如山海,一位刚毕业的大学生,如果足够勤奋,也能在两三个月之内掌握一门编程语言,编写出像模像样的软件。而他们的学习速度通常比老程序员更快,那么,作为有经验的程序员,你的优势是什么?是解决问题的能力,依靠时间、经验甚至是惨痛教训历练而成。 大多数的工作中的问题,只要给足时间,都是能够解决的,不过是时间长短而已。如果你遇到问题告诉上级,这个问题交给我了,两年之内搞定绝对没问题。那估计项目组要组团打你了,在这个急速发展的时代,大家要的是在最快的时间内解决,不是两年。在最短的时间内,用最小的代价快速解决问题,这才是程序员的价值。

(2) 整合资源的能力

遇到一个新的需求,什么时候造轮子,什么时候不造轮子,什么情况下利用公司自己的轮子,什么情况下利用开源的轮子,都是需要考虑的问题。在自己的技术栈中,不同的框架有何优劣,各自都适合于哪种场景,都应该能了熟于心。最不可取的是,长时间调研没结果,学习了很多框架,做法,但无法认真对比优劣,这就是不能抓住核心的问题。

(3) 方法论

刘未鹏的《暗时间》是专门为程序员写的方法论,其中有些很好的思维方法值得我们参考。

在程序员的眼里,做一个项目,首先想到的是用什么语言、什么框架、什么库。很多人会想用这个方向最厉害最前沿的方法去完成,用老套的方法格外没有成就感。其实,这种想法就属于只考虑单个孤立因素的决策,就是希望能在展现自己技术能力和技术水平的情况下解决这个问题。然而, 事实上,相比这些,更为重要的是,这个产品需要满足什么需求,有什么市场,是不是值得去做。

再举个例子,领导分配给了你一个产品信息分类的问题,你发现这个问题刚好可以有机会试用一下自己最近刚学的 NLP 中的一些分词、段落以及短语比较和分类的框架,而且这个工作好像很有挑战性,还不是一般人能做的了的,综合以上几点,你跃跃欲试,准备大干一场。然而,考虑到以上各点,这将是个投入相当大的项目,那么,其收益就必须对得起这个投入,技术上很牛不代表商业上就牛,再厉害再难做的项目如果不能带来商业价值,那就是负的收益。

总之,一件事情仅仅让你觉得挺牛不代表这件事情就是值得做的;一件事情仅仅让你很感兴趣并不代表这件事情就是值得做的。

02 学习技能

作为一名程序员,单纯说技术上的技能,那么要学习的技能大概是无限多。 从开发语言: C,C++,Java,Python,到开发内容:Web 开发,嵌入式,AI 应用等等。要说这些技能,大概是永远都学不完的,但无论你是使用什么编程语言,做哪种开发和研究工作,有些基本且通用的职业技能,是作为一名合格的程序员所必须的,能否用好这些技能,直接关系到了你的职业生涯。那么,让我们来看看,哪些通用技能,可以为你的职业发展给予帮助。

(1)文档习惯

把文档习惯放在第一点,因为很多人还没有意识到好的文档习惯的重要性。说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30 %的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。 缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇 到极大的麻烦。因此,有良好文档习惯,增强自己代码的可管理能力,一定能够为自己在团队协作中增添不少光彩。

(2)归纳总结的能力

相比于其他行业,计算机行业的知识和技能的更新迭代速度更快,因此,程序员队伍是很容易被淘汰、很容易落伍的。可能某种技术仅仅是在近两三年具有通用性和先进性,一旦被淘汰了,就立刻要开始掌握新的技术。因此,善于学习,将学习新技能当做是工作和生活的常态,是良好的职业技能的体现,每次完成一个研发任务,完成一段代码,都要归纳总结一些之前没有注意到的点,随时总结,找到自己的不足,并不断自我提高。

(3)模块化的思维能力

经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。

复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。 一些好的程序模块代码,即便是 70 年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现实中则是,很多公司的软件一旦升级或者改进就要全面代码重构,这些大部分的重复工作浪费了大量的人力物力。

(4)皮实的身心

作为一名程序员,始终是要要学会养生,懂得生活。积极锻炼身体,少熬夜,关注发际线

最后:欢迎各位学习java和大数据的朋友们加入Java交流学习群: 721506929(我在群里等你哟~)

点击链接加入群聊【java交流学习群】:https://jq.qq.com/?_wv=1027&k=5cjelsQ本群是一个新群,群内提供免费的架构资料还有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的免费直播讲解 可以进来一起学习交流哦~

你可能感兴趣的:(程序员的核心竞争力是什么?)