2026年9月11日 星期五
Spring Boot:建置與執行
2026年7月12日 星期日
Java程式設計師應該知道的97件事:來自專家的集體智慧
2024年5月12日 星期日
敏捷與Scrum軟體開發速成
對於軟體專案管理方法,始終沒這麼引起我的興趣。畢竟第一線研發工程師的日常,忙著找解法和實作程式碼才是工作重心,至於專案範圍、時程主要還是讓專案經理煩心。然而最近怡好參與一個採用Scrum管理方法的新專案,一開始難免一頭霧水進退失據,想來只好反求諸己,拿這本敏捷與Scrum軟體開發速成來補補知識量,以便更快調整好步調完成任務。
愛書人總會被書所關照,隨意挑選的一本Scrum著作,出乎意料地是言簡意賅的精典作品。有別於瀑布流程將軟體開發劃分成需求收集、設計、編寫程式和測試,採用一切都得事前設計的思維(BDUF-Big Design Up Front)。敏捷開發則是主張漸進的累積,以一點點的需求收集、一點點的設計、一點點的編寫程式和交付一點點的價值貫穿整個專案。敏捷價值觀如下:
個人與互動 重於 流程與工具
可用的軟體 重於 詳盡的文件
與客戶合作 重於 合約協商
回應變化 重於 遵循計畫
不過理想很豐滿,現實很骨感,這種顛覆傳統的專案管理手法,前提必定要出資者理解與採用,不然若是瀑布思維的客戶遇到敏捷思維的開發團隊,雙方對做完了的定義完全不同,肯定會導致衝突與齟齬。
在Scrum團隊成員分成三類角色,代表客戶提出需求與排定優先順序的產品負責人,主導Scrum流程與會議的Scrum教練,以及實際從事開發任務的團體成員。三個角色各司其職卻又要充分的協同作業以獲得團隊共識。由於敏捷開發與瀑布法的差異甚多,如果團隊成員沒被明確告知各個角色之間的責任,將會出現不可預測的管理風險。最明顯的例子就是在瀑布法位於最末端的測試,在改敏捷開發時必須融入在每個小週期內完成,甚至是連系統開發文件也被包含在一點點的設計工作裡。也因此採用敏捷開發的團隊多半也樂於懷抱測試驅動開發的程式撰寫流程。
敏捷與Scrum軟體開發速成是本值得一看的佳作,特別是想瞭解Scrum管理的獨特之處。然而這些理論與觀念,如何真正促成專案的成功,最終的變數還是執行的Scrum團隊成員。這也是Scrum管理沒有明確聲明的前提,團隊成員必須擁有相當程度的實務經驗與技術能力,因為產品負責人只負責提出客戶需求,要怎麼如質如實地打造出堅若磐石的軟體,反而是由團隊成員主動反饋、規劃和實作。軟體開發的道路上,不論是管理手法或是技術架構,本來就沒有可以一勞永逸地適應各種場合的解決方案。如果以為敏捷開發是可以確保專案開發神功護體的銀色子彈,那可誤會大了。
2023年2月18日 星期六
玩真的!Git ? GitHub 實戰手冊 - coding 實境、協同開發、雲端同步,用最具臨場感的開發實例紮實學會!
Git工具在軟體版本管理領域中的地位我想已經不用多言,基本上除非是上古時期的恐龍工程師,絕大多數的碼農都至少熟悉一種版控工具,而Git是其中的佼佼者。它被廣泛地整合到各種IDE(整合開發環境)中,也有數種方便好用的GUI(圖形使用者介面)工具,一但有協同開發的需要,Git對軟體工程師而言是非常友善的選項。
話說回來,也因為工具整合的太好,常見的操作根本用不著親自下指令,所以許多人連基本的Git指令都沒打過。更別說一些合併失敗的異常情況,是需要瞭解Git的設計與觀念才能迅速、正確的排除。如果沒打好基礎,偏偏又在專案Deadline前遇到,那可真的會讓人冷汗直冒。而這本「玩真的!Git ? GitHub 實戰手冊」正是以實例帶領讀者利用最符合職場開發情境的範例,完成一項又一項具體的Git任務,讓你從初學邁到進階的一本佳作。
不論是全域參數檔設定、修改/壓縮commit註解和運用stash暫存區等,這些被一般書籍視為「進階」的Git功能,書中都用簡明扼要的描述並配合直接的例子讓讀者心領神會,對比其它以Git為主題的書,這本的CP值是遙遙領先。最終章更是將使用Git時常困擾開發者的一些疑難雜症條例出來,一一提出具體解法。這本書放在案頭,可以讓你有如服下定心丸般,盡情使用Git來滿足協同開發與版本控制的需求。
2022年12月25日 星期日
最親切的Git入門教室
身為程式開發人員,若不曾用過版本控制軟體,那可真的不夠專業。畢竟程式碼錯綜複雜,專案開發時又常涉及一整個團隊成員。如果沒有穩定可靠又方便操作的檔案管理工具來輔助,中大型的軟體專案在開發與後續維護時,肯定是事倍功半自找苦吃。市面上知名的版本控制軟體不少,而Git肯定是時下最廣為人知且流行的開源碼方案。
許多工程師和我一樣,日常作業是透過便利的Git用戶端工具來操作Git指令,「知其然,不知其所以然」,雖然能靈活地使用Git進行軟體開發業務,但對Git的設計概念還是一知半解。此時回到原點從頭瞭解Git觀念是相當划算的自我投資,而「最親切的Git入門教室」正是本面向初學和想打好Git基礎的入門書。
如同作者所說,講白了Git操作不外乎「複製(Clone)」、「提交(Commit)」、「推送(Push)」、「拉取(Pull)」。實務上,令人煩心的都是在排除程式碼裡的「衝突(Confict)」,再「合併(Merge)」程式碼來提交結果。雖說Git操作很制式,但對新手來說,剛開始時,肯定會對「暫存區(Stage)」的設計有點摸不著頭緒。一查資料,接連不斷又出現「儲存庫(Repository)」、「追蹤分支」...等Git特有的名詞,更讓使用者手足無措。不用擔心,抱著輕鬆的心情備好一台電腦,隨著「最親切的Git入門教室」的內文一步步練習,你將打下扎實的Git基礎。
2021年10月16日 星期六
Eclipse完全攻略(第四版)[Gradle自動化建構Java開發專案]
工欲善其事,必先利其器。Java這種編譯式語言不像直譯式語言(Shell Script, Javascript)即寫即用,因此在程式開發的實務上,工程師多半會挑選順手的整合開發工具(IDE)來使用。Ecplise便是在Java業界老牌的IDE,雖然近年來IDE的後起之秀不少,但它依舊保持極高的市佔率。
「Eclipse完全攻略(第四版)[Gradle自動化建構Java開發專案]」一書是日本人撰寫,由於該系列會不斷地配合Eclipse IDE新版推出新作,在日本儼然成為Ecplise的非官方手冊。台灣的繁體中譯本有出二、三、四版,由於我先前看過第二版的「Eclipse完全攻略: 從基礎JAVA到PDE外掛開發」印象不錯,也想粗淺地瞭解一下它副標中的「Gradle」,所以這次就買了第四版來瞧瞧。
在IDE基本功能的介紹算是可圈可點,除了原本開發中常用的功能外,書中會說明在操作Eclipse時常會到的觀念/詞彙(視景、工作區),也分享不少實用但略嫌冷僻的設定步驟(如何關聯副檔名、如何進行檔案差異比較)。但從「開發Web應用程式」的章節開始,就可以體會到這本2015年著作的致命傷...「太舊了」。介紹的外掛程式(Plugin)和軟體框架都是近十年前的東西,而Gradle的章節更慘,工具介面的功能完全不同,沒有參考價值。
近年來我已經不再急切地大肆添購電腦書,其中最關鍵的原因是「沒辨法在賞味期限前看完」。IT技術一日千里,特別在工具和產品的領域,幾乎是年年有新版。若要隨著一本幾年前的電腦書按步就班地操作、練習,光是軟體版本的差異就讓人心灰意冷。因此我現在是秉持著「工具型的電腦書,有需要再買」的觀念,盡量讓每本讀過的書發揮它最大的效益。而這本「Eclipse完全攻略(第四版)」,只能套句夏亞的名言「這是年輕犯下的錯」。
2021年8月25日 星期三
Python大數據特訓班(第二版):資料自動化收集、整理、清洗、儲存、分析與應用實戰
大數據的定義中有四V,巨量(Volume)、快速(Velocity)、多樣(Variety)和疑真(Veracity)。我在數據工程的實務中,主要是負責大數據平台Hadoop和Spark平台的維運與開發,面對多樣化資料(Variety)的處理是相對陌生的。恰好看到這本「Python大數據特訓班(第二版)」,主軸環繞在使用Python語言進行網路資料擷取、數據清洗與儲存等實用技術,想當然耳要買來研習一番。
Python世界中有五花八門的模組可讓工程師運用,而書中挑選的Numpy、Pandas和Matplotlib都是數據處理時核心的選項。比起自個在Stack Overflow網站中查閱零碎片段的程式碼,書中以小節為單位,漸進式地展示這些模組的用法,整理了許多執行數據工程任務時常用的功能,讓我覺得十分受用。相信熟讀「Python大數據特訓班(第二版)」後,未來在面對專案的數據爬蟲需求時,能充滿自信地說一聲「I'm ready」。
全書內容簡潔充實,很適合做為大數據入門的教材,若搭配個兩天16小時的上機練習,完全就是一堂收費上萬元的資◯會課程,可以學到基礎的網站爬蟲與數據清洗實務。可惜的是雖然書名有寫著「第二版」,但看來再版時編輯並沒有再次詳細檢閱內文。書中後半的練習無法讓讀者照本宣科地完成,原因是當做範例的網站頁面內容已有變動。對初學者來說肯定十分苦惱,但轉念來看,如果把它看成進階的練習題,強迫讀者活學活用剛從書中學會的技巧,自力完成分析網頁結構的挑戰,倒也不是件壞事。
2020年7月26日 星期日
演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解
隨著工作經驗的與日俱增,漸漸地不再迷信演算法對工作實務的重要性。不過這是因為我從事的是應用系統(AP)的設計/開發,即便後期主要在做大數據/機器學習的應用,也是直接受惠於高階程式語言和各種開源函式庫/架框。這領域的工程師已經很少花費心力在處理底層運算中枝微末節的效能議題,像Big O這個評量算法複雜性的衡量單位,真的在職場上沒遇到有同事拿來相互討論。
這不表示程式設計師可以不用瞭解精典演算法背後的概念。列表(List)、陣列(Array)、堆疊(Stack)、佇列(Queue)等資料結構,是各種程式語言中必備的核心類別/元件。而排序(Sort)算法則是實際開發時最常被使用到的基礎算法,瞭解不同排序算法的優缺點,會大大地改善程式執行的效能。因此「資料結構」和「排序算法」這兩章可視為程式工程師必備的業務知識(Domain Knowledge)。
陣列搜尋、圖形搜尋、分群以及最後一章的「其它演算法」則是各擅勝場,在特定應用領域中都是最廣為人知的核心演算法。最值得一提的是第5章介紹的「安全性演算法」,它從最基本的數位加密觀念開始介紹,一步步地擴展到「共用金鑰密碼系統」和「公開金鑰密碼系統」,而後者正是目前網站加密技術的核心。「數位簽章」和「數位憑證」說明了HTTPS的運作原理,更是網頁程式設計師不可遺漏的業務知識。
嚴格說,書名副標提到的「人工智慧、數據分析」有點言過其實。所提到的資料結構和演算法,對於數據分析、機器學習/人工智慧領域,都是不足掛齒。本書適合給有志成為程式設計師的人當做學習教材,抑或是程式設計同業用來複習或做為消遣的小讀物。在主旨為講解計算機演算法的書海中,這本「演算法圖鑑」是最容易讓讀者吸收的傑作。
2018年11月29日 星期四
Flask網頁開發第二版
2018年3月30日 星期五
Python網路爬蟲王者-Selenium
相信時致今日,沒有人可以否認網路上的資料近乎無窮無近,只端看你要如何使用它。
《Python網路爬蟲王者-Selenium》完全是目的導向的工具書。目標讀者是有心瞭解網路爬蟲技術的人。書中從基本的網頁結構開始講解,尊定讀者後績學習的基礎。再藉由一小段一小段的程式練習範例,讓讀者自然而然地熟習網頁元素定位的技巧。在看完第4章之後,我已經能完成工作上需要的網路爬蟲任務了。
書本的中後半段,是把重心轉向網頁程式的自動化測試。這原本就是Selenium當初出被開發出來的用途。只是Selenium實在太好用,所以僅是拿來當成網路爬蟲的工具,就已經是值回票值了。網頁程式自動化測試目前在台灣IT圈,應該不算普遍被採用的技術(人工測試比較多),對於網頁程式工程師來說,多瞭解絕對是好事,或許能有派上用場的一天。
如前文所述,網路上的資料什麼都有、什麼都不奇怪,藉由網路爬蟲的協助,取得有意義的資料來做分析、應用,用以優化企業流程,在未來是各行各業都可能探用的作法。從事後端工程師職務的從業人員,都應視為基礎能力的一環。










