也谈程序员的核心竞争力
一天在技术群里,看到大家在讨论“程序员核心竞争力”的话题,引用一下一位技术大牛的发言:

其实,我一直也在思考这个问题,同时这也是最近几年一直以来困惑我的问题,因为自己也即将35岁了(对,就是人们常说的程序员要失业送外卖的年纪),这几年来的焦虑和困惑比我之前20多年的都要多。虽然,目前自己也没有完全想清楚这个问题,不过对这个问题的理解也越发清晰,同时工作中也朝着自己理解的方向上努力,这里想谈几点自己的理解。
持续学习,解决问题的能力
互联网时代的技术变化太快了,作为一名程序员,不得不拥抱变化。不能持续坚持自我学习的程序员是没有未来的,而学习的终极目的是为了不断提升自己解决问题的能力,解决问题能力大小直接决定着你在公司里的薪水和晋升空间。
阿里的“新六脉神剑”价值观中其中有一条:“今天最好的表现是明天最低的要求”,就是强调作为员工要不断学习和进步,提升自己的解决问题的能力。无论是写代码,做功能设计,做系统架构,还是做团队管理,都是程序员在不同阶段为公司解决不同层面的问题。如何在不同阶段进行突破和跃迁,学习能力应该是最重要的一个推动力。
大浪淘沙,不进则退,唯有持续学习,不断进步,才能笑到最后。
独立思考,清晰表达的能力
能进行独立思考是人和动物最大的区别,对于程序员来说更是如此。单纯写代码和做功能不进行独立思考是没有太大问题的,因为这个阶段基本有人会告诉你怎么做,也因此很多程序员CURD写了好几年,能力却没有什么提升。
一旦负责系统架构设计或者团队管理时,不能进行深入思考和清晰表达是比较灾难性的,因为这个阶段基本没有人会手把手告诉你你怎么做。你必须要想清楚你负责的系统和团队要解决什么问题,怎样解决,为什么要这样解决等一系列问题。正所谓“学而不思则罔,思而不学则殆”,这些问题不是光学习就能解决的,必须进行独立思考才能找到出口。
沟通表达的重要性不言而喻,尤其是高阶程序员来说。跟团队小伙伴沟通工作,能否将你的想法和意图表达出来让对方听明白;跟上级汇报时,能否将团队做的事情的价值表达出来让领导认可;跨部门推动项目时,能否将事情对双方的利害阐述到位,这些都至关重要。这也是为什么很多大公司要求员工必须学习“结构化思维”,看《金字塔原理》这本书的原因。
马云在回忆当初为什么支持王坚做阿里云,并将他推到阿里巴巴CTO的位置上,其中一个很重要的原因就是:王坚能将很多高深的技术理论让马云这个不懂技术的外行人听明白。那时很多阿里员工都说王坚是个“大忽悠”,马云被他蒙蔽了,但我想说即便是忽悠,能说服你的领导认可你做的事情,本身就是一种非常牛逼的能力。
独立思考让我们看清目标和方向,清晰表达助我们插上翅膀,一飞冲天。
积极主动,自我驱动的能力
真正积极主动的人不会一直等待事情发生,而是选择让一些事情主动发生。作为一个出色的程序员是充满热情和努力工作的,他们具有很强的自驱能力,而且讲究方法,他们有能力将事情结构化。
缺乏自我驱动能力,是很难投入足够尽力和热情将事情做到极致。如果我们总是对于上级交代的任务,总是满足于刚刚完成就好;对于线上出现的问题,每次见到一个修复一个,不进行深入分析需求彻底解决;对于代码质量得过且过,不精益求精;那么就很难成为真正优秀的程序员。
积极主动能够让程序员脱颖而出,自我驱动能让程序员从优秀到卓越。
树立个人品牌的能力
管理技术团队的能力
不想当将军的士兵,不是一个好士兵。同理,不懂管理思维的程序员也很难成为一个顶尖的程序员。程序员要想发挥更大的影响力,就必须能够带领一支团队能打胜仗,个人英雄主义在当今互联网软件行业已经行不通了。
一将无能,累死三军。技术团队的管理者往往是团队的灵魂,不管你愿不愿成为管理者,技术管理的思维和能力是每个优秀的程序员所必须俱备的。