跳到主内容
@wquguru
精选82Hacker News Best(web_list)技巧与观点

Staff Engineer 如何发现并选择高价值问题:从吸收需求到验证假设

Staff Engineer 如何发现并选择高价值问题

原文
发到 X

Discussed on lobste.rs.

在 lobste.rs 上讨论过。

Note: this post was revised after publishing for increased clarity, based on reader feedback.

注:本文在发布后根据读者反馈进行了修订,以提高清晰度。

“How do you find problems worth working on?” a senior engineer I mentor asked me recently. He’s trying to make the jump to staff engineer and realized that the role isn’t just about doing the work he’s assigned. He also needs to get involved in figuring out what his team and org should be building.

“你如何找到值得着手解决的问题?”我最近指导的一位高级工程师问我。他正试图从高级工程师晋升为资深工程师(staff engineer),并意识到该角色不仅仅是完成分配的工作,还需要参与确定团队和组织应该构建什么。

Someone else had suggested blocking out time in his calendar to think about the bigger picture. He’d tried that, but hadn’t found it productive, so he asked if I had any alternatives.

有人建议他在日历中预留时间思考大局。他尝试过,但觉得没有成效,于是问我是否有其他替代方案。

I told him I rarely find good problems by staring at a blank page and trying to “think strategically.” Instead, I act like a sponge. I listen to the stream of day-to-day noise, absorb the problems people are having and let them sit in the back of my mind. Over time, some fade away while connections begin to appear between others that initially seemed unrelated. Eventually, I start to see what’s really slowing people down and what my team or I can do about it.

我告诉他,我很少通过盯着空白页面并试图“战略性思考”来发现好问题。相反,我像海绵一样吸收信息。我倾听日常琐碎的噪音流,吸收人们遇到的问题,让它们沉淀在我的潜意识里。随着时间的推移,一些问题会逐渐淡出,而另一些最初看似无关的问题之间开始显现联系。最终,我开始看清究竟是什么真正拖慢了人们的步伐,以及我的团队或我能做些什么来解决它。

I’ve worked with many engineers who’ve never really tried this. They wait for managers or leads to identify opportunities, then demonstrate their value by solving the hardest assigned problems. That can absolutely lead to promotion. But the projects that have made the biggest impression in my career were the ones where I found and solved an important problem my leaders did not yet realize existed.

我曾与许多从未真正尝试过这种方法的工程师共事。他们等待经理或技术负责人识别机会,然后通过解决最困难的分配任务来证明自己的价值。这当然能带来晋升。但在我的职业生涯中,留下最深印象的项目,是我发现并解决了领导者尚未意识到的重要问题的项目。

One caveat: my experience comes mainly from working on infrastructure and developer tools at large companies, on teams where engineers have a lot of bottom-up autonomy to influence their roadmaps. In a more top-down environment, there may simply be less room to work this way.

一个注意事项:我的经验主要来自在大型公司从事基础设施和开发者工具工作,在这些团队中,工程师拥有大量的自下而上(bottom-up)自主权来影响路线图。在更自上而下(top-down)的环境中,可能根本没有空间以这种方式工作。

Absorb problems, not requests#

吸收问题,而非请求#

People love talking about the problems they are facing: in meetings, chat threads, presentations and email. They explain why their work is hard, complain about what slows them down and describe what they wish they could do.

人们喜欢谈论他们面临的问题:在会议、聊天线程、演示文稿和电子邮件中。他们会解释为什么他们的工作很艰难,抱怨什么拖慢了他们的进度,并描述他们希望自己能做什么。

When something overlaps with my area, I start pulling on the thread. I might ask, “If X existed, would it solve your problem?” or point them at an existing feature in a product I own and ask how much of their use case it covers.

当某事与我的领域重叠时,我开始顺藤摸瓜。我可能会问:“如果存在 X,能解决你的问题吗?”或者指向我自己负责的产品中的一个现有功能,询问它在多大程度上覆盖了他们的用例。

Users often ask for a particular solution instead of explaining their root issue. Rather than taking the request at face value, I keep digging until I understand what they are trying to accomplish and why existing products do not work for them.

用户经常要求特定的解决方案,而不是解释他们的根本问题。与其表面接受请求,我会继续深挖,直到理解他们试图完成什么以及为什么现有产品对他们不起作用。

