作為 CEO 使用 Emacs 的兩年經驗之談
兩年前,我寫了一篇部落格,並取得了一些反響。這讓我有點受寵若驚。那篇部落格寫的是我準備將 Emacs 作為我的主辦公軟體,當時我還是 CEO,現在已經是 CTO 了。現在回想起來,我發現我之前不是做程式設計師就是做軟體架構師,而且那時我也喜歡用 Emacs 寫程式碼。重新考慮使用 Emacs 是一次令我振奮的嘗試,但我不太清楚這次行動會造成什麼反響。在網上,那篇部落格的評論也是褒貶不一,但是還是有數萬的閱讀量,所以總的來說,我寫的是一個蠻有意思的題材。在 Reddit 和 HackerNews 上有些令人哭笑不得的回覆,說我的手會變成雞爪,或者說我會因白色的背景而近視。在這裡我可以很高興地回答,到目前為止並沒有出現什麼特別糟糕的後果,相反,我的手腕還因此變得更靈活了。還有一些人擔心,說使用 Emacs 會耗費一個 CEO 的精力。把 Fugue 從一個在我家後院的靈感變成強大的產品,並有一大批忠實的顧客,我發現在做這種真正複雜之事的時候,Emacs 可以給你帶來安慰。還有,我現在仍然在用白色的背景。
近段時間那篇部落格又被翻出來了,併發到了 HackerNews 上。我收到了大量的跟帖者問我現在使用狀況如何,所以我寫了這篇部落格來回應他們。在本文中,我還將重點討論為什麼 Emacs 和函數語言程式設計有很高的關聯性,以及我們是怎樣使用 Emacs 來開發我們的產品 —— Fugue,一個使用函數語言程式設計的自動化的雲端計算平臺的。由於我收到了很多反饋,其眾多細節和評論很有用,因此這篇部落格比較長,而我確實也需要費點精力來解釋我如此作為時的想法,但這篇文章的主要內容還是反映了我擔任 CEO 時處理的事務。而我想在之後更頻繁地用 Emacs 寫程式碼,所以需要提前做一些準備。一如既往,本文因人而異,後果自負。
意外之喜
我大部分時間都在不斷的處理公司內外溝通。交流是解決問題的唯一方法,但也是反思及思考困難或複雜問題的敵人。對我來說,作為創業公司的 CEO,最需要的是能專注工作而不被打擾的時間。一旦你決定投入時間來學習一些有用的命令,Emacs 就能幫助創造這種不被打擾的可貴環境。其他的應用會彈出提示,但是一個配置好了的 Emacs 可以完全不影響你 —— 無論是視覺上還是精神上。除非你想,否則的話它不會改變,況且沒有比空白螢幕和漂亮的字型更乾淨的介面了。不斷被打擾是我的日常狀況,因此這種簡潔讓我能夠專注於我在想的事情,而不是電腦本身。好的程式能夠默默地操縱電腦,並且不會奪取你的注意力。
一些人指出,我原來的部落格有太多對現代圖形介面的批判和對 Emacs 的讚許。我既不贊同,也不否認。現代的介面,特別是那些以應用程式為中心的方法(相對於以內容為中心的方法),既不是以使用者為中心的,也不是面向任務的。Emacs 避免了這種錯誤,這也是我如此喜歡它的部分原因,而它也帶來了其他優點。Emacs 是帶領你體會計算機魅力的傳送門,一個值得跳下去的兔子洞(LCTT 譯註:愛麗絲夢遊仙境裡的兔子洞,跳進去會有新世界)。它的核心是發現和創造屬於自己的道路,對我來說這本身就是創造了。現代計算的悲哀之處在於,它很大程度上是由帶有閃亮介面的黑盒組成的,這些黑盒提供的是瞬間的喜悅,而不是真正的滿足感。這讓我們變成了消費者,而不是技術的創造者。無論你是誰或者你的背景是什麼;你都可以理解你的電腦,你可以用它創造事物。它很有趣,能令人滿意,而且不是你想的那麼難學!
我們常常低估了環境對我們心理的影響。Emacs 給人一種平靜和自由的感覺,而不是緊迫感、煩惱或興奮 —— 後者是思考和沉思的敵人。我喜歡那些持久的、不礙事的東西,當我花時間去關注它們的時候,它們會給我帶來真知灼見。Emacs 滿足我的所有這些標準。我每天都使用 Emacs 來工作,我也很高興我很少需要注意到它。Emacs 確實有一個學習曲線,但不會比學自行車的學習曲線來的更陡,而且一旦你掌握了它,你會得到相應的回報,而且不必再去想它了。它賦予你一種其他工具所沒有的自由感。這是一個優雅的工具,來自一個更加文明的計算時代。我很高興我們步入了另一個文明的計算時代,我相信 Emacs 也將越來越受歡迎。
棄用 Org 模式處理日程和待辦事項
在原來的文章中,我花了一些時間介紹如何使用 Org 模式來規劃日程。不過現在我放棄了使用 Org 模式來處理待辦事項一類的事物,因為我每天都有很多會議要開,很多電話要打,我也不能讓其他人來適應我選的工具,而且也沒有時間將事務轉換或是自動移動到 Org 上。我們主要是 Mac 一族,使用谷歌日曆等工具,而且原生的 Mac OS/iOS 工具可以很好的進行團隊協作。我還有支老鋼筆用來在會議中做筆記,因為我發現在會議中使用膝上型電腦或者說鍵盤記錄很不禮貌,而且這也限制了我的聆聽和思考。因此,我基本上放棄了用 Org 模式幫我規劃日程或安排生活。當然,Org 模式對其他的方面也很有用,它是我編寫文件的首選,包括本文。換句話說,我使用它的方式與其作者的想法背道而馳,但它的確做得很好。我也希望有一天也有人如此評價並使用我們的 Fugue。
Emacs 已經在 Fugue 公司中擴散
我在上篇部落格就有說,你可能會喜歡 Emacs,也可能不會。因此,當 Fugue 的文件組將 Emacs 作為標準工具時,我是有點擔心的,因為我覺得他們可能是受了我的影響才做出這種選擇。不過在兩年後,我確信他們做出了正確的選擇。文件組的組長是一個很聰明的程式設計師,但是另外兩個編寫文件的人卻沒有怎麼接觸過技術。我想,如果這是一個經理強迫員工使用錯誤工具的案例,我就會收到投訴要去解決它,因為 Fugue 有反威權文化,大家不怕挑戰任何事和任何人。之前的組長在去年辭職了,但文件組現在有了一個靈活的整合的 CI/CD 工具鏈,並且文件組的人已經成為了 Emacs 的忠實使用者。Emacs 有一條學習曲線,但即使在最陡的時候,也不至於多麼困難,並且翻過頂峰後,對生產力和總體幸福感都得到了提升。這也提醒我們,學文科的人在技術方面和程式設計師一樣聰明,一樣能幹,也許不那麼容易受到技術崇拜與習俗產生的影響。
我的手腕感激我的決定
上世紀 80 年代中期以來,我每天花 12 個小時左右在電腦前工作,這給我的手腕(以及後背)造成了很大的損傷(因此我強烈安利 Tag Capisco 的椅子)。Emacs 和人機工程學鍵盤的結合讓手腕的 RSI(重複性壓迫損傷)問題消失了,我已經一年多沒有想過這種問題了。在那之前,我的手腕每天都會疼,尤其是右手。如果你也有這種問題,你就知道這疼痛很讓人分心和憂慮。有幾個人問過關於選購鍵盤和滑鼠的問題,如果你也對此有興趣,那麼在過去兩年裡,我主要使用的是 Truly Ergonomic 鍵盤,不過我現在用的是這款鍵盤。我已經換成現在的鍵盤有幾個星期,而且我愛死它了。大寫鍵的形狀很神奇,因為你不用看就能知道它在哪裡。而人體工學的拇指鍵也設計的十分合理,尤其是對於 Emacs 使用者而言,Control 和 Meta 是你的堅實伴侶,不要再需要用小指做高度重複的任務了!
我使用滑鼠的次數比使用 Office 和 IDE 時要少得多,這對我的工作效率有很大幫助,但我還是需要一個滑鼠。我一直在使用外觀相當過時,但功能和人體工程學非常優秀的 Clearly Superior 軌跡球,恰如其名。
撇開具體的工具不談,事實證明,一個很棒的鍵盤,再加上避免使用滑鼠,在減少身體的磨損方面很有效。Emacs 是達成這方面的核心,因為我不需要在選單上滑動滑鼠來完成任務,而且導航鍵就在我的手指下面。我現在十分肯定,我的手離開標準打字位置會給我的肌腱造成很大的壓力。不過這也因人而異,我不是醫生不好下定論。
我並沒有做太多配置……
有人說我會在介面配置上耗費很多的時間。我想驗證下他們說的對不對,所以我特別留意了下。我不僅在很多程度上不用配置,關注這個問題還讓我意識到,我使用的其他工具是多麼的耗費我的精力和時間。Emacs 是我用過的維護成本最低的軟體。Mac OS 和 Windows 一直要求我更新它,但在我看來,這遠沒有 Adobe 套件和 Office 的更新給我帶來的困擾那麼大。我只是偶爾更新 Emacs,但對我來說它也沒什麼變化,所以從我的個人觀點而言,更新基本上是一個接近於零成本的操作,我高興什麼時候更新就什麼時候更新。
有一點讓你們失望了,因為許多人想知道我為跟上重新打造的 Emacs 社群的更新做了些什麼,但是在過去的兩年中,我只在配置中新增了少部分內容。我認為這也是一種成功,因為 Emacs 只是一個工具,而不是我的愛好。但即便如此,如果你想和我分享關於 Emacs 的新鮮事物,我很樂意聆聽。
期望實現雲端控制
在我們 Fugue 公司有很多 Emacs 的粉絲,所以我們有一段時間在用 Ludwing 模式。Ludwig 模式是我們用於自動化雲基礎設施和服務的宣告式、功能性的 DSL。最近,Alex Schoof 利用在飛機上和晚上的時間來構建 fugue 模式,它在 Fugue CLI 上充當 Emacs 控制檯。要是你不熟悉 Fugue,這是我們開發的一個雲自動化和治理工具,它利用函數語言程式設計為使用者提供與雲的 API 互動的良好體驗。但它做的不止這些。fugue 模式很酷的原因有很多,它有一個不斷報告雲基礎設施狀態的緩衝區,由於我經常修改這些基礎設施,這樣我就可以快速看到程式碼的效果。Fugue 將雲工作負載當成程式處理,fugue 模式非常類似於為雲工作負載設計的 top
工具。它還允許我執行一些操作,比如建立新的裝置或刪除過期的東西,而且也不需要太多輸入。Fugue 模式只是個雛形,但它非常方便,而我現在也經常使用它。
模式及監控
我新增了一些模式和整合外掛,但並不是真正用於工作或 CEO 職能。我喜歡在週末時寫寫 Haskell 和 Scheme 娛樂,所以我新增了 haskell 模式和 geiser。Emacs 很適合擁有 REPL 的語言,因為你可以在不同的視窗中執行不同的模式,包括 REPL 和 shell。geiser 和 Scheme 很配,要是你還沒有用過 Scheme,那麼閱讀《計算機程式的構造和解釋》(SICP)也不失為一種樂趣,在這個有很多貨物崇拜程式設計(LCTT 譯註:是一種計算機程式設計中的反模式,其特徵為不明就裡地、儀式性地使用程式碼或程式架構)例子的時代,閱讀此書或許可以啟發你。安裝 MIT Scheme 和 geiser,你就會感覺有點像 lore 的符號環境。
這就引出了我在 2015 年的文章中沒有提到的另一個話題:螢幕管理。我喜歡使用單獨一個縱向模式的顯示器來寫作,我在家裡和我的主要辦公室都有這個配置。對於程式設計或混合使用,我喜歡我們提供給所有 Fugue 人的新型超寬顯示器。對於它來說,我更喜歡將螢幕分成三列,中間是主編輯緩衝區,左邊是水平分隔的 shell 和 fugue 模式緩衝區,右邊是文件緩衝區或另外一、兩個編輯緩衝區。這個很簡單,首先按 Ctl-x 3
兩次,然後使用 Ctl-x =
使視窗的寬度相等。這將提供三個相等的列,你也可以使用 Ctl-x 2
對分割之後的視窗再次進行水平分割。以下是我的截圖。
這將是最後一篇 CEO/Emacs 文章
首先是因為我現在是 Fugue 的 CTO 而並非 CEO,其次是我有好多要寫的部落格主題,而我現在剛好有時間。我還打算寫些更深入的東西,比如說函數語言程式設計、基礎設施即程式碼的型別安全,以及我們即將推出的一些 Fugue 的新功能、關於 Fugue 在雲上可以做什麼的博文等等。
via: https://www.fugue.co/blog/2018-08-09-two-years-with-emacs-as-a-cto.html
作者:Josh Stella 選題:lujun9972 譯者:oneforalone 校對:acyanbird, wxy
相關文章
- 扎心!一個3年經驗的程式設計師經驗之談!程式設計師
- Hugo 建站經驗之談Go
- puppeteer踩坑經驗之談
- 對話Games Vessel CEO王玥:暢談出海實戰經驗GAM
- 作為博主和曾經員工,談談近期的園子
- 經驗談
- 10年出海老兵的經驗談
- 使用Go兩年學到的五大經驗教訓 - hashnodeGo
- Oracle insert大量資料經驗之談Oracle
- 兩年工作經驗,離職了...
- 作為一名Python開發,我談Linux和mac的使用體驗PythonLinuxMac
- Emacs使用Mac
- 用過 Buffalo 框架的朋友有何經驗之談框架
- 經驗談集
- 必看!網際網路開發模式的經驗之談模式
- 從微服務遷移到工作流的經驗之談微服務
- 經驗之談:記憶體洩露的原因以及分析記憶體洩露
- 求大佬指路,目前測試經驗兩年
- 開發十年經驗之談:如何構建自己的Java開發體系Java
- 兩年經驗前端:位元組跳動系—石墨文件面經前端
- 奈飛Netflix兩年資料工程經驗 - XInran
- 使用spring validation 作為資料校驗Spring
- 邦芒寶典:職場前輩的6條經驗之談
- 攝像頭 ISP 除錯的入門之談(經驗總結)除錯
- 如何將Emacs定義為IntelliJ IDEA的外部編輯器使用?MacIntelliJIdea
- 工作十年,談談我的高可用架構和系統設計經驗架構
- 【經驗心得】談一談我IT行業未來的方向行業
- 手記系列之四 ----- 關於使用MySql的經驗MySql
- 大資料開發工程師的兩年工作經驗總結大資料工程師
- 三年開發程式設計師的職場經驗談程式設計師
- 這兩天的面試經驗總結面試
- 資料庫的日常管理經驗淺談資料庫
- 手記系列之七 ----- 分享Linux使用經驗Linux
- 前端面試分享: 兩年經驗社招-阿里巴巴前端面試阿里
- SpringCloud之使用Zookeeper作為註冊中心SpringGCCloud
- 淺談使用者行為分析之“留存”
- 支付寶數字經營服務商一個人怎麼做?我的經驗之談
- 經驗之談:我為什麼選擇了這樣一個激進的快取大Key治理方案快取