谢谢你留下时光匆匆
工作效率提升的经验谈

本文记录本人在工作中提升办公效率的一些经验,主要讨论与开发工作相关的效率提升的方法,当然,其中一些方法也可以被其它岗位工作者借鉴。

快捷键

对于开发人员来说,一天可能很多时间都需要用键盘完成工作,除了文字或代码输入的任务,熟练使用键盘完成各种操作是很必要的。掌握各种快捷键的用法可以提高键盘使用的效率,一方面快捷键的使用可以为我们节约时间,尤其是在重复使用次数较多的操作上;另外一方面使用快捷键可以让我们避免使用鼠标,从而更能沉浸于工作内容上,个人觉得右手离开键盘来移动鼠标是很容易打断思绪的。

关于文本编辑的快捷键,我非常推荐学习vim,有这样几个理由:

  1. 主流的编辑器和IDE都支持vim快捷键,统一使用vim快捷键可以避免不同开发软件快捷键不同所带来的一系列繁琐的问题。
  2. linux服务器远程终端操作可能会需要用到vim,学会vim可以给线上调式排查问题带来方便
  3. 个人感觉vim快捷键确实能提高代码书写的速度

Vim的学习入门是比较困难的,从初学到真正能投入使用需要大概2周时间不间断的练习,但回报一定是值得的。可以参考这篇文章简明 VIM 练级攻略进行零基础入门。另外,有人专门写了一个有意思的网页小游戏Vim Adventures帮助大家练习Vim。

除此之外,对于编辑器一些经常用到的功能,可以记住对应的快捷键,下次用到时直接用快捷键触发会更有效率。比如说Sublime Text中,交换上下两行的顺序可以用 Ctrl + Shift + 上/下,多行文本合并成一行可以用 Ctrl + Shift + j,JetBrain家的IDE可以使用 F11 将当前位置添加至书签以方便后续跳转,Shift + F10 运行程序等。

深入了解开发工具

我们经常用的开发工具(比如JetBrain家的IDE,VSCode等),我们可能开始接触它们时就只去掌握了其基本功能,后面忙于应付学习或工作任务,仅仅就用到这些基本功能而对工具中高级的功能缺乏了解,而恰恰这些高级功能就可能为我们的工作带来很多便利,大大提升我们的效率。例如,变量改名、函数自动提取、代码跳转、代码提示与补全等等。

我们应该利用空闲的时间,去仔细了解这些开发工具各个功能。一些学习方法有

  1. 点击面板或菜单中每一个按钮,看看这些按钮背后代表什么功能、这些功能起到什么样的作用。
  2. 网上搜集相关深入介绍开发工具的资料,可以是官方文档,也可以是如何利用这些工具提升工作效率的视频或博文。
  3. 打开JetBrain家的IDE会有每日Tips,留意阅读也可以让我们发现一些实用的技巧。

另外像VSCode开放的平台,有大量的第三方插件,抽时间逛一逛插件市场,也可能有惊喜的发现。

代码片段的积累

在开发过程中,我们可能会遇到这样的情形,之前写过实现类似功能的代码,但是找不到是在哪个项目中,重新开发又很费时间,又或者一个工具类、一个框架很久没有使用,忘记函数方法的细节。这些问题都可以通过代码片段的管理来解决。

我们可以将写得不错的、可能会在未来复用的代码统一存在一个地方,方便下次查询。除了可以复用的代码外,我们还可以记录那些想使用却又忘记细节的函数,来节省后面再次用到时,查找相关文档所消耗的时间。

养成代码片段积累的还有其它好处:

  1. 提升代码质量:考虑到所写的代码可能会被复用,我们可能更有动力去写出更优秀的代码,使我们能够在更长时间收益。
  2. 相比于GPT等工具所生成的代码,查询自己以往所写过的代码更有质量的保证,同时也更容易重新掌握。

我使用过两款工具来管理自己的代码片段,一个是全平台免费开源的massCode,另一个是Mac平台一次性买断收费的SnippetLab。两者使用都非常方便,可以访问他们的官网进行更多的了解,这里不再赘述。

一些增加开发效率软件工具

我们可以利用一些软件、工具,在不同工作任务中,来帮助我们提升工作效率。这里介绍一些我在开发中经常用的工具。

  • Sublime Text:一款文本编辑器,我经常用其来完成一些文本处理,例如多行文本操作,格式化代码等
  • RegExp:一个写正则表达式的网站,即时的反馈可以帮助我们高效写出需要的正则表达式
  • crontab.guru:一个辅助写出crontab定时任务的网站
  • Postman:http接口调式+管理工具
  • ChatGPT:最近火的大预言模型,可以帮助生成代码,快速上手一个框架,当然有可能生成的代码有错误,需要小心检验。另外ChatGPT可能帮助我们debug
  • sourceTree,开源的git GUI界面
  • snipaste,截图工具,有一个F3将截图置于屏幕最前方可以在多个窗口切换的场景提供遍历
  • 历史剪切板:windows平台可以通过win + v,打开历史剪切板,mac平台可以利用Alfred实现这个功能

