汇智动力之前看网上有人在争论程序员的核心竞争力,主要分为正反方。

 

 

 

正方观点:

 

 

1、多年的研发工作所锻炼的那种逻辑思维能力、探索能力、解决问题分析问题的能力。这一点将不仅仅使你受益于面临新技术、新问题之时,甚至也能使你受益于非技术工作。

2、对某一项技术的积累。程序员最有价值的不是学了多少项技术,多少并不重要,重要的是你对已经学了的技术掌握得有多深。学十样技术,各个都不精,还不如学一样技术,十年如一日地钻研,练就这项技术深厚的功底。

 

 

 

反方观点:

 

 

1、长年的工作可能导致你的思维定势,无法接受新的知识,新的解决问题的方法,应该时常总结更新。

 

2、单一的技术很容易被淘汰,多掌握几种技术更靠谱。

 

这真是公说公有理婆说婆有理,这正反双方的观点都没有错,二者一结合,就充分运用了辩证的观点来分析问题嘛。

 

 

 

 

根据国外开发者平台 HankerRank 发布的2018 年开发者技能调查报告显示,程序员求职时必备技能相关的调查结果如下:

 

 
 
 

求职时,必备的核心竞争力!

 
 
 

 

1、问题解决能力(不管企业大小,都排第1)

2、编程语言熟练程度(不管企业大小,排第2)

3、调试(不管企业大小,排第3)

4、系统设计(综合排第4)

5、性能优化(综合排第5)

……

 

相比中大型公司,小公司更为看中开发者对框架的熟练程度。因为小公司追求快启动,框架有助于开发者更快速地的推送代码。

 

既然我们知道了程序员的核心竞争力,那么我们该如何提升自身的核心竞争力呢?下面就最核心的“问题解决能力”和“编程语言熟练程度”来交流一下。

 

01

 

问题解决能力:

 

问题解决的能力,是程序员立业之本,是程序员最核心的竞争力。

程序员的解决问题能力不是天生的,自然得靠后天的经验积累。我们工作中会遇到各种各样的问题,比如需要去跟踪调试产品所产生的bug,又比如说使用第三方组件所遇到的一些问题,再比如说使用一些插件或者IDE所产生的一些编译问题。问题就像被埋伏的地雷,随时都会爆炸,所以需要提升问题解决的能力。如何提升呢?

(1)主动尝试解决问题

当遇到问题时,需要自己去尝试解决,给问题下个定义,运用排除法,尝试寻找问题的根源。只有主动尝试解决问题,才能在工作中提升自己解决问题的能力,否则就会形成依赖,且逐渐丧失主动思考的能力。

(2)学会提问

当遇到无法靠自己解决的问题时,我们需要学会提问。提问也是一门技能,怎样提问能让他人快速get到你的需求非常重要。所以,提问要有针对性,描述问题要清晰。

(3)学会总结

经验是分散的,只有多总结才能把零散的经验形成系统的技能。问题解决能力的形成并非一朝一夕,需要长期总结。

 

02

 

编程语言的熟练掌握

 

有一定经验的程序员,问他们哪种语言更简单,答案多半是:语言都是相通的,当你熟练掌握了一两门语言之后,其他的学起来也会很快。

 
 
 

熟练的掌握一两门编程语言,关注语言的特征

 
 
 

语言特征与计算机配置类似。在选择计算机的时候,没人会说戴尔的计算机就一定是最好的,他们会说这台计算机的CPU是Intel i7处理器,比i5好,DDR3的内存比DDR2快很多,SSD硬盘的读写速度比普通硬盘快很多,ATI的显卡性能很差,等等。

 

编程语言也是如此。每种语言都有一组通用的特征,例如变量、函数、条件语句和循环语句。只要你学习一种编程语言,并掌握基本概念,就可以将这些知识应用到其他语言中。

 

有人说,搞IT是越老越吃香,也有人说,大部分程序员已经步入中年危机了。其实,只要程序员在工作中注重自己的核心竞争力的提升,提高自己的不可替代性,就能轻松应对中年焦虑了。