You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
6.4 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 31 | 工程师、产品经理、数据工程师是如何一起工作的?
做为一名工程师,免不了与产品经理打交道,如果公司大一些,数据量多一些,还会有数据工程师这个角色。今天会和你主要聊一聊在工作中,产品经理和数据工程师在哪些方面对我们工程师的帮助最大,以及我从他们身上都学到了些什么。
# 先来说说产品经理
我工作过的两个公司在早期的时候,很多服务器相关的研发组都是没有产品经理的。这种事在国内公司里比较少见,因为国内大部分产品都是由产品经理来驱动的,但在硅谷很多早期的公司里,这并不算太奇怪,毕竟很多产品经理的职责是工程师兼有的。
随着公司的发展和壮大,每个小组都有了固定的产品经理角色,我接触的产品经理也就慢慢多了起来。
在这个从无到有的过程中,对我帮助最大的是什么呢?我觉得应该是对项目边界和进度把控。
第一,当一个公司足够大的时候,虽然自顶而下管理,很多大的目标和方向在公司内保持了一致性,但是还有很多东西是需要讨论和确定的。
比如:产品和项目的边界如何确定,应该由哪个组做;如果两个组的工作范围有一定的重合性,如何确保两个组的工作是互补而不是重复甚至矛盾的;如果两个组要做的东西有一定的依赖性,在时间安排上如何保证被依赖的部分可以提前完成。
这样一些跨组协调,虽然技术管理者在一定程度上会有很大的话语权,也会参与所有的讨论和决策,但是有产品经理的帮助,他们可以更多把精力放在技术相关的问题上。
第二,不论你是在哪个组,做出来的产品一定是给人用的,使用的人就是你的用户。他们可能就是公司外部客户,也可能是公司内部另一个组的工程师。
有客户就会有需求,当有不同方面的人给你提出不同需求的时候,如何去合理地设定优先级,如何去和那些需求没有被满足的组沟通,如何有技巧地挡掉一些不那么重要的需求等等。这些都需要产品经理做大量的工作,让工程师把时间和精力更加专注地放在最重要最紧急的项目上。
第三,很多产品经理也会和技术管理者一起,兼任项目管理的职责。小到帮助安排各种定期不定期的会议,负责会议记录;大到帮助技术管理者一起制定项目的进度表,定期进行工程进度总结汇报等。
那么在这个过程中,技术经理或者技术管理者又给产品经理提供哪些帮助呢?
这包括:对某一个项目或者子项目的技术难度的工作量进行评估;给出多个可能的技术方案,包括长期方案和短期方案,以及每个方案的利弊;对组员能力的评估,知道谁可能去做什么,组里现在是不是有人有经验或者能力,去负责某个项目,攻克技术点等等。这样产品经理可以更好地设计产品特征,设定需求边界。
从产品经理身上,我学了很多东西,这包括了:各种沟通能力,会议、邮件、一对一面谈、处理和制定优先级的能力、如何回绝不合理的需求,还有一些项目管理和追踪的技巧。
## 再来说说数据工程师
关于数据工程师的文章很多我在自己的公众号和之前的专栏文章每个工程师都应该了解的A/B 测试)都略有涉及。这里着重讲讲他们在工程协作中什么时候和工程师的交互最多,以及在合作中有哪些地方让我印象深刻。
硅谷很多项目在产品开发初期就会有数据工程师的参与。
包括如何设计数据实验,了解产品或者项目是不是达到预期的效果;哪些老的数据和指标( Metrics )是需要监控的,以保证不会影响其他的产品或者项目;哪些地方可以通过数据模型给出最优方案 —— 这些地方通常是可以使用机器学习的部分。
当然,在很多专门的机器学习应用领域,数据工程师的重要性更加不言而喻。
在产品开发后期,或者产品发布初期,数据工程师会帮助调整各种监控系统或者预警系统,确保当系统出现异常,或者某些用户行为不在预料之中的时候,工程师们能第一时间了解情况。
与软件工程师相比,数据工程师有着不同的技术背景,他们的很多能力是和工程师互补的,但是有一件事,是我们可以去学习并为我所用的,那就是对数据的敏感性。
记得有一次,生产线上的一个 Bug导致整个产品线有一个转化率变得格外差。因为问题比较严重好几个工程师都去调试并定位错误但是都没能找到问题所在。
结果他们的数据工程师通过观察不同指标下数据变化的时间线,在一些数据变化的异常曲线里找到了问题发生的关键时间点;再去找那个时间所有的改动,包括代码改动和灰度发布控制开关的变化,从而找出了问题。
另一个案例是听朋友说的,他也做支付,产品的一个代码改动,没有设置合适的异常,也就是该抛异常的地方没有把异常扔出来,结果数据下溢导致一笔金额数字错误。因为是很少见的场景,所以测试的时候也没有发现,但是数据工程师在数据图中的异常报警发现了这个问题,减少了一笔不必要的损失。
见微知著,其实我描述的案例,仅仅体现了数据工程师的一小部分价值。在大数据和人工智能的时代,数据工程师的作用正变得越来越不可替代。
今天主要讲了一些我和产品经理、数据工程师一起工作的故事,这其中包括了我自己的感受。
做为一个软件工程师,有机会和他们一起工作,从他们视角去看待问题,可以拓展自己的知识领域和眼界,一方面可以把产品做得更好,另一方面,让自己成为一个既有产品思维,又有数据思维的工程师,会让你在这个时代具备更强的竞争力。
关于产品经理的主题,你如果有兴趣了解,可以去订阅隔壁邱岳老师的“产品手记”。
无论是你工程师、产品经理还是数据工程师,请在留言里写下你的故事,我们一起成长。感谢你的收听,我们下期再见。