專訪陳文輝:新技術很重要,但是首先要練好基本功

讓我們把時間調回到2003年6月。那一年,承載著“傳統J2EE寒冬之後的嶄新起點”美好願景的Spring項目開始立項,並以1.0版本進行推進。

時光荏苒,從Spring Framework 1.0發展到現在的Spring Framework 5.0,Spring早已從當初Java企業級開發領域的挑戰者、顛覆者,變成了標準的制定者,成為Java企業級開發事實上的標準開發框架。

經過十多年的發展,Spring家族現在已枝繁葉茂,涵蓋J2EE開發、依賴維護、安全、批處理、統一數據庫訪問、大數據、消息處理、移動開發以及微服務等眾多領域。

在Spring家族的諸多項目裡面,最耀眼的項目莫過於Spring Framework、Spring Boot和Spring Cloud。Spring Framework就像是Spring家族的樹根,是Spring得以在Java開發領域屹立不倒的根本原因,它的目標就是幫助開發人員開發出好的系統。

Spring Boot就像是樹幹,它的目標是簡化新Spring應用的初始搭建以及開發過程,致力於在蓬勃發展的快速應用開發領域成為領導者;Spring Cloud就如同是Spring這棵參天大樹在微服務開發領域所結出的碩果。

《Spring微服務實戰》譯者陳文輝老師說:我第一次接觸Spring Cloud,是由於我所負責的一個項目需要從典型的單體應用架構重構成微服務架構,而當時部門主管選定的技術方案就是Spring Cloud。從那時起,我才真正開始深入瞭解Spring Cloud。當時,Spring Cloud算是比較新的技術,國內有關Spring Cloud和微服務方面的優秀技術書籍鳳毛麟角,我只能選擇參閱Spring的官方文檔以及國外的一些技術博客。當時Manning出版社尚未出版的Spring Microservices in Action走入了我的視野。通讀完這本書的早期預覽版之後,我認為它是目前市面上將微服務和Spring Cloud結合介紹得最好的技術書籍,於是我便毛遂自薦,向人民郵電出版社的楊海玲編輯表達了希望成為這本書的中文譯者的意願。不久之後,她回覆了我,請我擔任這本書的譯者,我欣然答應,從此開啟了披星戴月的翻譯日子。雖然翻譯本書花費了我大量的業餘時間,但我也在這個過程中學到了許多。”

今天我們有幸邀請到了陳文輝老師,來聽聽他的所思所想。

1. 異步社區:文輝老師您好!異步社區的讀者都知道您是《Spring微服務實戰》一書的譯者,但為了讓更多的人瞭解您,請您簡單介紹一下自己?

陳文輝 :大家好,我叫陳文輝,是一名軟件工程師,現就職於廣東省聚盟匯文化傳播有限公司。我平時工作之餘喜歡逛逛Github,翻譯一些英文資料。我是一名典型的宅男,但我每週都會出去打打羽毛球或是籃球。

我是一個遵循自己內心,喜歡挑戰自己的人,所以儘管我已經出來工作一段時間了,但為了圓小時候的夢想,我還是買了一部電鋼琴,然後請老師上課學習鋼琴。總而言之,我是一名愛好廣泛的IT男。

2. 異步社區:您覺得微服務架構的優勢是什麼?適合什麼類型的項目?您自己在項目中也使用微服務架構嗎?

陳文輝 :微服務架構的優勢有許多,但我認為最大的優勢是,微服務架構將應用程序邏輯分解為具有明確職責範圍的細粒度組件,這些組件相互獨立,這個特性使得各個微服務可以由小型開發團隊按照自己的需求,選擇不同的編程語言和技術進行獨立開發、測試和部署,從而讓交付變得更加迅速,也帶來更加靈活的水平可伸縮性。

我自己在項目中使用過微服務架構,但我希望大家瞭解一點,那就是微服務架構並不是軟件架構中的銀彈,它適合於需要構建高度彈性和可伸縮性的大型應用程序,而對於那些具有少量用戶群的應用程序,採用微服務架構可能會得不償失。

3. 異步社區:聽說您在未聯繫出版社之前就已經自行把《Spring微服務實戰》這本書基本翻譯完了,是什麼給了您這麼大的動力呢?您翻譯這本書的初衷是什麼呢?

陳文輝 :當時我們技術部的老大決定採用Spring Cloud去重構原有的單體架構的項目,而在當時,微服務的概念方興未艾,Spring Cloud則是Spring家族裡面孕育出的新生兒,正茁壯成長著,彼時國內講述微服務與Spring Cloud的中文資料很少,所以我不得不求助於國外有關微服務和Spring Cloud的英語資料。

在這查閱國外資料的過程中,我偶然間發現了Spring Microservices In Action,當時這本書處於創作快要完結的階段,在試閱了部分章節之後,我認為這本書在講述微服務概念與設計原則以及Spring Cloud技術方面相當不錯,是一本不可多得的技術書籍,考慮到當時國內在這方面的中文資料很少,我決定自行翻譯這本書,為IT技術圈做點貢獻。

