Frank - 你是怎么这么高效的?总结

2025-06-05

弗兰克——你怎么这么高效?

总结与结论

介绍

朋友和同事经常问我:“弗兰克,你是怎么这么高效的?” 虽然我没有灵丹妙药,但我培养了一种思维模式,并采用了一套工具和技术,帮助我作为一名软件工程师提高效率。在这篇文章中,我将与大家分享其中的一些策略。

什么是生产力?

在经济学中,生产力衡量的是产出与投入的比率。在软件工程中,我认为产出是我的工作所创造的价值,而投入是花费的金钱,其中包括我的工作时间,以及我用于创造价值的工具的费用。在我看来,重要的是将你的工作价值视为产出,而不是合并的拉取请求或关闭的工单。

当我们谈论生产力时,我们通常将其视为有效性和效率的结合。

  • 提升效率是指在投入不变的情况下增加产出。在产出即价值创造的语境下,它通常被解读为“做正确的事”。
  • 提高效率就是在保持产出不变的情况下减少投入。它通常被解释为“正确地做事”。

这种区别很有用,因为它可以帮助你识别改进的潜力。想象一下,你快速地编写了一些不需要的代码。这效率很高,但效果很差。另一方面,想象一下,用一种你完全不熟悉的编程语言编写一些非常有价值的功能,这会大大减慢你的速度。虽然效率很高,但效果很差。

优先级

高效意味着“做正确的事”。但如何确定什么是正确的事呢?你需要识别需求。这可以通过与客户和利益相关者沟通、阅读客户反馈或分析业务指标来实现。一旦确定了相关的目标/史诗/功能/任务,就可以确定它们的优先级。

在以生产力为导向确定优先级时,我们不能仅仅考虑其影响(产出),还需要考虑所需的投入(投入)。一个有用的优先级确定工具是“影响-投入-矩阵”。

进口努力矩阵

你将任务放在投入时间和影响轴之间的平面上。为了最大限度地提高效率,首先要关注快速见效的项目。然后计划处理主要项目,并适时添加填充内容。避免浪费。

执行并建立势头

通过优先处理高影响力、低投入的任务,您可以为系统(公司、部门、团队)的生产力奠定良好的基础。然而,如果考察个人贡献者(例如您自己)所投入的时间和精力,就会发现改进的空间也很大。如果无法高效执行,仅仅拥有“完美计划”是不够的。

每个人可用的时间都一样。为了论证方便,我们假设你每天工作8小时。然而,你不可能把全部8小时都花在高影响力的任务上。因为有会议、运营任务、日常开销和干扰。即使在你专注于某项任务时,你的效率也可能取决于你的情绪、精力水平和专注力。

就我个人而言,长期高效工作最重要的因素是建立并保持动力。我喜欢用滚雪球的比喻来解释我在工作中的动力。在物理学中,动量的定义是物体的质量乘以其速度。

当你开始一份新工作,或调动到一个新角色时,你就像山顶上的一个小雪球。雪球的质量代表着你积累的知识和技能。速度则代表着你完成诸如编程、审查 PR 等任务的速度。

第一次推的时候,感觉很难获得动力,因为球很小,很容易卡在小树枝或石头上。随着你继续推,球的尺寸和速度都会增加。

滚雪球下坡

为了长期建立和保持你的动力,你有几项责任:

  • 增加你的雪球质量。学习新的编程语言、框架、工具和技术。熟悉新的代码库,并了解你正在从事的业务领域。改进你的工具和工作流程。与你的同事、利益相关者和客户建立持久的关系。所有这些都将使你更轻松地克服障碍。
  • 提前做好计划,避免撞到树木等大型障碍物,这些障碍物可能会阻挡雪球前进,甚至导致雪球部分脱落。这意味着要及早发现潜在的阻碍因素和风险,并在撞到它们之前避开它们或降低风险。
  • 持续推动你的雪球。这意味着在你的任务上取得进展,创造价值。你需要找到合适的推动力度,因为推动过猛会让你难以停下来,难以绕过障碍或改变优先事项。

你如何在工作日/周中平衡这些活动?如果你只专注于推进,而没有规划,你很容易遇到障碍。如果你不努力增肌,你就无法克服日益增长的障碍,也无法应对更大的挑战。如果你只专注于增肌而不推进,你就无法创造价值。

在我的职业生涯中,敏捷软件开发的核心原则运用得非常有效。此外,我还发现并磨练了一些技巧和工具,帮助我每天建立并保持动力。以下部分将简要回顾敏捷原则,然后深入探讨我使用的工具和技术。

敏捷软件开发原则

