1. 程式人生 > >專訪楊開振:程序員除了敲代碼還能做什麽?

專訪楊開振:程序員除了敲代碼還能做什麽?

最新 rip 收入 頻繁 踩坑 比較 相關 互聯 erp

技術分享圖片

楊開振《深入淺出Spring Boot 2.x》作者

當前互聯網後端開發中Java EE占據了主導地位。對於Java EE開發,首選框架和事實標準是Spring框架。在傳統的Spring開發中需要使用大量的XML配置才能使Spring框架運行起來,這備受許多開發者詬病。隨著Spring 4.x的發布,Spring已經完全可以脫離XML,只使用註解就可以運行項目。近兩三年裏,互聯網世界掀起了“微服務”熱潮。“微服務”將一個大的系統拆分為多個子系統,然後通過REST風格的請求將它們集成起來,進一步簡化了分布式系統的開發。

為了進一步簡化Spring的開發,2014年Spring Boot誕生了,它是一個由Pivotal團隊提供的全新框架,其設計目的是簡化Spring應用的搭建以及開發過程,並迎合時下流行的微服務思維,越來越多的企業選擇了Spring Boot。隨著2017年9月Spring 5.x的推出,2018年Spring Boot也推出了2.x版本,進入2.x版本時代。

基於這樣的趨勢,楊開振老師在完成前兩部著作後,收到許多的讀者、前同事和業內朋友的建議,他們希望創作一本關於Spring Boot的書,來給需要學習Spring Boot的從業人員提供參考,這就是創作《深入淺出Spring Boot 2.x》的緣起。有幸采訪到楊開振老師,下面來聽聽他的所思所想。

1.異步社區:盡管不少讀者可能看過您之前出版的書,來異步社區做客還是第一次,請您與異步社區的讀者打個招呼,簡單介紹一下您自己?

楊開振:大家好,我叫楊開振,我2006年大學畢業,十多年來一直從事Java EE開發,現在改稱Jakarta EE了,只是叫Java EE習慣了,我還是沿用Java EE吧。我主要是在做金融領域業務開發,也維護和開發過企業的ERP系統,還接觸過移動互聯網網站後端的開發等。我擔任過技術經理和項目經理等要職,還主導過項目的開發。我接觸Java EE是從需要自己搭建後臺框架的開始,後來就開始接觸框架技術,比如Struts(1和2)、iBATIS、Hibernate和EJB等老框架和技術,也玩過JavaScript、jQuery、EasyUI、 Extjs等前端技術,後來Sprng、Spring MVC和MyBatis興起了,於是它們就成了我創作的方向。相信大家認識我也是從《深入淺出MyBatis技術原理與實戰》和《Java EE互聯網輕量級框架整合開發 SSM框架(Spring MVC+Spring+MyBatis)和Redis實現》這兩本書開始的。

2.異步社區:很多作者都說寫書苦,寫書難,您寫了好幾本書,那您覺得您寫作的動力是什麽?寫書帶給您的最大收獲是什麽?

楊開振:我當前選擇了從事自由職業,主要是創作技術書籍和做在線教育,所以寫書就是我的職業,而實際上做任何一份職業要做好其實都挺難的,寫書難,難道做企業開發就不難嗎?既然選擇了這條路,就要繼續下去吧。最大的收獲有兩方面吧,一方面是寫書可以有相對固定稿費收入,畢竟自由職業首先需要考慮的是生計問題;另外一方面是重新整理和收獲知識,在創作的時候,我會回顧自己工作時用過的技術,研究它們的原理,看看有沒有辦法用得更好,不斷的地研究和總結,這樣往往會有意外的收獲。

3.異步社區:您創作《深入淺出Spring Boot 2.x》這本書的初衷是什麽?市面上已經有幾本Spring Boot的書了,為什麽您還會寫這本書?這本書與其他書的最大區別是什麽?

楊開振:因為我一直從事Java EE開發工作,是傳統的Spring開發者,而最近幾年Spring Boot引導的微服務異常火爆,漸漸成為Spring開發的主流,加上結合Spring Cloud可以快速搭建分布式系統,在我從事自由職業前,最後一個項目也是使用Spring Boot進行開發的,覺得它使用起來也十分簡便,也喜歡這樣的方式,所以我就打算創作一本屬於我自己的Spring Boot的書。市面上確實有了其他Spring Boot的書,但是我覺得只要結合自己多年的實踐經驗,考慮企業所需,我還是可以做得更好的,所以我依舊選擇了這個方向。我這本書的最大特點是結合Spring原理來介紹Spring Boot的知識,畢竟也很多使用者會抱怨使用Spring Boot後,出現異常後查找問題比較困難,但是只要你懂Spring原理,處理Spring Boot遇到的問題大部分都不會太困難,這本書很多時候是從這點出發進行考慮的。