4. 異步社區:翻譯過程中,您是如何平衡日常工作和翻譯工作的呢?有什麼時間管理和提高效率的方法或訣竅嗎?您認為軟件開發人員如何才能“擠”出時間來提升自己或在技術上提升自己?

陳文輝 :我不算是一個非常高效率的人(笑),如果非要我說什麼時間管理和提高效率的方法的話,對於我自己,那就是每天定下最低的完成目標,然後每天至少完成這最低目標,偶爾碰上狀態爆棚,那就超量完成。

另外,我認為分配出一個完整的“時間塊”出來相當重要,在這個“時間塊”內就專心完成某一件事,切不可一心二用,像做一下日常工作然後又完成一些翻譯工作。因為對於我這種“單核”生物來講,這種上下文切換相當耗時,每次切換做別的不同的工作,我都要耗費一定的時間去重新熟悉與適應,所以我儘量保證自己有一個半小時以上的時間專心只做一件事,總之,工作要有連續性。

我覺得軟件開發人員要學會“偷懶”,這種“偷懶”不是我們口中的那種偷懶,而是自己要有意識甄別出日常工作中哪些工作是簡單的機械重複,哪一類工作是很類似並又經常重複的,這些冗餘工作完全是可以消除的,那麼我們可以尋找一些小工具或者自己開發一些小工具去完成這些工作,總之就是在工作中找出不必要的耗時部分,然後想方設法地去“偷懶”,這樣工作效率提高了,自然有時間去學習新的知識。

5. 異步社區:通過翻譯和閱讀《Spring微服務實戰》這本書,您最大的收穫是什麼?這本書對您工作有哪些幫助和促進作用嗎?

陳文輝 :那應該是構建基於微服務的應用程序的設計考慮因素。在使用Spring Cloud開發項目時,我會根據這些設計考慮因素,再權衡實際環境去設計和開發,從而讓項目架構更加完善,這讓我少走許多彎路。

6. 異步社區:您推薦哪些讀者看這本書?如何看才能夠提升閱讀效率?

陳文輝 :想要學習如何構建基於微服務的應用程序的Java開發者都應該看這本書。在閱讀這本書時,最好是與本書的配套源碼一起配合使用。在閱讀有關理論方面的文字時,要多思考這樣對不對以及為什麼要這麼做。

閱讀完每一章之後,要思考本章最終完成的項目代碼比上一章多了些什麼內容,做了哪些提升。通過這樣,閱讀完這本書就能汲取這本書的精華,而不會閱後即忘。

7. 異步社區:您在工作中遇到過棘手的問題一般如何解決?

陳文輝 :我首先會回憶一下之前是否解決過類似的棘手問題或者在積累的筆記中是否有相應的解決方案。如果有,那就根據實際情況套用這些解決方案。

如果沒有,那麼我會查閱資料,看看有沒有人遇到過這個棘手的問題,看看他們的解決方案是怎樣的,或者有沒有現成的工具能幫忙解決這個棘手問題,實在沒有的話,我會和認識的技術小夥伴仔細討論,然後自己擼起袖子加油幹。在完成這個棘手問題之後,抽空寫一篇筆記去記錄這個棘手問題的解決過程。

8. 異步社區:在您眼中,一個優秀的程序員應該具備哪些技能和修養?

陳文輝 :1. 歸納與總結:沉澱後的知識才是牢固的知識;

2. 不斷學習,自我提升:N年開發經驗不是指一年開發經驗用N年;

3. 優秀的抽象能力:能快速抽象出問題與解決方案的本質;

4. 良好的英語閱讀能力:很多一些新技術的資料總是以英文文檔的方式存在,中文資料總是有滯後性,對於想要了解和學習新技術的程序員來說,英語閱讀能力還是挺重要的。

9. 異步社區:您平時通過哪些途徑進行學習和提高技術能力的?對於剛剛入門的新人,有什麼建議和經驗分享?

陳文輝 :多看優秀博客+多逛GitHub+多寫筆記(博客)去總結。對於剛剛入門新人,儘管學習一些新技術很重要,我覺得還是首先要練好基本功,而不是做一名“喜鵲型開發者”,只會追捧新技術,獲取使用新技術的片刻快感,最終導致自己並沒有沉澱出什麼東西。

專訪陳文輝:新技術很重要,但是首先要練好基本功

《Spring微服務實戰》

[美]約翰•卡內爾(John Carnel 著)

本書以一個實際項目為主線,介紹雲、微服務等概念以及Spring Boot和Spring Cloud等諸多Spring項目,並介紹如何將該項目一步一步地從單體架構重構成微服務架構,最終將這個項目拆分成眾多微服務,讓它們運行在各自的Docker容器中,實現持續集成/持續部署,並最終自動部署到雲環境(亞馬遜雲)中。

專訪陳文輝:新技術很重要,但是首先要練好基本功


分享到:


相關文章: