官术网_书友最值得收藏!

2021年11月,有一位資深的Java開發者對我說:

“我做高級工程師差不多20年了,但我不知道怎么繼續提高水平。”

有這種感覺的人很多。他們提到的時間未必都是20年,但總之,有許多開發者與工程師做到“資深”或“高級”(也就是senior)這個層面之后,都覺得很難再進步了。

別誤會,我不是說senior不好!

到了這個級別,你可能會拿到很好的項目,可能會使用很棒的技術,可能會處理復雜的問題,也可能會面臨深層的技術挑戰。

但是有一天,你或許會像剛才那位開發者一樣,突然覺得自己還想做點什么,比如想對項目的發展方向施加更大的影響,想在工作中有更大的獨立自主權,或者想給其他開發者提供更多的啟發與指導。

以前經常有人跟我說起這種感覺,但那一次尤其讓我關注。因為那天在聊工作之前,我看到了JCP(Java Community Process)的選舉結果。我的朋友Miroslav Wengner(也就是Miro)獲選為執行委員會(Executive Committee,EC)的執行委員,JCP是一套給Java技術制定標準的工作流程。

一說到這里,我就總是想起以前的事……

第一次遇見Miro,是我們在Sun Microsystems公司(Java技術就是由Sun創建的)的NetBeans團隊共事的時候。Miro和前面提到的那位開發者一樣,也做了多年Java開發。那時我跟他詳細聊過一次開發工作,他當時同樣在senior職位上待了好些年,但并沒有就此滿足。幾年之后的今天,Miro早就超越了senior層面:他自由安排工作,發表技術演講,做開源項目,給OpenJDK的Java Mission Control項目提交內容,還成為Java Champion,并且是JCP EC的一員,他就差寫一本書了!

其實你也可以像Miro這樣走得更遠:打造自己的技術品牌,擺脫大家對senior開發者的刻板印象,更積極地推進你的項目,影響你的公司,乃至改變整個世界。

那怎么才能超越senior層面呢?這正是這本書要講的問題。

這本書吸引我的地方在于它講了設計模式的重要作用,那就是幫助我們超越senior級別。到了senior之后,有人可能想改做管理,有人可能想繼續做技術,并達到staff(主管)級別乃至成為更高級別的工程師,還有人可能想成為自由職業者或進行自主創業。無論如何,這都要求你在保證代碼品質的同時,必須有更強的責任心。

設計模式和代碼當然是直接相關的,但模式本身并不等同于代碼,它有著自己的意義。模式,是把行之有效的解決方案封裝起來,幫助我們解決那些在設計高品質軟件時經常遇到的難題。它并不局限于某段特定的代碼或某個特定的項目,而是為我們提供一套說法,讓我們可以用這套說法來交流,以描述并解決問題。超越senior層面是為了讓自己的職業前景更加廣闊。剛開始,你可能是以高級開發者或資深開發者的身份來做項目的,但你在該過程中可以參與許多事情,從而增強自己的影響力。

掌握設計模式可以讓你更快地超越當前的項目,并且更為積極地參與公司乃至整個行業的其他項目。你或許還能幫助大家調整技術的發展方向,例如,你可以參與開源項目、加入軟件基金會,也可以進入標準化組織(Miro就是這樣,他在JCP EC里面參與Java標準的制定工作)。

那么,如何才能掌握設計模式呢?這正是這本書要教給你的。你會知道怎樣在Java生態系統中運用各種各樣的設計模式,你不僅能理解這些模式所依據的理念以及它們所采用的術語,而且能看到實際的解決方案,從而了解這些模式在日常的軟件開發工作中所起的作用。

Miro還有個厲害的地方,就是他能把軟件跟實物聯系起來。他有個開源項目Robo4j,獲得過Duke's Choice Award獎,該項目能讓你用Java代碼操控機器人與無人機。我很高興看到Miro能用同樣的方法講解設計模式。這本書也是采用各種交通工具及其部件來舉例的,這些例子會借助Java 17與后續版本的新特性,幫助大家把設計模式運用到現實中,以解決實際而具體的問題。

你是不是已經準備開始打造自己的技術品牌、發展自己的事業,并努力超越senior層面了?了解這些模式能夠幫助你融入團隊,讓你與同事順暢地溝通,并在重要決策上獲得發言權。

Bruno Souza

首席顧問、Java Champion,JCP EC執行委員

Twitter:@brjavaman

個人網站:https://java.mn

主站蜘蛛池模板: 通河县| 江西省| 松滋市| 萍乡市| 色达县| 泾源县| 鄂托克前旗| 琼结县| 辛集市| 乌兰察布市| 孙吴县| 大洼县| 大丰市| 西城区| 泗洪县| 丹阳市| 沙田区| 南投县| 漯河市| 古丈县| 新邵县| 凤阳县| 井陉县| 宜宾市| 常州市| 邢台市| 乐昌市| 唐海县| 江西省| 晋城| 娱乐| 古丈县| 靖州| 合肥市| 萨迦县| 法库县| 鲁甸县| 嵊州市| 深圳市| 扎囊县| 通辽市|