4.異步社區:《深入淺出Spring Boot 2.x》這本書寫作期間遇到了什麽困難嗎?聽說這本書第一次交稿後沒有馬上出版,您又花了很長時間更新了一版,給大家講一下這背後的故事?

楊開振:這本書的創作比創作接近700頁的《Java EE互聯網輕量級框架整合開發 SSM框架(Spring MVC+Spring+MyBatis)和Redis實現》還要困難。原因是Spring Boot的版本一直變化,從開始創作這本書的時候,開始版本是1.5.4,到第一次交稿是1.5.9,在快要定稿出版的時候,Spring Boot又正式更新到了2.0.0 GA版本,我和本書的責任編輯楊海玲老師商量後,決定將Spring Boot的版本更新到2.x以上的版本,畢竟這是未來的趨勢,這就是為什麽第一次交稿並未出版的原因了。創作這本書的第二個困難是可以參考的資料十分少,畢竟是Spring Boot版本剛更新,文章和資料少得可憐,所以只能自己去“踩坑”和研究源碼了,所以花費的時間和精力都比創作前兩本要大得多。

5.異步社區:2017年9月Spring 5.x的推出,2018年Spring Boot也推出了2.x版本,進入2.x版本時代。您覺得2.x的優勢是什麽?

楊開振:Spring 5.x的亮點推出了新的無阻塞框架WebFlux,並且融合了最近Java 8到Java 9引入的新技術,如Lambda表達式、模塊化等的最新的思維,這些應該是未來Java的方向。Spring Boot 2.x是基於Spring 5.x的,所以首先繼承了Spring 5.x的優點,其次是完善了Spring Boot 1.x的功能,所以它也是未來的方向。

6.異步社區:您最想將《深入淺出Spring Boot 2.x》這本書推薦給誰看?您覺得最能從本書中獲得收益的是哪些人?

楊開振:要學習這本書需要先掌握Java和Java EE基礎和數據庫原理(SQL),如果需要使用Redis和MongoDB的話,也需要讀者自行學習這兩個NoSQL數據庫。整體來說,本書適合Java互聯網後端開發人員,從傳統Spring 項目轉向Spring Boot和Java微服務開發的開發人員都可以從中獲得收益。

7.異步社區:對於《深入淺出Spring Boot 2.x》的讀者,在如何學習和如何閱讀本書方面,您有什麽建議?

楊開振:我只能說因人而異。如果是初學者建議掌握好Spring的IoC和AOP、數據庫編程、Spring MVC流程和常用的開發知識等基礎內容,對他們來說而這些工作中使用最頻繁的,也是在面試的時候被問得最多的。如果是已經洞悉了Spring的有經驗的開發人員,那麽就可以根據自己的需要學習了。又或者你在做項目,也可以根據自己感興趣的內容來學習,畢竟並不是所有的技術都用得上。

8.異步社區:本書配套了大量的免費視頻,您將這些視頻免費的出發點是什麽呢?

