我们从一生下来,就离不开“交流”,与父母的交流,与朋友的交流,上学后与老师交流,工作后与老板,与客户交流,但如果你和我一样是一个程序员,那就不仅仅是与人的交流了,还有计算机。

沟通,应该注意以下几点:

  1. 沟通的对象和语言

C语言是程序员与计算机交流的语言,而与客户交流,就不能用C语言了。程序员面对是计算机,但计算机不是客户。作为开发人员,他们可能更希望客户能学习或者精通C语言,这样客户就能知道开发人员在做什么,或者,这样的客户还能以C语言的方式告诉开发人员他们究竟想要什么。然而,要求客户学习C语言,显然是不可能的,这是一种自杀式的行为。因此,开发人员最后避免与客户直接接触。而作为项目经理,他可以不用精通C语言,甚至不用太多了解,也可以与客户交流,因为,还有汉语。

我们知道,如果运用得法,“用例图”也可以用甲骨文来表示,这么说来,甲骨文就可可以作为一宗模型语言使用。那么,如果你项目中面对的对象是周商文化的考古学家,以及你的团队成员也精通这种语言,这时,你就可以用甲骨文来做项目文档,以及画各种模型图例。因为,要让考古学家看懂用例图,难度远大于看懂甲骨文。

因此,当我们面对不同对象的时候,就要选择不同的语言,这才能保证沟通能顺利进行。

  1. 沟通时的角色定位

与客户沟通之前,我们首先要对自己有一个定位,到底是开发人员的角色还是项目经理的角色?因为有时候会希望开发人员更快的进入角色,所以就需要开发人员直接面对客户,但注意得将角色转变为“需求调研”,如果他不能适应这种角色的转变,那将会是灾难的开始。因此,合适的角色定位对于沟通来说非常重要。

  1. 沟通前的设计

沟通也是需要设计的,比如在与客户见面之前,你要和他谈什么?你要问他一些什么问题?如果你能先设计几个他可能会问的问题,或者他听了你的回答后可能会有的反应,这将会为你增加不少信心。

  1. 沟通的方式 

我们需要针对不同的客户制定特定的沟通方式。首先,我们要让客户认为我们了解他们的需求,这样他们才愿意与我们沟通,所以,一定要制定有效的沟通方式。

  1. 沟通后的总结

每一次沟通结束后,一定要有总结,从中发现不足并加以改正,这样才能使下一次的沟通方式更行之有效。

其实与计算机的沟通,也需要这样的一个流程。

需求阶段:与谁联系、联系方式、过程、结果以及由此引发的需求或变更;

设计阶段:如何进行设计、最初的构架、各个阶段的框架变化、因需求变更导致项目结构上的变化(有助于了解构架的可扩充性);

开发阶段:每一种技术选型的过程、每一种开发技巧的细节和相关文档、摘要的每一段代码、算法、开发包、组件库的出处和评测;程序单元的测试框架;每一个设计和框架变更所导致的影响;

测试阶段:还记得测试用例和测试报告吗?那是最好的history之一。