程序员的『软』与『硬』

275 阅读6分钟

很多程序员工作一段时间,往往会陷入迷茫,不知道是要在技术上持续深耕,还是尝试一下管理工作。这样的纠结其实是一个两难问题,到底是把精力花在『硬技能』的提升,还是『软技能』的提升?

首先我们得先说说这两个概念的区别。什么是『硬』,什么是『软』。

我所理解的『硬技能』,是指你对程序开发专业知识的掌握。这些知识是明确的,可说的,可以传播学习的。比如计算机操作系统,数据库知识,计算机网络,编程语言特性等等。这些知识,你可以从书本上获得,也可以通过搜索引擎获得。一个人的『硬技能』水平越高,代表这这个人对这些知识的掌握程度越深,越广。而这个深度和广度是可以量化的。具体在面试的时候,一个技术栈或者深层技术细节你知道就是知道,不知道就是不知道,知道的话知道多少,都是可以定量判断的。

而所谓的『软技能』则是相对于『硬技能』而言,很难定量判断,只能去定性感受的一种能力。比如表达能力,管理能力,组织能力,理解能力等通用能力。以及架构设计能力,编程思想水平,代码编写习惯,文档写作水平等专业相关的能力。这些能力你无法直接去评判好坏,你只能根据自己的感觉,在一个特定的范围内给一个相对的评价,比如张三在我们组里面表达能力算好的。李四比王五的代码写的更清晰整洁。虽然能力不能直接准确地评价,但是能力反馈到工作结果上面造成的差距,还是会很明显的。

人的精力毕竟有限,『既要』『还要』当然很好,但程序员的业余时间就那么一点,全面发展可能也就意味着全面平庸。当然,天赋异禀的人当我没说。大多数人还是需要选择一个方向,毕其功于一役,持续深耕,才能在这个点上超越常人,获得更多回报。那,怎么选呢?

当然首先还是要结合自身。如果你本身就热爱技术,痛恨社交,是一个十级社恐,并且也不打算改变,认定了一辈子就要沉浸在代码之海里,那硬核技术宅的身份更适合你。或者你看见代码就头疼,每次编码的过程都极度痛苦,反而跟人相处轻松愉快,没有压力,总是像小太阳一样成为社交中心,那早点脱离痛苦,转向管理,对你来说也不会是多难的决定。但如果,你并不是这两个极端。偶尔能够领略到代码的逻辑之美,编程过程中常常进入心流状态,但工作之外让你写写代码,你是断然拒绝的。跟人相处,不会刻意回避。表达不算巧舌如簧,但自认为不是什么短板,上学的时候甚至还参加过演讲比赛。与同事之间也还算融洽,集体活动一个不落。但偶尔也需要独处来充充电。这样的你可能就会陷入纠结,自己该如何选择。

最近读了《纳瓦尔宝典》,启发很大。其中提到复利和边际成本的概念。复利的意思大家上学时候可能学过,它是一个财务上的概念,说的是你的收益在之后也会作为本金的一部分,为你带来更多的收益。边际成本是一个经济学的概念,说的是你的产品复制一份来赚取多一份的利润的时候,你的成本是多少。如果我们在做选择的时候,选择那个有复利效应,并且边际成本尽可能低的选项,往往会给你带来更多的收益。

那我们所说的『软技能』和『硬技能』,哪一个更符合上面说的情况呢?

我们先从复利角度看。

如果你软技能水平很高,比如表达出色,逻辑清晰,会组织管理。那么领导在有项目需要推进的时候,就会想到你,放手让你去做。如果你做的好,那下次领导也会根据你上一次的表现,放心把更大的项目交给你。而你上一次项目管理中所获得的经验,也会在下一个项目中带来收益。这就是『软技能』的复利效应。

而对于硬技能,复利效应可能没有那么明显。你专注某项技术,只有在你继续深入研究该技术的时候,你之前的积累才会起作用,才会产生复利效应。而如果你转头去研究了另一个问题,那你在前一个问题上面获得的经验,不能说完全没有,但大部分也不能用在你新问题的研究上。但为了复利效应只深入研究一个技术的话,会导致技术栈过于单一,团队只有在遇到类似问题的时候才会想到你,你无法在团队内部产生持续的影响力。

再说说边际成本。

作为程序员,我不是很喜欢这个行业的一点就是,无论你在原来公司的项目经历多么丰富,影响力多么大。在跳槽的时候,你都需要花至少一个月的时候,刷算法题,背八股文,才有希望通过技术面试。而由于一些知识工作中几乎不会用到,不用就会忘记,在你下一次跳槽的时候,还得继续刷算法题,背八股文。可见,程序员的跳槽是有边际成本的。

回到我们的『软』『硬』之争。对于你系统学习的或者工作中积累的『软技能』,他们已经内化成心理表征,在你遇到下一个项目的时候,你不需要重新再学习,可以直接运用,而且可以跟大部分项目兼容。边际成本很低。

而对于你研究的硬核技术,你也是只有在遇到相同的问题的时候,才不需要重新学习,边际成本低。而一个大型项目所遇到的问题是五花八门的,不一定总是碰到你擅长的,如果遇到了你不擅长的难题,就得重新学习研究,边际成本陡增。

所以,无论考虑到复利效应,还是边际成本,努力发展『软技能』都是一种效益最大化的选择。

那么,程序员该如何提高自己的『软技能』?或者,我就是个十级社恐,只想做硬核技术宅,有没有一种效益最大化的方法?这是两个很大的问题。我会在后面几篇文章中尝试回答这两个问题。