我非常推崇《敏捷软件开发宣言》背后的原则。我指的不是像 Scrum 那样的“敏捷方法论”,而是核心原则。总结一下对我来说最重要的几点:

  • 持续为客户提供价值
  • 欢迎不断变化的需求
  • 简单——最大限度地减少未完成的工作量
  • 持续关注技术卓越性和良好设计
  • 定期反思和调整

我如何在日常工作中运用这些原则?只有当工作可用于生产环境时,我才认为它完成了。我会将任务分解成尽可能小的部分,力争在一天内完成拉取请求,以便获得早期反馈并快速迭代。如果优先级发生变化,这可以让我切换到另一个任务,而不会留下半成品。

这确保我的工作专注于增值,并能快速适应不断变化的需求。为了确保简洁,我遵循 YAGNI(你不会需要它)原则。我只实现当前需要的功能,避免过度设计。我的设计思路清晰,避免在代码编写完成后进行设计讨论时失去动力。每次重新审视代码时,我都会努力改进,并持续回馈技术部门。

我也定期反思自己的工作,并努力改进工作流程和工具。我们将在下面的“改善”部分详细讨论这一点。如果您想了解更多关于敏捷软件开发的知识,请查看我的博文《像体育生一样解读敏捷》

接下来,让我们深入了解一些您可以亲自尝试的具体工具和技术。

工具和技术

改善

改善

Kaizen 是一个日语术语,意为“持续改进”。它是一种注重对流程、工作流程和工具进行小规模、渐进式改进的理念。它作为丰田模式的一部分而广为人知。其核心思想是:

  • 改进是一个永无止境的过程。不断做出细微的改变,才能取得显著的长期成果。
  • 让每个人都能发现效率低下的问题并提出解决方案。
  • 关注流程,而非人员。系统地改进流程。
  • 消除浪费。那些不能为客户或组织增加价值的活动需要被剔除。
  • 衡量并反思。使用指标来跟踪进度,尝试各种变化,并反思结果。

我在团队中践行“改善”,个人层面亦是如此。每天结束时,我会花5-10分钟反思当天的活动,以及它们对客户或组织的影响。每周我都会抽出30-60分钟来改进我的工作流程/工具。

例如:

  • 自动创建我之前手动编译的每日或每周消息/报告。
  • 通过学习或查看键盘快捷键、IDE 功能或插件来提高我的编码效率。
  • 取消那些时间投入回报率 (ROTI) 较低的会议。考虑阅读会议摘要/会议记录。
  • 在我的收件箱中添加新文件夹和规则,以汇集一些我可以每周查看的低优先级消息。
  • 存档一些不再相关的旧 Slack 频道。

零收件箱

邮箱爆满

零收件箱技巧旨在有效地管理你的收件箱(电子邮件、Slack),将未读邮件数量保持在(或接近)0。其目标是减轻杂乱收件箱带来的认知负担,并确保你不会错过重要信息。其核心理念如下:

  • 处理每一条消息,不要只是“检查”。遵循 4D 原则:删除 (Delete)、委托 (Delegate)、推迟 (Defer)、执行 (Do)。
    • 如果消息不相关、属于垃圾邮件或不需要,则删除该消息(主要适用于电子邮件)。
    • 如果任务属于其他人,请将其委派给他人。立即转发。
    • 如果邮件需要你采取行动但无法立即处理,请推迟处理。将其安排到以后再处理。大多数电子邮件客户端都提供此功能,对于 Slack 频道,我会使用“提醒我此事”功能。
    • 如果完成任务的时间少于两分钟,则立即执行。
  • 使用文件夹、标签和频道对邮件进行分类。使用自动过滤器/规则在处理收到的邮件之前自动整理它们。我个人在我的电子邮件帐户中根据项目和邮件类型(例如拉取请求、工单更新)设置了不同的文件夹。
  • 不要把电子邮件当作待办事项清单。将较大、可操作的项目转移到专门的任务管理工具中。
  • 屏蔽消息发送时间。不要全天不停地查看邮件或使用 Slack,而是要留出专门的时间段,最好是在效率最低的时候,比如午饭后或下午。
  • 取消订阅并过滤。如果您收到不相关的新闻通讯/更新,请取消订阅。如果您无法取消订阅,请添加自动过滤器,在邮件到达收件箱之前将其删除。
  • 积极归档。我个人不归档电子邮件,但我会使用过滤器,只显示收件箱中的未读邮件。我会积极归档孤立的临时 Slack 频道。
  • 保持简单一致。无论你使用什么系统,它都需要足够简单,方便你日常使用。

