《复杂软件设计之道:领域驱动设计全面解析与实战》 - 彭晨阳 著
Uber 工程师 GergelyOrosz 认为注重产品的程序员应具有 9 个特征
1)积极参与产品构想/意见。
2)对业务、用户行为和有关数据感兴趣。
3)具有好奇心和对“为什么”的浓厚兴趣。
4)是较强的沟通者,与非工程师保持良好关系。
5)预先提供产品/工程权衡,因为他们对产品“为什么”以及工程方面有深刻的了解,所以他们可以提出很少有人可以提出的建议。
例如,在确定构建产品的工作量时,用于构建关键功能的工程工作可能很重要。许多工程师将开始寻找减少工作量的方法,并试图弄清楚减少工作量对功能本身的影响,而注重产品的工程师会从两个角度来解决这个问题:既要寻找工程权衡,又要寻找对产品的影响。他们还进行产品折中,评估工程影响,并且经常回到产品经理那里,建议要构建一个完全不同的功能,因为对产品的影响将是相似的,但是工程上的工作量要小得多。兼顾产品和工程方面的权衡以及两者的影响,是专心产品的工程师所拥有的独特优势。
6)边缘案例的务实处理。他们专注于“最低限度的可爱产品”概念,并评估边缘情况的影响以及处理情况。在发布早期版本之前,他们会找出大多数可能出问题的地方,并针对需要解决的极端情况提出建议,比如发现需求或产品设计中的逻辑矛盾之处。
7)注重快速的产品验证。
8)当某个功能的性能比预期的差时,他们会很好地了解不匹配的位置,并希望找到在产品计划和实际结果之间出现差距的根本原因,就像调试代码库中难以重现的错误一样。他们通常会花费大量时间与产品经理和数据科学家讨论假设和学习。
9)通过反复学习来增强对产品的直觉。
GergelyOrosz 也给出了成为更具产品意识工程师的几点提示。
1)了解公司成功的方式和原因,如商业模式是什么?钱是怎么赚的?哪些部门最有利可图?公司的哪些部门最能扩展?为什么?团队如何适应所有这些?
2)与产品经理建立牢固的关系。大多数产品经理会抓住机会来指导工程师,使工程师对产品感兴趣意味着他们可以进一步扩展自己。在进入项目之前,先问很多产品相关的问题,花一些时间建立这种关系,并向产品经理明确表示,自己希望更多地参与产品主题。
3)参与用户研究、客户支持和其他活动,在这里可以了解有关产品工作原理的更多信息。与经常和用户互动的设计师、UX 用户、数据科学家、运维人员和其他人员沟通。
4)提出支持良好的产品建议。对业务、产品和利益相关者有充分的了解之后,主动提出建议。比如,可以为正在进行的项目带来一些建议,或者建议更大的工作量,概述工程工作量和产品工作量,以便在待办事项中轻松确定优先级。
5)为项目提供产品/工程权衡。不仅考虑团队要构建的产品功能的工程设计权衡,还要考虑产品折中方案,从而减少工程工作量。对他人的反馈意见持开放态度。
6)要求产品经理经常提供反馈。成为一名优秀的产品工程师,意味着在现有工程技能之上还要建立良好的产品技能。产品经理会提供产品工程师在产品技能方面的表现的最佳反馈。寻求反馈,即了解他们对自己所提产品建议的重视程度,并就进一步发展的领域提出想法。