As a natural introvert, this sort of ambient listening works particularly well for me. I don’t need to fill my calendar with speculative meetings just to find ideas; there is already an enormous amount of useful information flowing around me during a normal week.

作为一个天生的内向者,这种环境式倾听对我特别有效。我不需要把日程表填满各种推测性的会议来寻找灵感;在正常的一周里,已经有很多有用的信息在我周围流动。

When a problem seems worth exploring, though, I become more active; I need to see how it affects the team’s day-to-day work. I’ll sit with them as they walk me through their workflows and the bugs they’re investigating. When I can, I’ll try working through some of those bugs myself. Seeing the problem firsthand makes it easier to separate what the team actually needs from the solution they asked for.

然而,当一个问题似乎值得探索时,我会变得更加主动;我需要了解它如何影响团队的日常工作。我会坐在他们身边,听他们讲解工作流程以及他们正在调查的 bug。如果可能的话,我会尝试亲自解决其中一些 bug。亲眼看到问题使得更容易区分团队真正需要的东西和他们要求提供的解决方案。

I also seek out people who see more of the organization than I do: those who own critical systems, work across several teams or have particularly deep insight into the work downstream of my team. I’ll arrange a 1:1 or coffee chat and ask about interesting problems they’ve come across. They may have already seen the same issue in several places and started connecting the dots, giving me a head start on patterns I might otherwise have taken much longer to notice.

我还会寻找那些比我更了解整个组织的人:那些负责关键系统、跨多个团队协作或对下游工作有特别深刻见解的人。我会安排一对一或咖啡聊天,询问他们遇到的有趣问题。他们可能已经在多个地方看到了同样的问题并开始串联线索,这为我提供了先机,让我能比原本更快地发现模式。

Let problems accumulate#

让问题积累起来#

Several times, I’ve been burned by moving too fast. I became excited by a request from a vocal team, built the feature and watched them barely use it. Their priorities had changed, or the request had come from a one-off investigation that no longer mattered. How eager a team was in that moment wasn’t the same as how important the feature was relative to everything else my product needed to support. By hyperfocusing on their request, I lost sight of the bigger picture.

我有过几次因为行动太快而吃亏的经历。我对一个活跃团队的需求感到兴奋,构建了功能,然后看着他们几乎不使用。他们的优先级发生了变化,或者这个需求来自一次不再重要的临时调查。团队在那一刻的热情程度并不等同于该功能相对于我的产品需要支持的其他所有内容的重要性。通过过度聚焦于他们的需求,我失去了对大局的关注。

That taught me to let potential problems pile up. Listening the way I do leaves me with far more of them than I could possibly solve, and not all deserve action. Most don’t need to turn into projects the first time I hear about them; waiting can be a superpower.

这让我学会了让潜在问题堆积起来。像我这样的倾听方式让我积累了远超我能解决的问题数量,而且并非所有问题都值得采取行动。大多数问题第一次听到时不需要立刻变成项目;等待可以成为一种超能力。

Waiting means the same problem might pop up independently in different teams, making it a higher priority to solve. Or problems that look different on the surface might turn out to have the same shape, so I can address several use cases in one shot. Or, as I’ve learned painfully, the requesting team didn’t even care that much in the first place.

等待意味着同一个问题可能会在不同的团队中独立出现,使其成为更高优先级的待解决问题。或者表面上看起来不同的问题最终可能具有相同的结构,这样我可以一次性解决多种用例。或者,正如我痛苦学到的那样,提出需求的团队一开始其实也没那么在意。

Instead, I make a mental note and revisit the problem if it comes up again. Other engineers I know write this sort of thing down more systematically. The mechanism is a personal choice: everyone has to figure out what works for them. What matters is keeping unresolved problems around long enough for more evidence to accumulate.

相反,我会做一个心理备注,如果问题再次出现,再重新审视它。我认识的其他工程师会更系统地记录这类事情。机制是个人的选择:每个人都要找出适合自己的方法。重要的是让未解决的问题保留足够长的时间,以便积累更多证据。

Find the common shape#

寻找共同模式#