待办事项清单

待办事项列表

我尝试过使用电子待办事项清单,但效果并不好。它们经常过期,或者有些任务永远卡在那里。我改用笔记本,就放在我桌子前面。我使用一个简单的系统:

  • 每天,我都会写下日期和当天要完成的任务,并按优先顺序排列。我要么在前一天晚上完成,要么作为第二天早上的第一件事。
  • 我会勾选已完成的任务。每当我进行一项活动时,例如查看 Slack 消息或收到 PR 审核请求,我都会查看我的清单,提醒自己最重要的任务是什么。这有助于我回到正轨,并优先关注最重要的部分。
  • 随着一天的进展,在清单上添加新任务是可以的。没有完成所有任务也是可以的。但是,本着“改善”的精神,我会在一天结束时回顾这些情况,并制定一个计划,以避免将来再次发生。

让我们看一个示例列表:

我的待办事项清单

想象一下,你正在写博客文章,一位同事突然提醒你今天之前要提交一份报告。你把它添加到列表顶部,并立即开始处理。结果一天下来,你竟然没来得及查看邮件。

一天工作结束时,你会试图理解这份报告为何会如此意外地出现。原因可能有很多,例如:

  1. 你知道今天需要完成报告,但在计划当天任务时却忘记了。在这种情况下,你可能需要调整流程,在截止日期前一天提醒你该完成哪些任务。
  2. 报告今天需要完成,但你不知道,因为你的同事忘了告诉你。在这种情况下,提前明确告知你需要多少时间。考虑使用共享任务管理工具,你的同事可以给你分配特定的任务,并会通知你。
  3. 这份报告不必今天就完成。反正下周末也发不出去。既然如此,以后一定要挑战一下紧急临时任务的优先级。

时间盒和时间阻塞

日历

我每天都会使用时间盒和时间阻断。时间阻断帮助我规划一天和一周的时间,确保我能为重要的、短期的和长期的活动留出时间。时间盒帮助我避免陷入或迷失在细节中。

以下是我预留时间进行的一些活动:

  • 审查拉取请求(每日)
  • 编写代码(每日)
  • 阅读和回复消息(每日)
  • 一对一/团队会议(每周/每两周)
  • 教育、学习、个人发展(每周)
  • 锻炼(每日)

我有时会用日历来规划时间,或者把时间写在待办事项旁边。我会在每个时间段内设置时间限制,但也会将时间范围扩大到更广的范围。例如,如果我把 PR 的审核时间限制为 60 分钟,那么即使我没有审核所有 PR,我也会在 60 分钟后停止审核。剩下的 PR 将在第二天获得更高的优先级。

时间盒还能帮助我更好地管理未知的未知因素。开始一项较大的任务时,我通常会先进行概念验证 (POC),并将时间盒设定为几个小时。如果无法在规定时间内完成 POC,我会调整该任务所需投入的估算,将其置于影响-投入-矩阵的其他位置,并相应地重新调整优先级。如果该任务仍然是首要任务,我会延长时间盒,但如果还有其他快速见效的方法,我可能会暂时改用它们。

时间阻塞帮助我保持建立和保持动力所需的不同活动的平衡,而时间盒则强调进步而不是完美。

专注与番茄工作法

相机镜头对焦

我们的大脑能够解决复杂的问题,但却难以应对干扰和上下文切换。我个人发现,如果我把4个小时用于深度工作(不受干扰),再用4个小时进行浅层工作(可以处理干扰),那么我的8小时工作效率会比8小时混合工作更高。

为了成功进入深度工作状态,我需要合适的环境。我会戴着耳机听音乐,我的桌子上需要有一些杂物,但不要太多。如果太多,我必须先清理干净。我可能还会关闭消息程序/通知。

深度工作虽然非常有效,但也令人精疲力竭。我的注意力在45-60分钟后迅速下降,而30分钟后,这种专注力就开始对我的身体造成损害。我的头开始疼痛,肌肉也开始紧张。

为了在工作和恢复之间保持平衡,我经常使用番茄工作法™。其核心理念是工作25分钟,然后休息5分钟。4个番茄工作法之后,再休息15-30分钟。

番茄工作法对我的工作还有另一个积极的影响。它迫使我将工作分成更小的块,以便在一个时间段内完成。例如,如果我在写代码,我的目标是在每个时间段后编译通过。理想情况下,我还能提交更改。写博客文章时,我的目标是在一个时间段内完成一个部分。

帕累托原则(又称80/20)

带有图表和图表的笔记本电脑