另外,关于如何去搜集这些好用的工具,可以参考这几点

  1. 关注一些会发布一些效率工具的网站,如少数派
  2. 可以时不时去浏览一下github,一些开源工具也挺不错的
  3. 如果遇到很繁琐的办公任务,可以利用搜索引擎去寻找看看有没有高效的解决方案

文档、代码的阅读

开发人员除了一味写代码,还需要一些外界输入,来学习了解一些优化的代码写法,这些的优化的代码不仅帮助我们提升程序性能、提升代码可读性,同时简洁的写法能帮助我们理清思路,节省开发时间。

一些可以学习的地方有:

  1. API文档:更全面了解框架的各种接口、各种参数,可以更好帮助我们进行开发。
  2. 技术文章,技术博客:这些技术文往往有很多代码细节,仔细阅读这些代码有助于了解更地道的用法。
  3. GitHub:阅读这些开源项目的源码,可以帮助了解我们各种编程语言的在实际项目中的用法。

项目资料整理与任务安排

面对一个开发项目,可能有很多需要参考的信息,如接口文档,产品逻辑图,甚至是某些群里面的聊天记录。这些信息可能散落在各个不同的地方,如果需要相互参考,在窗口间来回切换可能会非常麻烦。我们可以用相关的笔记工具来将这些信息汇总在一处。这里我非常推荐微软的OneNote。

(插入Onenote的笔记用法图片)

OneNote,是一款功能强大的笔记软件,有人称之为“Office软件中最被低估的产品”。它的笔记页面是一张无限拓展的画布,可以在上面加入文字,图片,甚至是手写笔记。在实际办公时,我会将项目相关信息汇集在一张页面上,如将UI图截图贴到页面,将项目的共享文档网址链接粘到一个地方等等。

除此之外,因其无限大页面的特性,可以容纳很多内容,我还会在同一个项目页面上做任务的规划,OneNote将一行文字视为一个节点,支持缩进节点生成子节点,节点的拖拽,和子节点的折叠展开。这些特性让我们可以在OneNote搭建类似Trello的看板。

code review的时机

当完成一段代码的开发后、进行测试前,最好先阅读自己的代码,提前将一些错误进行修复。以我个人的经验看,code review最好不要在开发完后立马进行。在开发完检查代码可能会因为思维惯性,导致错误不能被发现。可以先处理其它任务,等大脑对之前代码印象没那么深时,检查代码会比较容易发现可以修正或优化的点。

请求他人的帮助

在debug时,可能会遇到百思不得其解的问题,如果一味自己独自解决bug,可能很难跳出思维的怪圈,一直陷于无法解决的bug之中,非常浪费时间。

当自己找bug时间过长时,应该及时打住,寻求周围伙伴的帮助。一方面,周围同事可能更有经验,更能快速定位问题;另一方面,周围同事与你的思维可能有一些不一样,可能更能找到所忽略的细节。

向别人请求帮助之前,需要自己将把问题是什么讲清楚,里面的逻辑梳理清晰,什么时候出现问题,输入什么会出现问题,出现了什么问题。在这个过程中有可能会得到灵感找到解决办法,更重要的是可以节省之后请他人帮忙的沟通成本。

保持松紧变化的工作节奏

保持精神集中的高强度工作一定时间后,会容易感到疲惫,不利于长期效率的稳定。我个人经验是,将工作时间进行切分,全身贯注30分钟工作后,做几分钟的调节。调节内容可以是回复消息,检查邮件等不费脑筋的工作,也可以是起立节水的简单活动。这样既能保证工作时段的高效率,也能在休息中保持更长久的动力。

在实际执行过程中,我会将一个大任务切分成若干子任务,每个工作时间段设置可达到的目标,准备完成哪些子任务,让自己能够保持清晰的工作思路和明确的工作节奏。

工作外的调节

提高工作效率不仅仅需要工作时保持好的习惯,在工作时间之外也需要适当的调节方法来保持好的精神状态。我认为需要注意这两个方面,一是保持良好的睡眠,另一个做真正放松的事情。

良好的睡眠可以让我们缓解疲劳,使我们可以精神饱满地迎接新一天。为了使我们睡眠质量更高,我个人感觉比较实用的技巧有:1,睡前拒绝手机;2,营造一个安静、黑暗、舒适的睡眠环境;3,睡前可以进行一些阅读;4,睡前可以回想一些开心的事情。

当压力大时候,我们可能会做比较刺激的娱乐活动来尝试释放压力,但实际上这些活动不利于使我们真正感受放松。现在白领都是脑力工作者,一天工作下来容易神经紧绷敏感,做一些不恰当的放松可能反而使神经更兴奋,难以彻底恢复精力。我个人觉得比较好的放松有:1,适当的运动;2,做冥想训练;3,进行简单的家务;4,听舒缓的音乐