- 從零學Java設計模式
- (美)米羅斯拉夫·威格納
- 1513字
- 2024-12-03 17:59:38
序
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
- Visual Basic .NET程序設計(第3版)
- Java系統分析與架構設計
- Raspberry Pi Networking Cookbook(Second Edition)
- Java程序員面試算法寶典
- Visual Basic程序設計與應用實踐教程
- Learning Apache Kafka(Second Edition)
- TypeScript項目開發實戰
- 量化金融R語言高級教程
- C語言程序設計
- Windows Phone 7.5:Building Location-aware Applications
- Python爬蟲、數據分析與可視化:工具詳解與案例實戰
- 創意UI:Photoshop玩轉APP設計
- 菜鳥成長之路
- Eclipse開發(學習筆記)
- 微信小程序開發圖解案例教程:附精講視頻(第3版)