沟通能力对程序员有多重要?

在上周的一场活动上,我作为演讲嘉宾,接受了一位听众的提问:对程序员来说,沟通表达能力有多重要?
相信很多人对这个话题感兴趣,在此整理成文分享一下。

我认为不能一概而论。首先,在一个团队中,通常有三类程序员:

  • 一类是「技术专家」,通过编写底层基础设施提升应用开发效率,攻克技术难题;
  • 一类是「应用程序员」(Application Developer),主要工作是理解业务需求并实现出来;
  • 第三类是「技术领导」,他们不仅是个人贡献者,更要通过领导和培养他人提升整个团队的效率。

对三类人来说,对沟通表达能力的要求依次递增。技术专家在业务与技术间更偏向技术,主要的沟通对象是其他开发人员,对沟通表达能力要求一般。应用程序员开发业务功能,主要沟通对象包括产品经理,业务分析师,QA,甚至用户,对沟通表达能力要求中等。技术领导要通过演讲、培训、教练等技术做技术布道,团队管理,推行新的流程和实践,提升团队成员的能力,沟通表达能力应达到专家级别。

「影响力」是任何人价值倍增的基础

如果把一个人比作一家公司,把工作成果比作「产品」,那么如何能获得更大的利润呢?
答案是:要么卖的更多,要么卖的更贵
对于技术专家来说,如果仅仅服务于团队内的几个应用程序员,价值非常有限,如果将其编写的底层组件开源,在公司内,行业内进行推广,用的人越多,就提升了越多人的效率,创造了更大的价值,从而获取更大的回报。
对于应用程序员来说,你开发的功能用户数越大,用户使用的频次越高,为用户节省了更多时间或者带来更多愉悦感,就创造了更大的价值。
对于技术领导,你影响的人越多,对人影响的越深,就创造了更大的价值。
写作、交谈、演讲都是有效提升影响力的手段,而它们的基础就是沟通表达能力。

别被蒙蔽了双眼

有的程序员会举出一些特例来说明「就算不会沟通表达,也能成为技术大牛」,比如 Linux 和 Git 的创始人 - Linus。

这其实是一种偏见,能出现在公众视野里的技术牛人,他们的技术很牛毋庸置疑,但他们一定在其他方面也很牛,就拿 Linus 来说,能吸引如此多程序员为他的项目贡献代码,说明他在影响他人方面的能力也是很强的。能让 Linux 成为企业服务器的首选,说明他在产品设计和营销方面的能力也是不可忽视的。
世界上可能真的存在一些「纯」技术牛人,可是这样的人压根儿就不会进入公众视野。我们耳熟能详的这些技术牛人,其实他们在产品设计、营销、管理方面的能力也很强。之所以没有被正确认识,有两方面的原因:一方面因为他们的技术太强,相对而言其他方面就显得弱了一点;另一方面是媒体报道时,放大一个人的特点,才更有吸引力。

问题背后真正的问题

条条大路通罗马,不管是「技术专家」,是「应用程序员」,还是「技术领导」,都有人做的风生水起,有人做的很悲催。任何一条路都能通往成功的彼岸,也都需要穿过荆棘丛林。看看行业里,公司里,团队里需要什么人才,结合自己的优势,就能找到自己的方向。
其实大部分程序员真正关心的是:我要不要「现在」花时间去提升沟通表达能力?
毕竟一个人的时间是有限的,在某个时间点,到底是专注技术还是提升其他方面的能力,取决于在你当前的工作角色中,你的「瓶颈」是什么
以我个人的经历为例:

前三年做应用开发,主要就负责开发业务需求,什么技术栈都要用,掌握了基本的前后端开发技术,以及和产品经理沟通的技能。然后在「神州数码」开始带团队,不仅自己能完成开发,还要让团队在一起能高效地开发,于是学习了「敏捷开发方法」和「工程实践」方面的能力,当我给用户演示系统的时候,发现自己不会演讲,于是成立「4US学习小组」开始练习演讲。加入「ThoughtWorks」成为咨询师后,在「如何让团队交付更好的软件」上深挖,成为了 Scrum,TDD,重构,持续集成,结对编程方面的「专家」。创业做互联网产品 「ShenzhenWare.com」,学到了技术之外的市场、用户、设计、运营等知识。加入「思沃学院」后,继续发展演讲、写作、培训、教练等技能。

现在我在技术、产品、管理、发展他人方面都有了积累,我可以选择 60 岁的时候还写代码,但我不止这一个选择,我还可以做技术管理,做技术咨询培训,培训技术管理者,管理产品团队等。

最近几年看到一些中年程序员被奉献了青春热血的公司逐出门外,重新回到市场上面对激烈的竞争,有的人不堪重负选择结束自己的生命。我感到非常惋惜,更加坚定地鼓励身边的程序员朋友,要在技术之外发展更多的技能,这样才有更多的选择。