<audio id="audio" title="31 | 工程师、产品经理、数据工程师是如何一起工作的？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/f1/2d/f17e6a2d3b592409aeaae85e6395a22d.mp3"></audio>

做为一名工程师，免不了与产品经理打交道，如果公司大一些，数据量多一些，还会有数据工程师这个角色。今天会和你主要聊一聊在工作中，产品经理和数据工程师在哪些方面对我们工程师的帮助最大，以及我从他们身上都学到了些什么。

# 先来说说产品经理

我工作过的两个公司在早期的时候，很多服务器相关的研发组都是没有产品经理的。这种事在国内公司里比较少见，因为国内大部分产品都是由产品经理来驱动的，但在硅谷很多早期的公司里，这并不算太奇怪，毕竟很多产品经理的职责是工程师兼有的。

随着公司的发展和壮大，每个小组都有了固定的产品经理角色，我接触的产品经理也就慢慢多了起来。

在这个从无到有的过程中，对我帮助最大的是什么呢？我觉得应该是对项目边界和进度把控。

第一，当一个公司足够大的时候，虽然自顶而下管理，很多大的目标和方向在公司内保持了一致性，但是还有很多东西是需要讨论和确定的。

比如：产品和项目的边界如何确定，应该由哪个组做；如果两个组的工作范围有一定的重合性，如何确保两个组的工作是互补而不是重复甚至矛盾的；如果两个组要做的东西有一定的依赖性，在时间安排上如何保证被依赖的部分可以提前完成。

这样一些跨组协调，虽然技术管理者在一定程度上会有很大的话语权，也会参与所有的讨论和决策，但是有产品经理的帮助，他们可以更多把精力放在技术相关的问题上。

第二，不论你是在哪个组，做出来的产品一定是给人用的，使用的人就是你的用户。他们可能就是公司外部客户，也可能是公司内部另一个组的工程师。

有客户就会有需求，当有不同方面的人给你提出不同需求的时候，如何去合理地设定优先级，如何去和那些需求没有被满足的组沟通，如何有技巧地挡掉一些不那么重要的需求等等。这些都需要产品经理做大量的工作，让工程师把时间和精力更加专注地放在最重要最紧急的项目上。

第三，很多产品经理也会和技术管理者一起，兼任项目管理的职责。小到帮助安排各种定期不定期的会议，负责会议记录；大到帮助技术管理者一起制定项目的进度表，定期进行工程进度总结汇报等。

那么在这个过程中，技术经理或者技术管理者又给产品经理提供哪些帮助呢？

这包括：对某一个项目或者子项目的技术难度的工作量进行评估；给出多个可能的技术方案，包括长期方案和短期方案，以及每个方案的利弊；对组员能力的评估，知道谁可能去做什么，组里现在是不是有人有经验或者能力，去负责某个项目，攻克技术点等等。这样产品经理可以更好地设计产品特征，设定需求边界。

从产品经理身上，我学了很多东西，这包括了：各种沟通能力，会议、邮件、一对一面谈、处理和制定优先级的能力、如何回绝不合理的需求，还有一些项目管理和追踪的技巧。

## 再来说说数据工程师

关于数据工程师的文章很多，我在自己的公众号和之前的专栏文章（每个工程师都应该了解的：A/B 测试）都略有涉及。这里着重讲讲他们在工程协作中什么时候和工程师的交互最多，以及在合作中有哪些地方让我印象深刻。

硅谷很多项目在产品开发初期就会有数据工程师的参与。

包括如何设计数据实验，了解产品或者项目是不是达到预期的效果；哪些老的数据和指标（ Metrics ）是需要监控的，以保证不会影响其他的产品或者项目；哪些地方可以通过数据模型给出最优方案 —— 这些地方通常是可以使用机器学习的部分。

当然，在很多专门的机器学习应用领域，数据工程师的重要性更加不言而喻。

在产品开发后期，或者产品发布初期，数据工程师会帮助调整各种监控系统或者预警系统，确保当系统出现异常，或者某些用户行为不在预料之中的时候，工程师们能第一时间了解情况。

与软件工程师相比，数据工程师有着不同的技术背景，他们的很多能力是和工程师互补的，但是有一件事，是我们可以去学习并为我所用的，那就是对数据的敏感性。

记得有一次，生产线上的一个 Bug，导致整个产品线有一个转化率变得格外差。因为问题比较严重，好几个工程师都去调试并定位错误，但是都没能找到问题所在。

结果他们的数据工程师通过观察不同指标下数据变化的时间线，在一些数据变化的异常曲线里找到了问题发生的关键时间点；再去找那个时间所有的改动，包括代码改动和灰度发布控制开关的变化，从而找出了问题。

另一个案例是听朋友说的，他也做支付，产品的一个代码改动，没有设置合适的异常，也就是该抛异常的地方没有把异常扔出来，结果数据下溢导致一笔金额数字错误。因为是很少见的场景，所以测试的时候也没有发现，但是数据工程师在数据图中的异常报警发现了这个问题，减少了一笔不必要的损失。

见微知著，其实我描述的案例，仅仅体现了数据工程师的一小部分价值。在大数据和人工智能的时代，数据工程师的作用正变得越来越不可替代。

今天主要讲了一些我和产品经理、数据工程师一起工作的故事，这其中包括了我自己的感受。

做为一个软件工程师，有机会和他们一起工作，从他们视角去看待问题，可以拓展自己的知识领域和眼界，一方面可以把产品做得更好，另一方面，让自己成为一个既有产品思维，又有数据思维的工程师，会让你在这个时代具备更强的竞争力。

关于产品经理的主题，你如果有兴趣了解，可以去订阅隔壁邱岳老师的“产品手记”。

无论是你工程师、产品经理还是数据工程师，请在留言里写下你的故事，我们一起成长。感谢你的收听，我们下期再见。