楊開振:免費視頻的推出,主要是幫助新手,畢竟很多新手看書會卡在某個點上,而得不到解答,也許看了言傳身教的視頻課程後效果會更佳,畢竟有一個直觀的感受,很多人也許會茅塞頓開。從我個人來說也可以幫助自己提高講課的技巧,畢竟我自由職業的方向是技術書籍創作和在線教育。關於本書我也開了淘寶課程(http://i.xue.taobao.com/detail.htm?courseId=98159),采取技術入門課程一律免費,而深入企業級的才需要收費的形式來幫助大家,這樣大學生和初學者就可以得到免費課程的幫助了,畢竟一些機構的培訓費價格也是不菲,來我這裏入門的課程就全部免費了。

9.異步社區:您目前成為自由職業人,全新投入在淘寶教育平臺上開發Java EE互聯網相關的在線培訓課程,是什麽促使您下這樣的決心?培訓和寫書的感受有什麽不同?哪個對您的影響更大?

楊開振:我看到了很多人投身在線教育行業,而寫書也會給我帶來一定的名氣,這樣是相輔相成的,也能幫助到更多的新人,我的一位前同事辭職去從事在線教育也很成功,所以更加堅定了我走這條路。培訓在於角色轉換,我目前只是嘗試階段,很多還不太適應,加上目前還不算成功,所以影響更大的應該是寫書,能談的培訓方面的東西還比較少,所以就不展開討論了,等將來做起來了,有更多的心得了再談這個問題吧。

10.異步社區:經過這麽多年的工作積累,您對計算機編程的感覺是否還如當年一樣熱衷?如何在繁重的工作壓力下,保持初心呢?

楊開振:我對計算機編程還是很熱衷的,主要是新技術。我目前研究分布式系統,主要是Spring Cloud微服務,也打算在這方面創作。其實工作繁重的時候真的沒有時間去研究技術,只能在工作不繁重的時候研究新技術。保持初心也是因人而異吧,我是保持一種好奇心和職業所需,所以總想研究一些新的技術,也有些人是因為解決工作需要,所以每個人的方式會不一樣,找到適合自己的就可以了。如果發現自己沒有這個動力了,換個行業也是可行的,我的朋友也有不少是這樣的,也挺成功的。

11.異步社區:對於剛剛入門的技術新人,您有哪些建議和經驗可分享?

楊開振:對於入門的新手來說,我個人建議學好Java基礎,Java EE技術這些是入門的基礎,然後是學習Spring IoC和AOP、數據庫編程等,關於Spring內容的均可以參考我的免費課程。從我QQ群裏接觸的新手來看,大部分新手存在4個問題是比較嚴重的。

第一個是眼高手低,很多讀者告訴我兩周或者一個月看完了我的《Java EE互聯網輕量級框架整合開發 SSM框架(Spring MVC+Spring+MyBatis)和Redis實現》,我直接回復他,那麽就等於沒有看過,因為學習編程是實踐的科學,沒有實踐過只是看過的一律歸結為零,你不會知道這其中很多的細節和精妙之處。

第二個不能正確地對待錯誤,在遇到錯誤或者異常時,很多新手會過於沮喪,然後選擇放棄或者依靠他人。在我的讀者群裏,經常有人不加思索地問問題,其實這些是錯誤的方式,當你發生錯誤或者異常的時候,首先要做的是看異常日誌定位問題,其次是進行調試,通過監控變量來定位是哪一步走不通,而不是直接丟給所謂的某個高手,學會定位錯誤比正確的方法更為重要,因為正確的方法是“魚”,而定位問題的過程是“漁”,要知道“授人魚不如授人以漁”。而事實上,在我錄制的視頻課程中,也向大家展示了我的錯誤,我並不介懷這些事情,因為我也是凡人,也會犯錯,作為老手的我都是如此何況是新手呢?別看我現在代碼犯錯少了,那是因為以前我犯的錯誤比你多多了,有了經驗而已。所以,面對錯誤是每一個學習編程人員的必經步驟,沒有什麽值得恐懼的。

第三個是思而不學。什麽意思呢?就是自己沒有認真學習就根據自己的想法來,而自己的想法卻是錯誤的。如果你是初學者,我個人建議先按別人成功的案例來,而非自己想象,做好了別人的成功案例,就可以建立信心,學習效率就高了,然後再弄明白原理,才能自己去發散自己的思維,畢竟思而不學則殆。

第四個是看不懂而不做。我寫的書鐘的案例都是可以運行的,你看不懂的時候,先“抄襲”,然後自己運行起來,或者直接調試我給的源碼也可以運行起來。運行起來後你就有信心了,然後在探索究竟,而不是什麽都不做在哪裏傻傻地看不懂,這樣也是沒有進步的。


技術分享圖片

《深入淺出Spring Boot 2.x》

作者:楊開振

Spring框架是Java EE開發的事實標準,而Spring Boot是業界最流行的微服務開發框架。

本書從一個最簡單的工程開始講解Spring Boot企業級開發,其內容包含全註解下的Spring IoC和AOP、數據庫編程、數據庫事務、NoSQL技術、Spring MVC、Spring 5新一代響應式框架WebFlux、REST風格和Spring Cloud分布式開發等。

專訪楊開振:程序員除了敲代碼還能做什麽?