工程师在专案不同阶段,必问的核心问题
2024年12月10日
Google 的第一位女性工程师 (后来当到副总) Marissa Mayer 多年前在 IIT 给过一场毕业典礼演讲,那时她提到在她生涯很早期就认知到的一件事,是当看到那些让自己感到佩服的人,不是去想对方比自己多懂什么,而是对方如何思考、如何理解这个世界、如何拆解问题。
这个观点对工程师职涯来说非常重要,在迈向资深工程师的路途中,持续提升自己的思考能力,是不可或缺的。在资讯科技发达的现代,资讯落差对多数工程师来说,不是特别大的问题,毕竟真的有什么不懂的,到 Google 上面搜或者问 ChatGPT,多半能获得相关资讯。
在这个脉络下,如何理解事情与如何思考,会是更关键的。而要有效提升思考能力,问好问题是基本,因为许多思考都源自于问问题,当看事情时完全没问题,会变得没有往下想的方向;反之,当脑中有问题时,就会有了可以思考的方向,进而能更深入去探究与思考。
专案相关要思考的问题
当要开始一个专案,或者要开发一个新功能时,一般来说会由产品经理端发起需求,然后由工程师评估,完成后才会进到技术设计与开发。在与产品经理的会议中,问好问题会对后续的技术设计与开发有很大的帮助。
目前业界有个说法是,当做到主任工程师以上的职级,对产品的掌握度要不亚于一个产品经理。对此,Google 的资深主任工程师 Addy Osmani 先前曾说过「使用者的体验是衡量工程是否成功的终极指标,一个卓越的工程师会深入考量使用者与其需求」。
A user's experience is the ultimate measure of engineering success. Great engineers care deeply about the user and their needs — Addy Osmani
以下我们分别讨论在一个专案当中,可以问什么问题,来确保专案的成功。
专案前的基本问题
首先,在一个专案的最开始,可以先问以下的问题:
- 即将要开发的功能,是为谁而开发的? 这个功能是在解决使用者的什么问题?
- 这个新的产品或功能,可以如何帮助团队达成目标? 有没有其他能更快、更有效达成目标的做法?
- 我们是用什么指标来衡量产品或功能的成功? 做到什么程度才算成功?
- 这些指标真的有解决使用者的问题、为使用者带来价值吗?
切记,对于软体团队来说,透过软体创造价值与影响力是最基本的。如果无法对上面这些问题有清楚的回答,表示产品经理还没有理清楚,这时千万不要急着给时程安排或推进到开发,确保产品经理能回答这些问题,也是资深工程师的重要责任。
更进一步说,身为资深工程师,对于产品经理回答的内容,要适时去追问。关于追问,我们最推荐问真的是这样吗 (Is it true)? 以及如果真的如此,那有什么实质影响 (So what)? 这两个问题。
第一个追问的问题,是确保产品经理提的点,有足够的佐证来支持。很多产品经理可能没有相关的使用研究或数据,就随意抛出想法,有时候提出的想法是基于错误的假设,这很可能会把团队带向有问题的方向。透过追问「真的是这样吗?」能够去辨别,产品经理提出的是真的如此 (fact),还是仅是其个人意见 (opinion),这能避免做出没有根据的决策。
第二个问题是去评估影响力的追问。如果想要避免团队花很多时间,最后却做出一般般的成果,这个追问会至关重要。前面谈到,在专案最开始,要确保解决到使用者的问题、带给使用者价值,这样才能确保成果有足够影响力,而不是在枝微末节的事情上钻。而「so what」这问题,就是用来检验影响力是否充足的追问。
专案前的深度问题
前 Meta 副总 Julie Zhuo 曾发过一个贴文,推荐在专案进到开发前,要问的八个问题 (连结)。
其中我们实际用过后,觉得最好用的是以下这几个:
- 「对使用我们产品的客户来说,最理想的结果是什么?」这个问题协助团队去探究最核心且重要的目标
- 「在什么情况下,我们会更接近理想结果,但却对指标没帮助?」透过这个问题,可以去思考有没有什么更好的指标,能更精准地协助团队来衡量
- 「在什么情况下,我们达到了指标,但实际上却离理想结果越来越远?」很多团队很常做出好看的数字,但实际上没真的带给使用者影响力,而这个问题能协助辨别出那些虚荣指标,让团队能砍掉不是最重要的指标
- 「如果我们达到指标,对公司营运会有实质影响吗?」这个问题能避免团队见树不见林,避免做出好的数字,结果对更大的整体没有实质帮助
思考到更广面向的问题
上面谈了思考专案时的深度问题,以下有几个让思考角度更广的问题,也是推荐要问的
- 这个专案有哪些利害关系人 (stakeholders)? 我们如何确保照顾到他们的需求?
- 这个专案有依赖哪些上游团队 (upstream)? 有哪些关键的依赖是一定需要对方会准时交付的? 该如何确保对方会准时?
- 这个专案有哪些下游团队 (downstream)? 要如何安排确保不会延误到对方?
跟利害关系人与上下游的合作,通常不会是一次性的;因此如果能够去顾及他们的需求,能让长期的合作更加顺利。
专案进行中
当专案前的问题都有获得回答,并且实际进到专案后。资深工程师也要把关专案进度。虽然说在比较大型的专案,会有技术专案经理 (TPM) 来负责把关进度,但是 TPM 通常也会找团队的资深工程师来了解状况,所以假如能先从他们的角度思考,会很有帮助。
这个时候,推荐适时问以下的问题:
- 有没有任何可能造成延误的风险?
- 现在的进度是否如预期? 是否有延误?
- 有没有人现在被卡住? 我可以如何协助他们排除问题 (help unblock them)? 例如因为有依赖上游某个 API,但上游团队还没好;或者产品端有改动,导致工程这边暂时没办法往下开发
如果目前团队已经有在做的任务,而产品经理想要突然插东西来做,资深工程师也要问类似的问题,特别是问说「这间临时加进来的事,能带来什么影响力? 真的有比我们团队在做的事情更重要吗?」。如果判断完认为没有,这时就请发需求的人回去重新想,让团队成员可以专注在眼下的事。
阅读更多
如果你对「资深工程师如何深度思考」的主题感兴趣,我们在 E+ 有更深入的讨论,会讨论在专案上线期间、在技术设计时、在写程式时,可以思考哪些问题。有兴趣的读者,欢迎加入 E+ 成长计划。
本文为 E+ 成长计划的深度内容,截取段落开放免费阅读。欢迎加入 E+ 成长计划阅读完整版本 (点此了解 E+ 的详细介绍)。