Waiting helps me collect evidence, but that alone doesn’t tell me what to build. I still need to work out whether the problems I’ve retained are genuinely related and what, if anything, could address them together.

等待帮助我收集证据,但这本身并不能告诉我该构建什么。我仍然需要弄清楚我保留的问题是否确实相关,以及是否有(或有什么)可以一起解决它们的方法。

Perfetto, the performance debugging tool I work on, is a good example. It displays recordings of system activity on a timeline made up of rows called “tracks.” Over a couple of years, teams kept asking for small, specific additions to the UI. One wanted a command to keep their preferred tracks pinned to the top of the screen; the next team wanted the same, but for a completely different set of tracks. Others wanted Perfetto to open already zoomed in on a particular part of a recording, or to show a custom aggregation tuned to what they cared about. A few had stopped waiting for us and built elaborate workarounds with bookmarklets.1

Perfetto 是我负责的性能调试工具,是一个很好的例子。它在由称为“轨道”的行组成的时间线上显示系统活动的录制内容。在过去的几年里,团队不断要求对 UI 进行一些小的、特定的添加。一个团队希望有一个命令,将他们偏好的轨道固定在屏幕顶部;下一个团队也想要同样的功能,但是针对完全不同的轨道集。其他人希望 Perfetto 打开时已经放大到录制的特定部分,或者显示针对他们关心的内容进行定制的聚合。有几个人不再等待我们,而是用书签小程序构建了复杂的变通方案。1

By the time enough of these had piled up, my head was the usual tangle: the requests themselves, the constraints on each and a handful of half-formed solutions. I’ve learned not to force a solution by just sitting at a desk and thinking. Instead, my best untangling happens on long, aimless walks around London, where connections come more easily when I’m not trying to force them.

当这些请求堆积到一定程度时,我的头脑通常是一团乱麻:请求本身、每个请求的限制条件以及一些半成形的解决方案。我已经学会不要只是坐在书桌前思考来强行寻找解决方案。相反,我最有效的梳理发生在伦敦漫长而无目的的散步中,当我没有试图强行推动时,联系会更容易出现。

What I eventually realized was that none of these teams really wanted the specific feature they’d asked for. Each wanted to personalize Perfetto for their own workflow without imposing their choices on everyone else. The underlying need wasn’t any one feature but rather the ability to extend the UI. When a connection like that finally clicks, it’s one of the best feelings in the job: several awkward requests collapse into a single idea, and possibilities open up that none of them hinted at on their own.

我最终意识到,这些团队真正想要的并不是他们要求的具体功能。每个人都希望为自己的工作流个性化 Perfetto,而不将自己的选择强加给其他人。根本需求不是任何单一功能,而是扩展 UI 的能力。当这样的联系最终清晰起来时,这是工作中最美好的感觉之一:几个尴尬的请求合并为一个想法,并打开了其中任何一个单独暗示的可能性。

That feeling, though, is exactly when I have to be careful, because a common shape is only a hypothesis and elegance is not evidence. When it happened with extending the UI it turned out to be real, but I’ve been fooled before.

然而,这种感觉恰恰是我必须小心的时候,因为共同模式只是一个假设,优雅并不是证据。在扩展 UI 的情况下,事实证明它是真实的,但我以前也曾被欺骗过。

In another recent case I was convinced that building a transparent caching system for querying Perfetto traces would solve issues with sharing large traces and repeated queries. It was only as I wrote the RFC and built a prototype that I realized the elegance was a lie: the two problems wanted genuinely different solutions. I reluctantly split the design in two, both halves of which have since shipped.2

在另一个最近的案例中,我曾确信为 Perfetto trace 构建一个透明的缓存系统来解决共享大型 trace 和重复查询的问题。然而,直到我撰写 RFC 并构建原型时,我才意识到这种优雅是个谎言:这两个问题需要真正不同的解决方案。我勉强将设计拆分为两部分,这两部分随后都已发布。2

Pressure-test before building#

构建前的压力测试#

You’d think this would be the moment I start building, but it usually isn’t. How far I go depends on how sure I am that the idea works and that people actually want it.

你可能会认为这应该是我开始构建的时刻,但通常并非如此。我会走多远取决于我对想法可行性的确信程度以及人们是否真的需要它。

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

另一事件,读法相近