都2023了!我不允许你还不了解AIGC!立即报名 了解详情
写点什么

这是一篇工程师对产品经理的吐槽

  • 2020-05-21
  • 本文字数:2629 字

    阅读完需:约 9 分钟

这是一篇工程师对产品经理的吐槽

优秀的产品负责人拥有塑造产品愿景的天赋,但如果负责人在产品的初始构想阶段就没能与工程师有效沟通,结果只会浪费时间、机会和人才,这样下去最后可能会毁掉一个项目。


本文最初发布于 builtin.com,经原作者授权由 InfoQ 中文站翻译并分享。


所有成功的软件公司都有一个共同点,那就是他们能够开发出让客户为之买单的产品。


但是,构建一款成功的产品需要做大量工作。这些工作包括了解用户需求、集体讨论用户流程、设计界面和架构,然后是实现、测试,最后推出产品功能。


所有这些环节都需要许多拥有不同技能的团队成员参与。但是,即使在鼓励协作的敏捷环境中也普遍存在一个问题,那就是产品负责人会独自承担塑造产品愿景的职责,并且常常无法采纳其他团队成员的意见。


这些产品负责人会独自提出关于产品功能形态和实现方式的想法。然后,他们将相关的规范或故事转交给开发人员,让后者去评估和实现。


在这种情况下,客户需求在到达开发人员之前已经经历了一系列反馈循环。在前期,开发人员对一开始出现的问题一无所知;他们只知道产品负责人要他们做出来哪些功能。


在实践中,一个例子就是用户故事的接受标准被强加了一个特定的技术实现。


想象一下你正在构建一个电子商务平台。产品负责人要求你保留产品价格的历史记录。他们还不知道如何将其呈现给用户。但是他们希望有某种价目表,其中包括每次价格更改的日期,以及一个显示当前值的字段。


当你询问如何在验收会议上验证此类需求时,他们会告诉你质量检查小组将在数据库中检索产品,并检查产品是否具有价目表和当前值的属性。


这个用户故事在很多层面上都是错误的:首先,它不会为用户带来任何有用的价值,因为它是后端的更改,不会影响用户体验。其次,产品负责人强行指定了解决这个问题的方法,但他的方法可能不是最佳解决方案。


其实用不着为当前值和价目表提供属性,只需保留一个包含价格和日期的数组即可,例如:


const prices = [{price: 16, date:”12-04-2020”}, {price: 15.99, date:”20-04-2020”}]
复制代码


在程序中,我们可以从价格更改的日期推断出最新的价格就是当前价格。


上面的例子描述了一种简单的情况。对于更复杂的用户故事而言,强行让开发人员使用某种解决方案,不仅会减慢开发团队的速度,而且还会引入软件设计错误。


多数人认为某些工程决策会导致软件质量下降,而实际上这是软件项目管理不力的表现。


以我的经验,失败的软件项目过程大都类似:产品负责人希望构建一个特定的解决方案,却没有明确指出他们要解决的是什么问题。


对于产品的第一次迭代而言,这可能可以理解。但随着产品逐渐成熟,产品负责人应该对产品要解决的问题有更清晰的认识,并与团队一起寻找合适的解决方案。


否则,功能和需求的反复横跳会迫使团队花费大部分时间来重建各种东西,或者他们得被迫使用某种老式的软件决策系统,最后拖累新功能发布的速度。


开发人员对功能请求的反应可能有所不同。有些人可能会接受这些要求,并完全按照需求描述来执行这些要求,而不会提出任何问题,还有人会提出问题并了解需求背景。在开始实现功能之前,他们会首先尝试找出潜在问题。他们会提出另一种选项,来了解产品负责人都考虑了哪些因素,以及为什么负责人决定走这一条路而不是另一条。


我们将这类开发人员称为产品工程师。这些人能够将自身强大的技术背景与对业务的透彻理解结合起来运用,他们在完善产品的过程中起到了至关重要的作用。


