程序员的表达能力

最近每天下班回家我都抽出一点时间看《乔布斯传》,每次读完一本传记类书籍都不免有些失落,书中的寥寥数笔刻画了一个人的一生,传记中主角在现实中无不是著作等身或呼风唤雨,最终也都逃不掉宿命。
书中最令我印象深刻的就是乔布斯的现实扭曲力场了,把它当作说服力和个人魅力的叠加,或者更抽象化为表达能力。我更愿意站在程序员的角度说一下表达能力的重要性。
自己身为程序员,毕业近四年深感表达能力的重要性。很多时候因为程序员对技术的专注反而会陷入到一种局限中:我靠着技术安身立命只要把技术专研透彻总会有口饭吃。现在恰好赶上互联网爆发的时代看到周遭各种技术大牛优秀多金更是加重了对这种局限性的认知。其实,在巩固硬实力的同时,我们的软实力也要跟得上。我们遥望大牛的时候往往关注他的技术反而不易察觉到大牛的软实力。因为硬实力提高容易却更容易达到瓶颈,软实力虽然磨练起来不易,可是一旦掌握更是屠龙利器。
在经济繁荣的时候,程序员跳槽起来很容易,而且工资更高,很多同学同事都是靠着跳槽涨工资的。但是有一天更严重的金融危机爆发时,技术水平和我们一样的人同时去公司面试,作为一个面试官,你的选择会是谁,是一个木讷的极客还是侃侃而谈的工程师呢?我作为公司的技术面试官还真遇见过这样的情况,当时前后两天分别有不同同行来到我们公司面试,一个技术功底深厚,在面试的过程中能感受到他对技术的钻研和见解,可是表达自己的想法时言语不清,很多时候我都要多次确认才知道他想要表达的是什么;而另外的一个同学,虽然技术基础稍弱,可是知无不答,把自己做过学过的事情交代清楚,而且态度积极,给我的印象就是技术差但愿意主动学习,在决定录用哪位同事的时候,我们就在想,一个公司、一个团队更多的是靠团队合作交流而推进一个项目而不是技术强大的个人英雄去解决问题。结果在两位同行中就选择了后者。
上一个例子中,我觉得把自己的想法表达清楚很重要,同样的,使别人真正了解你的想法同样重要。你也许会说,把自己表达清楚和让别人了解你的想法不是一回事嘛?但其实不是的,你把自己的想法梳理好说出来以为有理有据逻辑严谨可是有时候对方根本和你不在一个频道。刚开始工作的一年多里我真的就是一个搬砖的,严格按照需求文档的要求做开发,根本不去思考业务上的场景,只要完成了功能没有bug就算是万事大吉了。可是常常做出来的功能根本不符合产品的要求。我们发现过需求的时候,虽然在同一个会议室里对着同样文档,我们的思路根部不在一条线上,这就会造成“我以为的你以为是我以为的”。这时我意识到作为技术人员对于产品输出的需求应该是尽量的不去“实现”,直到产品能在业务逻辑层面说服我,说出这个功能对于用户的价值,并且在技术层面考虑可行的时候我才会展开工作。在和产品讨论业务这一来一去的过程中,产品如何说服你去实现这个需求,你觉得产品的想法是否有遗漏,又如何有理有据的反驳产品。这样的交流多了,自己对业务和产品的理解加深了以后开展工作也就更容易了。
在与别人交流的时候如何把这条线对上呢?我认为有两点是要做的。
其一就是下定义,在我们讨论任何事情的时候,把讨论内容中的关键名词下定义。在达成共识以后才有继续讨论下去的可能性。否则大家对基本的定义都有歧义,自然讨论的越来越混乱了。
【程序员的表达能力】第二就是表达自己的想法的时候严格要按照句子基本结构。即,主谓宾状补。一个句子在明确了主题之后才能把主体的含义表现出来,也许其中过程仍然会有歧义误解,但是做到这两点会避免很多不在同一频道的情况。

    推荐阅读