在工作中,我发现很多同学对如何「提高自己的工作效率」这件事情,缺乏足够的关注。
比如某同学在登录服务器时,总是手动输入密码,看得我心急火燎的。
我的观点是,必须想方设法提高自己的工作效率,才能留出更多的时间偷懒放羊。
今天心血来潮,整理一些自己的经验,抛砖引玉,也希望看到各位分享自己的经验,互相学习如何才能更懒。
动态规划
有N件物品和一个容量为V的背包。第i件物品的费用是 c[i] ,价值是 w[i] 。求解将哪些物品装入背包可使价值总和最大。
-- 《背包九讲:01背包》
把题面稍作修改:
- 把「物品」改成「任务」,「费用」改成「耗时」,「价值」改成「绩效」
- 把「背包容量」改成「时间」
—— 就是我们日常工作需要解的题。
时间总是不够用的,但是通过优化时间的分配,喜欢卷的同学可以拿更好的绩效,喜欢躺的同学可以放更久的羊。
当然这里有个问题是,如何预判一个任务的耗时和绩效;对于工作经验较浅的同学,建议请教老油条们。
Fail Fast
Essentially, fail fast (a.k.a. fail early) is to code your software such that, when there is a problem, the software fails as soon as and as visibly as possible, rather than trying to proceed in a possibly unstable state.
在编码时,「Fail Fast」原则要求我们尽早把问题暴露出来,例如立即抛出exception,越接近错误现场,就能保留越多的相关信息,从而提高问题排查的效率。
单测就是「Fail Fast」原则的一种典型应用,在《单元测试 ——「简单」的乐趣》里有这份来自微软的数据,充分说明了这一点:
不同测试阶段发现BUG的平均耗时:
单元测试阶段,平均耗时 3.25 小时
集成测试阶段,平均耗时 6.25 小时 (+92%)
系统测试阶段,平均耗时 11.5 小时 (+254%)
类似地,在日常工作中,如果能够尽早将问题暴露出来,我们就能用最小的成本去不断试错,从而更好地优化方案、更快达成目标。
DRY
对自己代码有追求的同学应该都了解 DRY 原则:Don't Repeat Yourself。
类似的,在日常工作中,也应该想方设法避免重复劳动。
但是,只有你意识到了自己在做「重复劳动」,才可能会去寻找解决办法。
例如开头说的「手输密码」,除了增加打字速度,别无进益。因此当你发现可能需要多次执行时,就应该想办法优化它。
一个简单的方案是用 ssh-copy-id 命令来建立信任关系,从而实现免密登录;在无法建立信任关系的环境下(比如某些跳板机),也可以使用 expect 来模拟输入,解放自己。
用好工具
工欲善其事,必先利其器。
——《论语·卫灵公》
Use the right tool and use it right.
作为 vim 的十五年重度用户,我仍然感叹 vim 的强大,不愧为「编辑器之神」。通过灵活组合各种快捷键,vim 用户可以在文本中行云流水般穿梭,彻底摆脱遥远的鼠标和 ↑ ↓ ← →;也可以通过正则表达式、宏、自定义函数等各种方式替代重复工作。
想象一下,某同学分别按下 i、→、Backspace 键,只是为了删除当前光标下的一个字符时,我有多抓狂(所以我应该不适合吃运维这碗饭)。下次请直接按 x 键。
又比如,工作中我经常需要在 linux 终端下敲命令。因此诸如 <Ctrl+A>、<Ctrl+E>、<Ctrl+R>、<CTRL+]>、<Ctrl+W>、<Alt+F>、<Alt+B>、<Alt+.>、<Alt+Backspace> 等快捷键都是我重度使用的。可惜的是,很多终端(如 mac 下的 item2)默认都不开启 alt 键(即mac下的option键),需要手动打开。
此外,今年新发现一款神器:copilot。自从在 IDEA / VSCode 里装上了它,编码工作的很大一部分变成了 code review,值得在此特别推荐一把。
如下图所示,红框部分都是 copilot 自动生成的,我只需要负责按 tab:
(里面有一个 bug,你发现了吗?)
花钱买时间
为好的产品和服务付费,能够节省大量的时间成本。
作为一个 SecureCRT 的 13 年老用户,我觉得它的正版授权(99$)是典型的物超所值。它内建的 Session Manager、zmodem(rz/sz)、Logon Action/Script、Command Manager 等功能,对工作效率的提高是非常显著的。
另一个不完全恰当的例子是,我总是选择住在公司附近,增加 1~2k 的房租成本,相比其他很多同学,每天可以节省 1 ~ 2 小时的通勤时间。虽然省下来的时间不能直接换算成工资,但是可躺可肝,多了几分自由,也多了几分可能。
收
以上写得比较零碎,但确实是自己觉得很有用的经验。希望在这折腾的 2022 年,我们可以用战略上的勤奋,来换得战术上的懒惰;更进一步,还可以用战术上的勤奋,来换得更多偷懒的时光。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。