近日在网上读到一篇标题为《The Product-Minded Software Engineer》的文章,该文讲述了具有产品思维的软件工程师都具备哪些特点,在文末也给出了如何成为具有产品思维的软件工程师的秘诀。读完很有感触,身处现如今的互联网环境,工程师如果还只专注于技术,未免有些狭隘。毕竟工程师的价值并不只体现在技术层面上,还应体现在产品、商业等层面上。

文章很好,于是就把它翻译了出来,以期大家一起学习探讨,共同提高。


具有产品思维的工程师是指那些对产品本身非常感兴趣的开发人员。他们会想去了解每个产品决策背后的原因,以及用户如何使用他们的产品,同时他们也乐于参与产品决策。如果他们决定放弃工程的乐趣(即放弃从事工程师工作),他们很可能会成为一名优秀的产品经理。我曾经与许多具有产品思维的优秀工程师一起工作,并认为自己也是这样的开发人员。在开发世界级产品的公司中,具有产品思维的工程师能把团队的影响力提升到一个新的水平。

Atlassian 公司的产品经理 Sherif Mansour 写了一篇关于产品工程师以及产品经理如何识别这些产品工程师并与他们良好合作的优秀文章。他的观点很相似:

在我过去十年的产品管理工作中,我得出的结论是,产品工程师是帮助你构建成功的产品、扩展自己并成为更好的产品经理的关键因素。

他还引用了 Shopify 的工程主管 Jean-Michel Lemieux 的话,他对产品工程师的定义是这样的:

一旦你有了产品基础,你就需要这些积极问“为什么”的开发人员、这些渴望使用技术解决人类/用户问题的工程师、还有那些具有同理心的人来获得神奇的体验。这就是我书中对产品工程师的定义。优秀的产品工程师知道在构建阶段需要考虑最小可爱产品的正确深度,而不好的产品工程师则会砍掉过多的产品功能需求。

开发面向用户功能的、并与产品经理合作的团队,是具有产品思维的工程师可以产生巨大影响的环境。他们常常会成为主要贡献者、产品经理的首选人员、并且也常晋升为团队领导。那么,具有产品思维的工程师的关键特征是什么,如何才能变得更加具有产品思维?本文总结了我观察到的这类人共有的 9 个特征,以及我对工程师培养他们的产品思维肌肉的建议。

1. 积极主动地对待产品理念或观点

具有产品思维的工程师不会满足于拿到需求说明后就匆匆忙忙地实现它。他们会思考其他的创意,并找产品经理提出这些想法。他们会经常挑战现有的需求说明,建议其他可能更优的替代性方法。

2. 对业务、用户行为和数据的兴趣

具有产品思维的工程师们的想法和创意都不是凭空得来的。他们会花时间去了解企业是如何商业运作的,产品又是如何配合商业运作,以及最终要达到什么样的商业目标。此外,他们也会去换位思考,试图理解产品将给用户带来什么感受,以及用户如何从使用产品中受益。他们通常会直接去深入研究商业数据和用户测量指标,并尽其所能获取这些数据。如果可能的话,他们会直接访问相关数据,或者找产品经理、数据专家去要这些信息。工程师们这样做,往往是出于他们好奇的天性。这也是我观察到的下一个特征。

3. 好奇心和对“为什么”的浓厚兴趣

具有产品意识的工程师喜欢去理解所有事物背后的那个“为什么? ”。为什么产品要开发这个功能、而不开发另一个功能呢?为什么要首先发布这一里程碑,而不是选择另一个更简单的里程碑呢?如何进行测量——为什么我们不选择一种更全面彻底的度量方式来测量呢?

他们能够自主地找到他们能够找到的答案。他们也会向产品经理和其他业务人员寻求帮助,找寻其他与产品相关问题的答案。尽管他们经常会问很多问题,但是他们都会设法不让其他人觉得不爽,因为他们已经与那些同事建立起了牢固的关系。

4. 强大的沟通能力,建立与非工程师同事良好的关系

具有产品意识的工程师喜欢与软件工程领域外的同事们交谈,了解他们在做什么、为什么做。他们善于沟通,充分显示他们对于学习其他学科工作方式的浓厚兴趣。我经常看到他们和其他专业的同事们一起喝咖啡、吃午饭或者在走廊上聊天。

5. 提前在产品和工程两方面做出权衡

因为具有产品思维的工程师们对产品的原理以及软件工程都有深刻的理解,他们可以提出非常独到的建议,而很少有别人可以做到。例如,在确定产品构建的工作范围时,打造产品某项关键功能的编程工作量可能非常巨大。许多工程师会开始寻找减少工作量的方法,并试图明确减少工作量对该项关键功能可能会产生的影响。

具有产品意识的工程师会从两个角度来解决这个问题:一方面在工程方面进行取舍,明确可能对产品产生的影响;同时在另一方面,他们还会开始对产品功能进行取舍,评估对工程工作量的影响。他们经常会去找产品经理,在保持产品体验相似的前提下,建议构建一个完全不同的功能,从而使得编程的工作量大幅降低。

兼顾产品和工程、平衡两者的影响,是具有产品意识的工程师们拥有的独特优势。他们可以快速地在同一枚硬币的两面之间来回切换:产品特性、工程工作量和两者的平衡。由于他们利用其工程和产品两方面的洞察力,在头脑中快速完成上述权衡,所以他们能够很快得出有价值的结论。

6. 以务实的方式处理边缘案例