正如 Atlassian 的产品经理 Sherif Mansour 在他关于产品工程师的文章中所述(https://medium.com/@sherifmansour/product-engineers-f424da766871):


作为一门年轻的学科,我们花费了大量时间来研究“如何”构建软件,而这依旧是学校教育的重点所在。但是一旦有了基础,我们就需要那些积极探索“为什么”这样做的开发人员。这类开发人员是渴望使用技术解决人类/用户问题的工程师。他们富有同理心,渴望探索奇妙的旅程。这就是我在书中定义的产品工程师。……低水平的产品工程师会绕很多远路,但伟大的工程师知道,团队在构建 MVP 产品的阶段就需要有足够的思考深度。


产品工程师提出了不同的解决方案,但他们也能够快速估算出各种方案的可行性。产品工程师通常会对潜在实现所需的工作量有更准确的判断。这样他们就可以迅速评估多种解决方案。


也许产品工程师提出的解决方案是产品负责人一开始就放弃的,因为后者担心这种方案需要的投入太大,也许产品负责人甚至都不知道有这么一种可行的方案选项。


在为开发人员开发产品的公司中,产品工程师是必备的角色。我之前在 Crate.io 的一个团队中任职,我们负责的产品是一个分布式 SQL 数据库。那时我得以同许多有能力的产品工程师共事。我们的产品负责人知道如何在产品构想阶段就调动起这些产品工程师对问题解决方案的热情。


那些工程师拥有丰富的知识和影响力:每个人都向他们提出各种问题。当然,他们没有那么高大上的头衔;他们只被称为软件工程师而已。


我要讲的重点并不是要为他们的职位换上好听的头衔和描述(尽管这可能会有所帮助)。热情的产品工程师确实存在,而且他们的专业知识非常宝贵。优秀的产品负责人具有塑造产品愿景的天赋,但若负责人无法利用产品工程师的独特经验和见解,就是对机会和人才的浪费。


跨职能协作会带来最佳结果。产品工程师可以提供有关解决方案可行性、可用性和安全性问题的见解;产品负责人可以提出产品愿景:管道中有哪些功能,为什么?


正如 Marty Cagan 在这篇文章(https://svpg.com/the-most-important-thing/)中所解释的那样,赋予产品工程师权力,并不只是让他们自由选择代码基础和架构就够了:


赋予工程师权力,意味着你可以让工程师了解你要解决怎样的问题,了解业务的战略背景,这样他们就能够利用技术来找出解决问题的最佳方法。


判断你是否已赋予工程师权力的一种简单方法是,如果你的工程师第一次看到产品创意是在 Sprint 计划会上,那么你们显然就只是一支功能团队,而你的工程师在任何层面上都没有得到充分的权限。


我一直在说,如果你只是让自己的工程师写代码,那么你所获得的价值就只是他们潜力的一半而已。


这样可以确保工程师与产品团队保持一致,并帮助他们了解产品决策背后的意图。要打造成功的产品,团队合作是必不可少的:拥有不同技能的人们需要团结起来。应当鼓励工程师尽早参与讨论。如果将他们排斥在外,那么代价就会体现在产品之中。


作者介绍:


Meriam Kharbat 是 Field Intelligence Inc.的高级软件工程师。


原文链接:https://builtin.com/software-engineering-perspectives/product-engineers


2020-05-21 11:151505
用户头像
赵钰莹 InfoQ 主编

发布了 835 篇内容, 共 547.3 次阅读, 收获喜欢 2629 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 | 测试开发 | 免安装免配置环境的免费 ios 调试工具 sib 来啦

测吧(北京)科技有限公司

ios 测试

从 Linux 内核角度探秘 JDK NIO 文件读写本质

bin的技术小屋

Linux jdk nio Linux Kenel 文件I/O

利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

软件测试 | 测试开发 | Pytest 测试框架,零基础也能轻松 hold 住

测吧(北京)科技有限公司

软件测试 测试

Apache Hudi X Apache Kyuubi,中国移动云湖仓一体的探索与实践

网易数帆

大数据 Kyuubi Hudi LakeHouse 湖仓一体

代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

软件测试 | 测试开发 | 如何利用 xUnit 框架对测试用例进行维护?

测吧(北京)科技有限公司

软件测试

你以为Shell只是命令行?读懂这篇文,给你的工作赋能

霍格沃兹测试开发学社

利器 | TestNG 与 Junit 对比,测试框架如何选择?

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

大咖说 | 无影携手实在智能助力企业“数智化”转型

大咖说

无影 实在智能

利器 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

CodeLab:一款让你体验丝滑般的云化JupyterLab

华为云开发者联盟

人工智能 华为云 企业号九月金秋榜

DevStream 社区贡献者英雄榜上线啦!

玩转Devop和研发效能DevStream/DevLake

开源 DevOps 开源社区 DevStream 开源运营

GaussDB(for Redis)双活容灾支持4大应用场景,全新守护业务安全

华为云开发者联盟

数据库 后端 企业号九月金秋榜

软件测试 | 测试开发 | java远程连接ssh的实现

测吧(北京)科技有限公司

java;

一文带你了解K8S 容器编排(下)

霍格沃兹测试开发学社

Github最新霸榜!Alibaba架构师手写的分布式系统核心原理手册

了不起的程序猿

Java 分布式 开发 分布式系统 java程序员

利器 | Java 接口自动化测试首选方案:REST Assured 实践 (一)

霍格沃兹测试开发学社

堡垒机定义、由来以及价值简单说明-行云管家

行云管家

网络安全 数据安全 堡垒机 行云管家

字节一面:服务端挂了,客户端的 TCP 连接还在吗?

Java全栈架构师

程序员 面试 TCP 计算机网络 秋招

只懂黑盒测试也能学会的代码覆盖率及精准化测试

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

软件测试 | 测试开发 | Web服务端推送技术介绍

测吧(北京)科技有限公司

Web 软件测试

面试官:如何组装一个注册中心?

Java永远的神

编程 程序员 面试 微服务 注册中心

软件测试 | 测试开发 | HttpRunner初体验

测吧(北京)科技有限公司

软件测试 测试

利器 | REST Assured 实践(二):断言实现

霍格沃兹测试开发学社

软件测试 自动化测试 测试开发

如何设计一个高并发系统?这篇文章全部给你讲清楚了

Java永远的神

程序员 面试 后端 高并发 架构师

Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

测吧(北京)科技有限公司

Python 自动化测试 pytest

程序员交接代码中被植入了恶意删除操作,太狠了!

程序员小毕

Java 程序员 面试 程序人生 码农

数据可视化系列教程之React组件使用技巧

云智慧AIOps社区

前端 React 数据可视化

MySQL系列——连接查询、子查询、union合并、limit

胖虎不秃头

MySQL 数据库 9月月更

日志易正式加入华为云云商店联营模式,并受邀参与首届828 B2B企业节

IT资讯搬运工

华为 华为云

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
这是一篇工程师对产品经理的吐槽_文化 & 方法_Meriam Kharbat_InfoQ精选文章