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.
??上面這段文章片段概要地說(shuō)明了 10X 程序的存在,更甚至有 100X 程序員盯仪。詳細(xì)的內(nèi)容可以查看 Antirez 的文章,文章里面詳細(xì)的講解了如何成為 10X 的內(nèi)功的修煉方式方法贪嫂。內(nèi)功的修煉需要時(shí)間的積累,那么有易上手艾蓝、見(jiàn)效快的秘籍嗎?
工欲善其事力崇、必先利其器
磨刀不誤砍柴工
程序員的 "刀" 有軟硬之分描孟,善用每一類都能從 1X → 10X 前進(jìn)山涡。JRebel ① (Reload Code Changes Instantly) 就是 Java 程序員的軟類工具神器之一峻厚。
What's JRebel
??JRebel 就是代碼實(shí)時(shí)編譯工具月幌,或者說(shuō)是代碼 Hot Swap (熱交換) 的工具,當(dāng)程序代碼發(fā)生變更后晶疼,JRebel 會(huì)重新加載變更后的 Class 文件袜蚕,使我們 "所見(jiàn)即所得"绎速。以實(shí)際工作中項(xiàng)目為例,項(xiàng)目不大搓侄,但啟動(dòng)時(shí)間用了 68秒瞄桨。這只是一般的項(xiàng)目,而且電腦配置不低的情況下讶踪,若項(xiàng)目依賴越多芯侥,那么所花的時(shí)間也將隨之增長(zhǎng),幾分鐘的啟動(dòng)時(shí)間必然不是少數(shù)乳讥。
INFO com.x.ApplicationKt - Started ApplicationKt in 68.062 seconds (JVM running for 79.47)
??可能你會(huì)覺(jué)得1分鐘或者2分鐘并不重要柱查,但若你長(zhǎng)遠(yuǎn)來(lái)看的話,每次節(jié)約 1.5 分鐘云石,那么我們可以節(jié)約出多少時(shí)間呢唉工,算一算的話,那一定是一個(gè)讓你吃驚的數(shù)值汹忠。我們以一年12個(gè)月淋硝,每月23個(gè)工作日,每日有效工作時(shí)間8小時(shí)错维,平均每日代碼變更20次進(jìn)行估算。
12 * 23 * 20 * 1.5 = 8280 min = 138 h ≈ 18 day
??這樣一算橄唬,我們一年花費(fèi)在程序啟動(dòng)上的時(shí)間就足足有18天赋焕,這比我三年的年假還多3天(真希望老板知道我是一個(gè)10X 程序員,節(jié)約出如此多的時(shí)間仰楚,能夠給我長(zhǎng)點(diǎn)工資隆判,實(shí)在不行放幾天假也行啊)。
JRebel for IntelliJ
??最簡(jiǎn)單的使用方式就是通過(guò) IntellJ IDEA 安裝 JRebel for IntelliJ 插件僧界,該插件屬于收費(fèi)軟件侨嘀,在條件允許的情況下還是建議大家使用正版,當(dāng)然了我們也可以有其它方式 _ 捂襟。
??JRebel 安裝成功后咬腕,我們可以通點(diǎn)程序的 Main
方法進(jìn)行啟動(dòng),點(diǎn)擊運(yùn)行按鈕葬荷,IDE 會(huì)為我們提供新增的兩個(gè) JRebel 選項(xiàng)涨共,我們按需啟動(dòng)就好了。
??除了上面的側(cè)邊啟動(dòng)外宠漩,也可以在工具欄點(diǎn)擊對(duì)應(yīng)的按鈕進(jìn)行運(yùn)行,也包含了 DeBug 和 Run 兩種模式, 如圖所示:
What's the result
萬(wàn)事具備举反、只欠東風(fēng)
??JRebel 也安裝且項(xiàng)目啟動(dòng)成功,那如何查看效果呢? 這就比較簡(jiǎn)單了扒吁,僅僅是點(diǎn)擊一下按鈕就搞定火鼻。JRebel 以增量編譯的方式工作,當(dāng) Java 文件變更后,它只處理該 Java 文件對(duì)應(yīng)的 Class 文件就好魁索,而不是把所有的代碼重新處理一遍融撞,所以它相當(dāng)快速和高效。
??兩個(gè)選項(xiàng)都是編譯蛾默,第一個(gè)僅編譯變更代碼文件懦铺,而 Rebuild Project 則是整個(gè)項(xiàng)目重新編譯,當(dāng)然花費(fèi)的時(shí)間也更長(zhǎng)支鸡,所以我們使用 Build Project 就可以了, 代碼一經(jīng)編譯之后 JRebel 就會(huì)幫助我們把 Class 文件進(jìn)行替換冬念,從而實(shí)現(xiàn) Hot Swap, 整個(gè)替換非常迅速與快捷, 從而節(jié)省出更多的時(shí)間。
其實(shí)重要的并不是說(shuō)這樣會(huì)節(jié)省出多少時(shí)間, 關(guān)鍵是我們不會(huì)掉出心流狀態(tài), 工作不被中斷牧挣,效率自然就更高了急前。我們的大腦就像計(jì)算機(jī)一樣, 做一件事情的時(shí)候被另外的事情中斷,然后再回到之前的事情是有代價(jià)的瀑构。這個(gè)代價(jià)就像線程切換一樣, 而且我們大腦的工作內(nèi)存恢復(fù)需要的時(shí)間可比計(jì)算機(jī)長(zhǎng)太久了裆针。所以能夠全身心的投入做一件事情, 才是效率最高的方式, 處理完一件事情之后它就不會(huì)再影響我們大腦的后續(xù)工作。
??其實(shí)生活中的很多事情只可意會(huì), 悟了就是悟了, 沒(méi)悟的話怎么講都不會(huì)懂寺晌,只有親身經(jīng)歷方可體會(huì)世吨。實(shí)踐出真知, JRebel 對(duì) Java 程序員來(lái)說(shuō)它就是一個(gè) 用了就回不去 的東西。
Appendix
①. JRebel https://jrebel.com/