软件工程师的核心竞争力
其实我在微博上问过“软件工程师的核心竞争力是什么?”这个问题,得到很多答案:技术、代码、天赋和激情、经验、想象力……
我思考过这些答案,觉得很多答案挺好,但是不够突出核心竞争力,或者没有突出软件工程师的特点。
比如说技术和代码的能力,属于基础能力,而不属于核心竞争力;天赋和激情其实放哪个职业都可以这么说,何况天赋也不是决定性因素,聪明人不是好程序员的例子也很多;
经验是很重要,但是不能说明太多问题,有些号称有三年开发经验的程序员不过是把一年的经验重复了三次罢了;想象力是很重要,但我觉得更适合科学家或者艺术家,因为他们要通过想象力在未知的领域去探索,而工程师更多是利用已有的知识去打造产品,想象力算不上核心竞争力。
我觉得软件工程师的核心竞争力,不是单一能力的体现,而是几种能力和价值的合集。学习能力、解决问题能力和影响力构成了软件工程师的核心竞争力。
学习能力
对于软件工程师来说,最基本的要求是技术和代码。如果你看招聘网站上招聘软件工程师的要求,都需要能掌握一门或者多门编程语言,会熟练使用工具、框架。
但熟练掌握一门编程语言、框架,还不能构成核心竞争力。因为现在技术更新迭代很快,现在你熟悉的语言或者框架,可能过几年就没有太大的市场了,需要学习新的技术。
这点做前端的同学一定深有体会,比如说前几年 jQuery 很火,你好不容易精通了,过两年又要改用 Angularjs,而现在则是 React、Vue 的天下了。而且光会这些框架还不够,还要学习使用配套的打包工具,而这些工具也一直在推陈出新,每次更新升级,都需要重新学习。
就算是编程语言,时间周期能稍微长一点,但也没有谁能保证一门语言就可以一直很火。我早些年对 Asp.Net 的掌握程度已经到了技术专家级别,后来公司要转型做移动应用,就必须要去学习 Objective-C,否则就得换个公司才行。
出国留学后要重新找工作,这时候 Asp.Net 和 Objective-C 的工作机会很少,但是前端工作机会多,我就需