提升软件工程效率的小技巧:留点悬念,让工作更流畅 [译]

作者:

4 个改变我工作效率的编程习惯

“你的成果是你习惯的反映。” - James Clear

当我逐渐成长为一名优秀的软件工程师时,我发现自己日常工作中的四个关键习惯极大地提升了我的效率。


*友情推荐:SWE Quiz 收录了超过 450 道关于软件工程和系统设计的问题,内容包括数据库、认证、缓存等。这些问题都经过了谷歌、Meta、苹果等公司工程师的认证。*

我是 SWE Quiz 的主要贡献者之一,它帮助我和许多同事(包括我自己)在面试中轻松应对那些软件相关的知识点问题,使我们在工作中更加自信。

点这里了解更多


1. 留下部分未完工作,为次日顺利开展打下基础

在编程中,“心流”是高效率的秘诀。

软件工程是一种“创造者”行为,在这个过程中我创造东西。当我有大块不受打扰的“心流”时间去投入一个项目时,我通常能发挥出最好的表现。

但是,当你对项目目标所涉及的任务一头雾水时,要进入这种“心流状态”往往非常难。面对不确定性总是让人头疼,甚至不知道从哪里着手,这会让进入“心流状态”变得更加困难。

每一个成功的动作都会带来连锁反应,促使更多成果产生。

我运用了几个技巧来实现这一点:

  • 在遇到“难点”之前就暂停。 难点是项目中的一项任务,我清楚地知道为了完成它需要做哪些步骤,但我不确定是否会有潜在的隐性成本。

    • 比如说,如果我遇到的难点是将我的机器学习模型和 HTTP 服务器部署到开发实例,并确保它能正确处理请求,那么隐藏的成本可能包括部署错误、认证问题、资源限制等等。
  • 清楚地记录下一步骤。 将步骤写下来有助于快速恢复前一天的工作状态和思维模式。

    • 确保这些步骤具有明确的操作性,不含糊。

2. 提高键盘与鼠标快捷键的使用技巧

我第一次见识到一个真正的“快捷键高手”时,其实不是在软件工程师身上,而是一个做投资银行的朋友。他在 Excel 表格中的操作迅速精准,几乎不需要用到鼠标。

直到多年后,我才开始真正理解并欣赏这种技巧。来源:Work Chronicles

自那以后,我开始学习键盘快捷键的使用,结果是我的鼠标使用频率比以前减少了大约 60%。(是的,我有记录这个数据。)

在我的工作流程中,每个编辑器和工具都配备了键盘快捷键,几乎涵盖了所有你能想到的操作。这不仅适用于你的集成开发环境(IDE),还包括版本控制系统、网络浏览器和你的文档处理。

比如说,我的 IDE 集成了代码规范检查器、格式化工具和清理工具,只需一个快捷键就能使用,我在编写代码时经常用它来确保代码整洁有序。

我经常使用 Command/Ctrl + Shift + V 来粘贴无格式的文本,无论是在文档还是聊天中。

在 GitHub 仓库页面按下 . 键,就可以自动在 VSCode Web 实例中打开该仓库。

来源

当我需要用到鼠标时,它也被配置了快捷键。我有一款带侧边按钮的鼠标,我把这些按钮设置成了在 Mac 上切换不同工作空间的快捷键,当然你也可以根据自己的习惯来设置这些按钮。(甚至可以为不同的程序设置不同的功能。)

学习快捷键的最好方法?一次引入一个你在程序中常用的功能。

比如,当你发现自己经常需要右键来格式化代码时,这就可以是你开始“练习”的第一个快捷键。逐渐地,往你的技能库里添加新的快捷键,并在未来几周的编码过程中自然使用它们。随着时间的推移,这些快捷键将变成你的肌肉记忆。

3. 随手准备一份可搜索的命令和链接清单

我经常需要在终端运行一系列常用命令。

我总是回访一些特定页面,并且有一些关于不同编程语言的笔记经常参考。举个例子,在写 C++ 时,我虽然很少但又经常需要使用模板,这就意味着我通常需要查阅文档。

为了避免在网页文档中东翻西找,或不断回顾终端的历史记录,我把常用命令和文档查询整理在一个大文档中,并用一个关键词描述每个命令。我把它叫作我的大型命令手册,现在大约有 10 页。我可以通过快速的 Ctrl+F 找到任何需要的命令。接着,一个 Shift + Command + ➡️ 就能全行选中,方便复制粘贴。

我还在键盘上设定了一些常用的宏,用于快速输入命令和难记的术语,比如复杂的 ACL 组。有时,我还会使用终端的别名功能。

我的朋友 Jordan Cutler 写了一篇精彩的文章,深入讲述了他自己的工作流程技巧,其中包括关于别名、键盘快捷键和工具的实用入门:《我早期希望了解的七个顶尖软件工程工作流程技巧》 🧰

4. 学会拒绝

这个技巧可能和编程没有直接的关联,但我学到了在生活和工作中拒绝一些事情的重要性。

当简单的技术就能解决问题时,我不再追求那些复杂的新技术。

当一件事仅需手动完成一次时,我选择不去把它自动化。

当我发现自己已经任务繁重时,我学会了拒绝更多的工作,哪怕内心渴望帮助他人。

我对设计师提出的超出项目范围的建议说了不。

我避开了那些影响力不大的任务。

无论是 xkcd 还是 Work Chronicles 漫画,似乎对于一切都有讽刺和描绘。

学会拒绝比我想象的要困难,但这成为了我在职场和个人生活中最为宝贵的技能之一。

有时候,拒绝让人感到痛苦。无论是在我的职业生涯、兴趣爱好还是个人生活中,我经常不得不拒绝一些我真正想做的事。但我选择不去做,因为我知道我需要将时间和精力集中在当前的重点上。

虽然引用史蒂夫·乔布斯的话可能有些老生常谈,但他的名言“专注即是拒绝”时常提醒着我。

我的朋友 Irina Stanescu 写了一篇关于拒绝的精彩文章,我非常推荐大家阅读:《软件工程师说“不”的艺术》。