What's 10X?
A 10x programmer is, in the mythology of programming, a programmer that can do ten times the work of another normal programmer, where for normal programmer we can imagine one good at doing its work, but without the magical abilities of the 10x programmer. Actually to better characterize the “normal programmer” it is better to say that it represents the one having the average programming output, among the programmers that are professionals in this discipline.
The programming community is extremely polarized about the existence or not of such a beast: who says there is no such a thing as the 10x programmer, who says it actually does not just exist, but there are even 100x programmers if you know where to look for.
上面这段文章片段概要地说明了 10X 程序的存在,更甚至有 100X 程序员。详细的内容可以查看 Antirez 的文章,文章里面详细的讲解了如何成为 10X 的内功的修炼方式方法。内功的修炼需要时间的积累,那么有易上手、见效快的秘籍吗?
工欲善其事、必先利其器
磨刀不误砍柴工
程序员的 "刀" 有软硬之分,善用每一类都能从 1X → 10X 前进。JRebel ① (Reload Code Changes Instantly) 就是 Java 程序员的软类工具神器之一。
What's JRebel
JRebel 就是代码实时编译工具,或者说是代码 Hot Swap (热交换) 的工具,当程序代码发生变更后,JRebel 会重新加载变更后的 Class 文件,使我们 "所见即所得"。以实际工作中项目为例,项目不大,但启动时间用了 68秒。这只是一般的项目,而且电脑配置不低的情况下,若项目依赖越多,那么所花的时间也将随之增长,几分钟的启动时间必然不是少数。
INFO com.x.ApplicationKt - Started ApplicationKt in 68.062 seconds (JVM running for 79.47)
可能你会觉得1分钟或者2分钟并不重要,但若你长远来看的话,每次节约 1.5 分钟,那么我们可以节约出多少时间呢,算一算的话,那一定是一个让你吃惊的数值。我们以一年12个月,每月23个工作日,每日有效工作时间8小时,平均每日代码变更20次进行估算。
12 * 23 * 20 * 1.5 = 8280 min = 138 h ≈ 18 day
这样一算,我们一年花费在程序启动上的时间就足足有18天,这比我三年的年假还多3天(真希望老板知道我是一个10X 程序员,节约出如此多的时间,能够给我长点工资,实在不行放几天假也行啊)。
JRebel for IntelliJ
最简单的使用方式就是通过 IntellJ IDEA 安装 JRebel for IntelliJ 插件,该插件属于收费软件,在条件允许的情况下还是建议大家使用正版,当然了我们也可以有其它方式 _ 。
JRebel 安装成功后,我们可以通点程序的 Main
方法进行启动,点击运行按钮,IDE 会为我们提供新增的两个 JRebel 选项,我们按需启动就好了。
除了上面的侧边启动外,也可以在工具栏点击对应的按钮进行运行,也包含了 DeBug 和 Run 两种模式, 如图所示:
What's the result
万事具备、只欠东风
JRebel 也安装且项目启动成功,那如何查看效果呢? 这就比较简单了,仅仅是点击一下按钮就搞定。JRebel 以增量编译的方式工作,当 Java 文件变更后,它只处理该 Java 文件对应的 Class 文件就好,而不是把所有的代码重新处理一遍,所以它相当快速和高效。
两个选项都是编译,第一个仅编译变更代码文件,而 Rebuild Project 则是整个项目重新编译,当然花费的时间也更长,所以我们使用 Build Project 就可以了, 代码一经编译之后 JRebel 就会帮助我们把 Class 文件进行替换,从而实现 Hot Swap, 整个替换非常迅速与快捷, 从而节省出更多的时间。
其实重要的并不是说这样会节省出多少时间, 关键是我们不会掉出心流状态, 工作不被中断,效率自然就更高了。我们的大脑就像计算机一样, 做一件事情的时候被另外的事情中断,然后再回到之前的事情是有代价的。这个代价就像线程切换一样, 而且我们大脑的工作内存恢复需要的时间可比计算机长太久了。所以能够全身心的投入做一件事情, 才是效率最高的方式, 处理完一件事情之后它就不会再影响我们大脑的后续工作。
其实生活中的很多事情只可意会, 悟了就是悟了, 没悟的话怎么讲都不会懂,只有亲身经历方可体会。实践出真知, JRebel 对 Java 程序员来说它就是一个 用了就回不去 的东西。
Appendix
①. JRebel https://jrebel.com/