一、程序员不善言词#
在大家的印象中,程序员好像是一群不善言词的理工男。为什么大家会有这种刻板的印象呢?
因为程序员的工作,只需要一台电脑,一根网线,就可以开始工作了。好像不需要与人打交道。一段进入到工作状态,编码的时候还不希望被别人打扰,其实是编码思路不愿意被打断。
这时候,他们就可以两耳不闻窗外事,一心只编俺的代码。此时编写程序,是不需要与其它相关人员沟通,只需要和电脑打交道。
但是,实际的情况是不是都不需要与人沟通了呢?当然不是。上面说的情况只是开发一款软件产品或产品功能过程中的一个步骤。
一款软件产品的开发或产品的一项功能开发,到最后上线运营,中间要经历很多步骤。
如下图,一款产品开发的简单步骤:
上图中,编码开发还包括美工、UI、前端、测试、后端等。在最后面还有一个步骤 - 产品运营。所以开发一款产品,涉及到的利益相关人员很多,需要沟通的人也很多。
在这里,程序员最需要沟通的人员就是产品经理。
二、与产品经理的沟通#
程序员与产品经理是 2 种不同的职业,主要职能和思维方式都不相同,专注的点也不同。
产品经理vs程序员职能对比#
产品经理专注于用户需求,竞品分析,产品设计,产品运营指标等等。程序员一般专注于接口设计,程序设计,技术架构,解决方案设计,编码实现,产品落地等等。
产品经理vs程序员思维方式对比#
产品经理与程序员的思维方式也不相同。
产品经理主要想的是用户需求,也就是用户需要什么,在什么场景下需要。用户内心需要什么。竞品有哪些,产品体验怎么做才更好,就像 iphone 的使用体验。怎么让用户不需要思考很顺畅的使用产品,用户怎么增长。产品怎么挣钱,商业模式是什么等。比较关注上层和大的方面。
程序员想的是功能怎么实现才好,下次需求变动少改代码。技术选型,哪些技术比较适合现在的项目。技术怎么设计和架构,才能应对未来的变化。有哪些好的解决方案。有什么新技术。关注技术细节。功能怎么实现落地。比较关注技术细节。
鸡同鸭讲的问题#
鸡同鸭讲最主要的问题,就是沟通双方没有共同的语言。
产品经理和程序员,从上面 2 组图片里的内容就可以看出来,它们各自的职能和思维方式都有很大的不同。在工作上,大家各自职责内的专业术语都没有多少相同。这就有可能在沟通时,导致鸡同鸭讲的问题。产品经理说的内容,程序员不能很好的理解。
怎么办?
- 第一:产品经理能学一些技术相关的内容,不需要学得太深,能顺利沟通就好。毕竟产品经理也不需要编码实现产品功能。这也是为什么有很多技术转产品的一个原因,就是有技术基础,沟通起来会比较有共同语言。
- 第二:技术人员学一点产品知识,利于彼此沟通。
这个大家可以相互开讲座,培训彼此所需要的知识。还可以增加彼此之间的了解。
只有彼此了解,才会理解,沟通才能更加顺利。
不合理的需求#
先看一个流传很广的需求故事,就是产品经理给程序员提了一个需求:
要求app的主题颜色可以随着用户手机壳颜色改变而变化。
然后,程序员和产品经理就干了起来。
这种看起来,就目前阶段的技术来说,就是一个让人很无语的需求。属于无理需求的范围了。
在需求开发时,如果程序员认为是一个不合理的需求,一定要及时与产品经理沟通,询问这个做这个需求的目的,对产品有哪些好处,能带来什么收益?最好能有一些具体的指标,比如用户可能增加多少?用户停留页面时间增加多少?等等。而且上线之后,要和产品经理一起复盘数据,是否达到了当初预期效果。登记起来,既可以做考核指标,提出需求的有效比例,也是对产品经理的警醒。
当然其它需求也要做同样的操作,但是你认为不合理的需求更要重点关注,以此警醒产品经理提需求时要更加深入思考,提出合理的需求。
需求理解不一致#
最能理解这个主题的意思,莫过于一幅树秋千的漫画:
(图片来自于网络,最原始图来自于:www.projectcartoon.com)
客户自己真正需要的和客户描述的往往不一致,在经过相关人员的层层描述,离客户真正需要的越来越远。用户表达出来的需求和自身真正需要的相差甚远。
同理,产品经理获得的用户需求可能和用户需要的相差甚远,即使差的不远,到了开发人员(程序员)这里,开发实现也可能与产品经理描述的需求差的很远,最终导致产品没能满足用户需求。
怎么办?
这就需要开发人员(程序员)与产品经理不断的进行沟通,持续修复错误的认知,慢慢才能接近本质。
同样,开发人员(程序员)有时不可能一开始就有直达本质的解决方案,需要在开发过程中,渐渐弄明白本质的解决方案。
最重要的 3 点:
- 一是从不同的角度来理解用户的需求,尽量对需求有深入的理解。
- 二是不断的沟通,修复错误的认知,加快正确的认知过程。
- 三是程序设计的灵活性,出现问题时能尽快调整程序。
三、与上级领导的沟通#
与上级领导的沟通,一般有如下几种:
- 项目任务分配及对任务的预期
- 一些会议,比如周会
- 1 对 1 沟通
项目任务分配和做任务时:
做任务前要做好是,任务完成的预估时间表。
在做的过程中,如果遇到了困难,要及时向领导反馈情况。每隔一段时间向领导汇报项目的进度情况,让他对项目的进展做到心里有数。
件件有着落,事事有回音。
及时反馈任务完成进度情况。
完成后,复盘总结。
1 对 1 沟通:
1 对 1 的沟通,是与领导沟通的好时机,你可以把在工作中遇到的困惑问题,学习方向等等问题,都可以与领导好好沟通,寻求它的意见或建议。
在沟通前,一定要好好准备,可以把想要沟通的问题都写在纸张上。
四、技术提问#
现在随着 AI 技术的发展,出现了 ChatGPT ,能智能回答问题的应用,它可以直接给出答案,这给技术人带来了不少福音。
在还有就是向搜索引擎提问,一种常见的是百度、谷歌、Bing 这种传统的搜素引擎。
还有一种是结合了 ChatGPT、Bard 等的 AI 型搜索引擎,也是搜索问题答案的很好的方式。
最后一种常见的就是在问答社区、群里进行提问。这种提问,有一个很好的提问指引文章,就是提问的智慧 这篇文章,文章很长,但值得一看,会有收获的。
举一个例子,比如编码出现了 bug,不知道这个 bug 怎么解决,我要怎么提问才能更好的得到别人的回答:
- 交代编码环境:使用编程语言的版本,使用的操作系统是 Linux 还是 Win 等和它的版本
- 代码背景:我想用代码实现一个什么样的功能
- 代码实现:把你编写的代码 Copy 一份出来,给别人检查,有注释更好,别人能理解你代码实现的步骤和逻辑。最好能 Copy 一份出来在线运行。当然敏感信息可以去掉。比如 Go 编程语言,有 Go Playground
- bug 报错信息:给出 bug 报错的详尽信息,这是修正 bug 所需的最重要的线索
- 反馈:修复 bug 后,最好能给出你修复了的反馈信息。比如 bug 具体错误在哪?怎么修复的等等
- 感谢:最后要表达你的感谢,感谢别人的帮助
还有一点,就是谦虚的请教。因为群里聊天有时容易情绪化,都隔着一条长长的网线。
五、信息传递过程的损耗#
我们想传递信息时,说话表达是最普遍的方式。
我们想给某人传递一条信息时的过程,首先自己心里想说的,然后嘴巴用语言表达出来的,把信息传递给对方,对方接收到信息被听到的信息,理解你的语言信息,听懂了的信息(可能只有一部分),最后才是执行。
信息从传递到被接收到最后执行,有这么一个过程。信息在这个传递的过程中是会损耗。我们在用户增长中有一个漏斗模型 AARRR。同理,在信息传递过程中,也有一个信息漏斗效应。
信息传递漏斗效应,模型示意图:
这也是上面的小节中,需求理解不一致导致的原因,信息在传递过程中是会损耗的,到最后需求理解就出现了很大的偏差。
六、沟通的环境和话语的判断#
沟通的环境对于沟通双方来说都很重要,总体来说要有一个安全的环境。
沟通的地方,一般在公司里的话,会选择独立的会议室,这样就不会被人打扰,也不会被人听到沟通的信息。
沟通双方的情绪也要是“安全”。如果是对立的话,要想法设法降低对立情绪。
话语的判断:
对于别人说的一句话,是事实,是观点,还是个人感受,一定要分辨清楚。
七、更好的表达方法#
金字塔原理#
使用金字塔原理来进行条理分明,逻辑清晰的表达。
金字塔原理这本书里有一条沟通的方法:自上而下,结论先行。
金字塔中的结构关系:
- 纵向关系:总结论与份论点、论据之间的纵向关系。
上一层的结论或思想是下一层的概括总结。自上而下结论先行
- 横向关系:分论点之间的横向关系。
横向关系有,演绎关系从因到果,层层递进,推理的结论就是上一层的结论或思想。还有一个,归纳关系就是事物或思想之间有共性,上一层就是对下一层的概括总结。
叙述的方式:可以从 背景、冲突、疑问、回答 四个要素来展开。
当然书里面还有其它的方法,建议大家多看看这本书,然后运用它们。
非暴力沟通#
非暴力沟通是一本关于沟通方面很好的书籍,这本书描述了一种平和的沟通方式 ,通过观察、感受、需要和请求这四步来进行沟通,而不是用道德评判、比较、回避责任和强人所难的方式进行沟通。
导致非暴力沟通的一个重要原因:就是忽视了对方的感受。
比如夫妻双方沟通时,要多关注感受,而不是讲了多大的道理。
说下 2 种典型的很不好的沟通方式,道德评判和比较。
道德评判:当一个人的话语和行为不符合我们的价值观时,我们会习惯给出道德评判。比如这个人没素质,这个人太自私等等。
比较:比较是更容易发生的。比如父母眼中别人家的孩子怎么样怎么样。还有我有一个朋友xxx怎么样。反正都是别人家的好。
非暴力沟通的 4 个步骤:
- 第一步:观察事实,而不是评论
- 第二步:表达自己的感受
- 第三步:表达自己的需要
- 第四步:提出明确的诉求
我们在听别人说话时,不仅要理解说话的内容,还要感知对方说话时的情绪。
更多内容请好好看看这本书。
欢迎大家评论,点推荐。如果文中有不足之处,也欢迎大家留言批评并指正。
大家在工作中,遇到什么沟通的问题,或沟通的好方法,也欢迎大家留言评论。
也欢迎到我的公号留言评论:程序员怎么做沟通?聊一聊程序员沟通相关的问题
八、参考#
- https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md 提问的智慧
- https://go.dev/play Go Playground,Go 语言在线运行
- https://book.douban.com/subject/35519608/ 非暴力沟通