论程序员的沟通艺术

3,086 阅读7分钟

我记得很久以前在一个技术大牛的博客上看到过一句话,大概意思是说,软件工程其实从某种角度来说并不是一个技术活,而是一个社会性活动。因为现代公司的项目一般没有说能一个人能100%完成的,每个人都免不了和其他人打交道。所以软件工程里面人与人之间的合作比技术更重要。我非常赞同这句话,因为虽说“工程”的本质就是让每个参与其中的人都变成一个螺丝钉/螺母,但是螺丝和螺母之间的契合度却决定了最后工程的质量。

我相信很多朋友(尤其是做产品的)都有类似的感触,平时的工作其实技术挑战并不多,更多的是和人“撕逼”,讨论“抓手”,“闭环”,或者从技术的角度来讲,对接工作,分析项目,向上级汇报进度等等。在我工作的这六年里面,接触过不少初入职场的年轻人,很多都是满怀憧憬想在人生中第一个岗位发光发热,研究高精尖技术,最后发现其实技术只是很小的一环,或者说,技术好只是能把工作处理的好的一个必要条件。而在和这些年轻人打交道的过程中,我也发现了他们沟通能力的欠缺。这让我每每在开例会,做汇报的时候都会为他们都捏把汗,感到可惜。

所以这次我想简单的,按照不同的沟通对象来聊聊一些职场中一些和人交流的小技巧。主要是给刚刚初入职场没多久的朋友一些我认为有用的帮助。如果已经是老鸟或者觉得我在扯淡,请自动忽略。。。

和老板的沟通技巧

直属老板毫无疑问是掌控着大部分程序员的生杀大权的。在国内是怎么样我不太清楚,但是在湾区这边,一个Senior(阿里P7+?)或以下级别的程序员,升职与否是100%取决于直属老板的决定的。我下面就列举一些我见过的负面例子,仅供大家参考:

技术硬核型选手

新人因为对组内或者技术栈的不了解,很容易在面对上司或者同事的询问时慌得不行。一慌就喜欢一股脑的把自己知道的技术细节都一股闹说出来,像机关枪一样。这样会让人听得非常不舒服。尤其是对老板来说,因为很多老板走上管理路线之后就会慢慢跟不上技术细节的发展。要想让老板了解你做的东西,或者修复的bug的难度,不是要在他面前展示你用的框架有多新,有多牛逼,而是需要给他解释清楚你的思路。

一个我听过的对话

新人: 我用RxJava的unsubscribe()在activity的ondestroy调用一下就解决了!

新人内心独白:1. 我用了吊炸天的rxjava 2. 顺利解决内存泄漏。

老板的内心独白: 1.你到底解决了什么问题?2.RxJava我听说过,但是unsubscribe是干嘛用的?

这是一个真实的例子。在和老板汇报的时候,你只需要把你解决的是什么问题描述清楚就行了。至于你具体使用了什么技术框架,框架的方法有哪些,对于老板基本来说都是废话。这些细节都是你在做设计的时候就确定的。

不知所措型

和老板一对一的每周或者每月例会是一个展现自己的好机会。尤其在一对一的时候如果能展现自己缜密的思维那是极好的。很多职场新人对于1-1 完全没有概念,在1-1时完全没话可说,白白浪费大好机会,支支吾吾表达不清楚,反而还帮了倒忙。

这种情况我强烈建议大家在每次一对一之前列好一个表,分几个大方向来一个个和老板谈:

  1. 工作进度,简单的汇报一下这周你工作的完成情况,包括遇到的难题,自己是否因为别的组的速度而被拖累等等,然后延展到自己需要老板帮忙的地方。比如需要老板帮忙把问题上报,升级等等。

  2. 自己对某些项目的想法。花点时间和老板谈谈组内的一些项目机会,聊聊自己的见解,说不定老板就钦定你了。

  3. 在老板面前赞扬一下某些对帮助过你的同事,有时候互相拍彩虹屁也是必要的!

  4. 生活上的一些趣事也可以在会议的最后聊聊,拉近你和老板的关系。

  5. 主动询问(记住要主动!!!!)老板对自己最近工作的是否有改进意见。认真记录下来,确保下一次1-1的时候再聊起来的时候你已经进步了。

聊完以上几点,基本上30分钟就过去了。一个饱满的1-1 就可以愉快的结束了。。。。

和组员的沟通技巧

正所谓水能载舟亦能覆舟,群众的力量是伟大的。职场中也需要和自己的同组朋友站在统一战线,这是新人获取帮助的前提。其实不管是与自己平级,或者高一级,都是需要技巧的。我见过被劝阻唾弃的高级工程师(最后灰溜溜的被PIP了。。。。) 也见过表现欲太强适得其反的新人。下面也聊聊一些反面例子:

浮夸演技型

俗话说的好,一个人越缺什么,就越喜欢卖弄什么。有些小朋友明明技术不咋地却就是想显摆。我不知道大家有没有在开例会的时候见到过这种类型。一个简单的问题可以吹半天自己的解决方案,在组会自己发言的时候占用大家的时间。切记:

  1. 对于老板来说,你把自己的解决方法技术细节吹得再高,也没有卵用。这点我们上一节已经说过了

  2. 对于同事,大家的技术水平多半也是半斤八两,吹嘘自己再简单不过的解决方案更加没用,懂的人一眼就看出来到底是个什么玩意。

  3. 组会或者例会的意义,更多的是让大家知道你在干嘛,在会议上如果有思路的可以帮你提一嘴,或者有需要你帮忙的说一声,主要是一个互相通气的作用,并不是一个技术分享会。有具体需要详聊的,最好挪到会议后面单独聊。简单的一句:"咱们等会单独留下来沟通一下可以么"就ok了

霸道总裁型

有种人特别喜欢主宰一切,在讨论技术的时候,只要不和自己意的就一定是不对的,必须要理论到底。这种人不管技术到底有多强,也是很难可以把大家凝聚在一起的,因为讨人嫌。。。我以前在亚马逊的时候,有两个senior,每次开会必定互怼,一互怼就霸占了技术分享会的大部分时间。一个真实的例子:

Senior A: 我们来讨论一下我们组的架构改进

Senior B: 这有啥好讨论的,我们的app有架构么?

这两人在发泄完各自的情绪之后,只留下尴尬的我们。

霸道总裁型的人也不是说每次都没有道理,或者更多的时候是占理的,但是这也不代表这也做事对的。因为不管你设计的技术细节有多牛逼,你还是需要留空间给其他人发言,这是"拉拢"人心的一个好方法。每次在结束自己发言的时候,顺带问问那些有意见但是不敢发言的朋友,也是极好的。