软件开发做久了,都会有一些角色的转变,从初的直接leader分配具体工作来做,到后来需要和不同部门一起协作开发,沟通都是必备技能与工具,无论升级为TL(team leader)、PM(project manager),还是继续做软件工程师。初做研发时,可能更多的只是关注技术性的专业知识上,觉得做好分配给自己的本职工作是目标。当你技术能力提升到一定高度的时候,领导会分配更大的项目让你负责,这时你发现,写代码不再是你8小时的全部内容,你需要和产品经理探讨需求,需要和其他攻城师讨论技术方案,需要和其他部门协调项目进度,需要和测试人员确认测试流程。。。。等等等等,你突然发现,沟通变得越来越重要,它已经成为你完成特定行动真正有效的手段。
  这种转型,对很多工程师来说是痛苦的,很多人当初选择做研发是觉得程序开发只面对机器而不是人,正好符合自己不善言辞的木讷内向性格,当自己在这行业学到很多技术,自以为可以松一口气的时候,突然发现自己的性格竟然不适合这个行业了,你是否在有了很多技术经验后有过这样的迷茫?
  你是否在和别人沟通需求时这个表情?

  你是否也像我曾经一样,在别人说观点时一直在寻找一次讲话的机会?或者干脆马上粗暴的打断别人来表达自己的立场?在产品经理提了一个大的需求改动时马上说这个做不了?在提出技术方案后意识到错误,但为了程序员的自尊以及觉得其他人都不懂技术而不去做道歉不做修改?在测试人员指出某个问题时觉得测试人员太过于较真,觉得这种情况一万年也不会出现而懒得修改?
  近读了一本工程师修炼的书,里面讲了重要的一条是沟通。
  无论你从程序员升级为TL,还是PM,还是架构师,或者是高级工程师,其实都是一种晋级。沟通技术知识对你往上升是非常关键的技能。这种技能通常意味着维护你的职位,明确特定项目的潜在风险和当前问题。在单位等级结构的这一层上,你应该阻止产生问题、寻找问题并且解决问题。你的上级都在盯着看你的每一步动作。压力往往会非常大。对于靠技术吃饭的人来说,若想迈出跳至管理的第一步,阶梯上的下个台阶的特性已经大大变化了。尤其是,首先要求的技能是沟通范围、数量大大地拓宽了。
  一、沟通原则
  学习有效沟通是一个终身的过程——永远都有改善的余地。要学习的沟通原则包括:先听后说、专心致志(人和心思在一处)、正面思考等,这些原则有助于建立与别人的信任关系,使你成为更高超的沟通者。

  1. 先听后说
  你有没有发现自己在某次谈话中总是想寻求一次讲话的机会,而没有真正在听别人说什么?当你没有听时,你传递给那个对你讲话的人什么信息呢?
  至少表面上,你显得不在乎别人说什么。大部分人会很快厌倦这样的谈话,因为他们说的话白白在空气中传播却没人去听。说话的人也许会想他还有更好的事要做,而结束此次谈话。如果你只是偶尔这样做,这种行为没什么大不了的。如果这是你的习惯做法,那么你是在自己与别人之间构筑一道墙。
  你听的时候,是不是在找机会纠正对方?即便谈论的话题在往前走,但是你的思路还停留在刚才的某一点上?
  这种情况说明,我们并没有在听别人说什么。讲话的人对你很在乎,从其忙碌的工作中抽出时间,为你提供这些宝贵的信息,所以应该认真去听他说什么。
  当有人与你说话时,要看着他说,并试着理解他想沟通的内容。给对方足够的时间来表达他的观点,然后再向其询问要澄清的问题。向他表达非语言的反馈,例如点头,让他知道你在关注这次谈话。
  我认为罗马人Epictetus说得好:“我们有两个耳朵,一个嘴巴,所以我们应该多听少说。”