边缘案例是一件很有意思的事情。有的工程师经常会忘记边缘案例的存在,最后从产品测试人员或最终用户那里得到反馈之后,才不得不回过头来解决这些问题。这是一个极端,而另一方面,如果在一个新产品或功能中试图处理所有可能的边缘情况,则可能会耗费大量的时间。

具有产品意识的工程师会很快制定出关于边缘案例的计划,并思考如何减少工作量,并经常会找到不需要额外工作量的解决方案。他们专注于“最小可爱产品”的概念,评估边缘案例的影响和处理所需的工作量。他们会提供很好的折衷建议: 在发布早期版本之前,列出大多数可能出错的地方,并提出需要解决哪些边缘案例的建议。

例如,对于一个千分之一的用户可能会遇到的错误,他们会考虑修复这一错误涉及的工作量,以及如果什么都不做会发生的后果。在产品验证过程中,客服专员是否可以在这个案例中帮助用户?用户下一次再遇到同样问题可以自己尝试成功解决吗?对产品进行略微调整,是否就可以避免边缘案例?

7. 快速的产品验证周期

甚至在开发的产品功能可以上线之前,具有产品思维的工程师们早就已经找到创造性的方法来获取早期的反馈意见。他们可以和同事一起进行走廊测试,可以向产品经理演示尚在开发中的功能,也可以在 Beta 版本发布前组织整个团队来一场“漏洞大扫荡”,当然还有许多其他创造性的方法。他们会一直思考这个问题:“我们怎样才能验证用户们会像我们预期的那样来使用这个功能?”

8. 对产品功能从头至尾负责到底

经验丰富的工程师们都会对他们的工作从头至尾负责到底:从拿到产品规范到部署实施,再到发布产品并最终验证产品能否正常工作。除了上述这些工作以外,具有产品意识的工程师通常会举一反三、再进一步。

他们坚信,只有在获得用户行为和商业指标的结果之后,他们的工作才算全部完成。产品上线后,他们仍然会积极与产品经理、数据专家和客户支持渠道保持密切沟通,以便了解产品功能在现实世界中的使用情况。要获得足够得出结论的可靠数据通常需要几周时间。即使他们可能已经接手下一个新项目,他们仍然会把检查上一项目的成果作为首要任务之一。这并不是一项特别耗时的活动,但是特别需要一种锲而不舍的精神,推动那些想要知道自己的辛勤劳动究竟效果如何的工程师们,去坚持探寻答案。

当开发的某项功能表现得不如预期时,他们会特别好奇问题出在哪里?他们对于找到产品计划和现实世界结果之间存在差距的根本原因怀有浓厚的兴趣,程度不亚于他们在代码库中找到难以复现的缺陷并成功除错。他们经常会花费大量的时间,就某些假设和心得与产品经理和数据专家展开辩论。

9. 通过反复循环的学习,形成强大的产品本能

对于有产品意识的工程师来说,一个典型的项目通常是这样的:

  1. 他们会提出很多问题,来准确理解构建产品功能的原因;
  2. 他们会提供建议和取舍方案,其中某些建议会反映在修订后的产品设计规范中;
  3. 他们会很快开发出相关功能,以便尽早得到反馈意见;
  4. 在产品发布之后,他们会积极跟进了解相关产品功能是否符合预期;
  5. 如果没有达到预期,他们会深入挖掘原因,并学到产品在现实世界中使用的新知识。

每完成一个项目,他们对产品的理解就会加深,他们开始培养起越来越好的产品直觉。等到下一个项目,他们会贡献更多有价值的建议。随着时间推移,他们会成为产品经理最愿意去讨教的大专家,在新的项目还未开始之前就会提前去征求他们的意见。他们将名声在外,为持续的职业发展打开更多的大门。

成为更有产品思维的工程师的秘诀

如果你在开发面向用户的产品,这里有一些我认为效果很好的技巧,可以增强你的产品思维。

  • 了解公司成功的方式和原因。商业模式是什么?钱是怎么赚的?哪部分最赚钱,公司哪部分发展最快?原因是什么?你的团队如何适应这一切?
  • 与你的产品经理建立牢固的关系。大多数产品经理会抓住机会指导工程师。让工程师对产品感兴趣意味着他们可以更好地扩展自己。在进来之前,问很多产品问题,花时间建立这种关系,并向你的产品经理明确表示,你想更多地参与到产品中来。
  • 参与用户研究、客户支持和其他活动,你可以在其中了解更多有关产品如何运作的信息。与设计师、用户体验人员、数据科学家、运营人员和其他经常跟用户互动的人员结伴。
  • 提出有充分依据的产品建议。在你对业务、产品和利益相关者都有一个很好的了解之后:就要采取主动。你可以为你正在进行的项目提出一些小建议。或者,你可以建议进行更大的努力,概述工程工作和产品工作,以便在待办事项中轻松确定优先级。
  • 为你正在进行的项目提供产品/工程取舍。不仅要考虑对你团队正在构建的产品功能进行工程方面的取舍,还要建议可以减少工程工作量的产品权衡。对其他人的反馈持开放态度。
  • 经常向你的产品经理寻求反馈。成为一名具有产品思维的优秀工程师意味着你已经在现有的工程技能组合之上建立了良好的产品技能。向你提供有关你在产品技能方面的表现的反馈的最佳人选是你的产品经理。就他们对你的产品建议的价值提出反馈意见,并就需要进一步发展的领域征求意见。