如何做一位与项目团队合作良好的产品经理

原文(繁体中文): 如何做一位與工程團隊合作良好的產品經理, 作者: ihower 台湾。
本文很好的描述了对产品经理的五个误区。

产品经理(Product Manager)是任何创新产品的关键角色,他定义了产品的需求规范,找出产品的价值所在。而一个成功的产品代表结合了好的产品需求规范,以及能够依据这个需求规范实现出来的项目团队。我们说产品经理负责 Building The Right Product,而项目队负责 Building The Product Right,两者缺一不可。由此可知产品经理与项目团队之间的关係有多么重要。

以下是几点是我认为可以帮助产品经理与项目团队的合作,一起打造更好的产品:

1) 定义清楚这个产品

这是最基本也是重要的,要讲三遍:「定义产品」、「定义产品」、「定义产品」,为什么这么根本的事情还做不好呢? 很多时候是组织的问题,没有人专职负责,例如:

产品经理就是老板。但是老板太忙了,只定义了「high-level」需求,而没有定义细节规范。于是工程师就得自己脑补,最后做错了被骂又重做。

销售客服来兼职产品经理。销售很了解如何告诉世界这个产品有多棒,但是却不一定能够发现需求并定义清楚这个产品,这两者的技能是不一样的。并且很容易发生传声筒现象,直接把单一客户的需求告诉工程师,而非经过一致的产品思考规划以及使用者体验设计。

我们会在之后的文章继续探讨什么是好的规范文件。它代表了使用者应该要有什么体验、产品有哪些功能和行为,以及功能的开发优先顺序。除了基本的 User Story,也应包含 Wireframe 界面流程和关键的测试案例。

2) 建立良好的沟通管道

就算规范写的再清楚,开始实现之后就会有一堆问题冒出来。如果没有人可以问或是等不到产品经理的回覆,开发人员就会开始脑补这个功能,硬着头皮继续做下去(然后又做错了被骂,需要重做)。或是就停下来,找其他低优先的事情来做。无论怎样都是很大的浪费。

建立一个良好的沟通管道,让工程师可以很快地跟产品经理问到答案。最好是同一个办公室,越是 Remote 的工作环境,那么规范文件就需要越清楚。

3) 不要负责项目管理

如果没有专职的项目经理(Project Manager),就请 Lead Engineer 来负责项目进度。不要让产品经理去兼项目管理。项目管理的重点在于执行及发布产品、协调开发、测试与营运团队。让产品经理来做不只是力有未逮,也会造成两方关系的紧绷,压榨工程师的故事不断真实上演,就是因为由不了解软件工程的人负责项目管理。

在知名的 Scrum 敏捷软体开发方法中就提到:产品经理决定作什么,让项目团队决定如何做及可以做多少。

4) 不要告诉项目团队怎么做,告诉他们要做什么

很多产品经理喜欢把需求描述成解决方案,指定了一个不可行或者是成本效益很低的作法,而非告诉工程师他们想要达到的目标,或是想要解决的问题根本是什么。

F-16 是史上最成功的战斗机之一,在一开始设计的要求是需要超过两马赫的速度,首席设计师问了美国空军为什么飞行速度这么重要,答复是「飞机必须可以从战斗中逃脱」。最后的设计并没有超过两马赫,但是却可以让飞机很敏捷的逃脱,透过了无框的坐舱、抬头显示器,让飞行员有更好的视野。可倾斜的座位降低了重力影响。飞行控制杆是安装在右手边上,而非传统的在两腿之间,用来辅助在高G值时候转弯。这些设计不但也能达成设计目标,更降低了生产成本。

这个问题其实不只产品经理,工程师本身也常犯这个错误,常常可以在讨论区看到有人问「请问这个指令 X 怎么用」,然后底下的讨论怎样都无法完全解决他的问题,直到有人问「为什么你需要这个 X?」,他回答「因为他要做 Y 功能」,大家恍然大悟用 X 来解决根本是错的,应该用指令 A 就可以很简单的解决了。

在大多数的情况下,工程师比产品经理更清楚知道哪个实现方案最适合。

5) 相信工程师专业

产品经理负责 Building The Right Product,而项目团队负责 Building The Product Right。相信工程师的专业,就是让项目团队可以实行任何他们认为建构一个有质量保证的产品需要的作法,例如撰写自动化测试、Pair Programming、建构 CI 持续整合环境,Code Review 代码审查等等。这些工作虽然不直接与产品需求相关,却对工程质量有很大的影响。这些事情现在不做,在项目开发几个月之后,很快就会吞噬整个项目进度和质量。

以上五点可以帮助产品经理和项目团队合作的更愉快,但是请记得无论项目团队再优秀,如果产品经理无法定义出一个值得建造的产品,一切也是枉然。