帕累托原则背后的理念是,80% 的后果源于 20% 的原因。将其应用于工作,就意味着 80% 的价值来自 20% 的工作。我们可以利用这一原则,专注于带来最大价值的那 20% 的工作,从而最大限度地提高生产力。

这对我来说实际上意味着什么?

  • 广泛使用 GenAI。我使用 GenAI 生成代码,虽然效果通常不太好,但如果有效,可以作为第一次迭代。我也使用 GenAI 生成自动化测试。我宁愿要丑陋的、经过测试的代码,也不愿要漂亮、精致、高性能、没有任何测试的代码。一开始不要追求 100% 的代码覆盖率,而要专注于关键方面。
  • 不要过度设计。首先,让它发挥作用,然后再让它正确(如果它已经证明了它的价值)。
  • 不断重构。每当我接触代码时,我都会寻找改进的机会。这种机制确保丢弃的代码不会被过度设计,而相关代码会趋于高质量。
  • 逐步减少繁琐的工作。如果某件事只做过一次,就值得把它记录在笔记或票据上。如果某件事你定期做,但频率不高,那就创建一个运行手册。如果运行手册变得冗长,而且你运行得更频繁,那就把它编写成脚本。如果脚本运行频率很高,那就把它自动化。

当然,你需要记住,剩下的20%的成果,需要花费你完成前80%成果的四倍时间,而这部分成果就是你支付利息的债务。所以,你应该明智地选择你能承担多少债务,愿意支付多少利息,并投入时间定期偿还债务。

那么,为什么应用这项技术可以节省时间呢?如果你最终把所有工作都做了,那还有什么意义呢?关键在于,你现在所做的工作几乎永远无法100%解决问题。这可能是因为你没有完全理解问题。也可能是问题随着时间的推移而发生了变化。又或者,后来出现了其他更好的解决方案。专注于能带来最大价值的那20%,你就能更快地交付价值,也能更轻松地做出调整。

现场巡视

汽车厂装配线

现场巡视 (Gemba Walking) 是源自丰田之道的又一技巧。Gemba 是一个日语术语,意为“真实地点”。在软件开发的语境中,它指的是前往工作完成的地方,例如团队工作区、代码仓库、CI/CD 流水线、事件通道、生产环境。作为一名技术主管,这对我来说意义重大,因为它可以避免“象牙塔”综合症,并与同事们的工作保持联系。

现场巡视帮助我及早发现效率低下、瓶颈和阻碍因素。它还能帮助我更好地理解工作背景,并与同事建立良好关系。我每天都会进行现场巡视,每次大约预留15分钟。关键要点如下:

  • 去创造价值的地方。在 SRE 中,我称之为“战壕”。
  • 观察,不要评判。提出问题,倾听同事面临的问题。读懂字里行间的意思,保持好奇心。
  • 与同事互动。
  • 关注流程,而不是人。

升级

沮丧的人

升级是指当问题在当前级别无法解决时,将问题上报至更高级别的主管或专业机构。快速升级至关重要,因为这样可以确保问题由拥有相应专业知识、权限或资源的人员处理,从而确保问题得到有效解决。

升级问题对于避免任务停滞不前也至关重要。虽然有些人可能觉得这像是在“抱怨”,但快速解决问题符合公司和客户的利益。

我经常将升级与时间限制结合起来。如果我没能在预计的时间内完成任务,我可以将其升级给相关方,例如我的老板或该领域的专家。

总结与结论

在本文中,我们探讨了各种策略,以提升软件工程师的工作效率,同时平衡效能和效率。我们强调了使用影响-投入矩阵进行优先级排序的重要性,以便专注于高影响、低投入的任务。

我们了解了如何建立和保持动力,深入了解生产力工具集,包括确保价值交付和适应性的敏捷原则、持续改进的 Kaizen、管理消息的零收件箱技术、用于日常任务管理的待办事项列表、有效时间管理的时间盒和时间阻塞、保持专注的番茄工作法、实现价值最大化的帕累托原则、与团队工作保持联系的现场行走,以及快速升级以有效解决问题的重要性。

你最喜欢的生产力工具和技巧是什么?你如何在工作中平衡效率和效益?请在评论区分享你的想法!


如果您喜欢这篇文章,您可以在 ko-fi 上支持我


文章来源:https://dev.to/frosnerd/frank-how-are-you-so-productive-2l56
PREV
宝贝,再来一次——什么是缓存命中?你为什么要关心它?动机:矩阵乘法示例:计算机体系结构:矩阵乘法回顾:结语
NEXT
使用 SNS、SQS 和 Lambda 在 AWS 中处理事件简介架构实施结论 AWS GenAI LIVE!