2026年10月24日 星期六

AI 時代的影響(2026-10-24的心得)

 寫了半個世紀程式、曾出版《Clean Code》教全世界工程師把程式碼寫乾淨的 Robert C. Martin(Uncle Bob),最近公開表示他已經有超過 95% 的時間不再逐行閱讀 AI 寫的程式碼。

一位一生都在強調「程式碼是寫給人讀的」宗師級人物,何以敢做出這樣的轉變?

答案不是放任,而是把防線從「肉眼審查」拉高到「機器量化約束」與「架構把關」。

從肉眼看 Code 到機器測量

Uncle Bob 敢不看程式碼的前提,是他建立了一套極為嚴密的自動化防線:

  1. 單元測試的「複式簿記」:程式寫一套,測試再寫一套,兩本帳合不上,測試立刻亮紅燈。

  2. CRAP(Change Risk Anti-Patterns)風險指標:結合圈複雜度與覆蓋率,嚴格限制分支路徑,避免函式演變成無法維護的泥潭。

  3. 變異測試(Mutation Testing):故意竄改程式邏輯(如將 > 改為 <),驗證測試套件是否真能抓出錯誤,而不只是做表面覆蓋。

以往跑變異測試往往需要耗費整晚,如今交給 AI Agent 半小時內便能跑完並自動修復。對他而言,與其花時間逐行看語法細節,不如在終端機前審視系統架構圖,確認模組邊界與依賴關係,並由確定性的工具把關品質。

但 Uncle Bob 也直言:AI 永遠不會承擔責任,最終必須由具備判斷力的人類工程師簽名背書。

這衍生出一個更深刻的問題——如果底層程式碼都由 AI 完成,新一代的工程師要如何磨練出看懂架構、辨識 AI 是否在胡言亂語的「工程判斷力」?

Uncle Bob 給出的建議非常務實:新人入行前一到兩年,依然必須親手寫程式,甚至花時間去理解底層機器運作。只有自己經歷過除錯的掙扎,未來當 Agent 陷入邏輯泥淖時,你才能一眼看出破綻。

企業現場的兩條軌道:培育基石與引進即戰力

在技術典範轉移的浪潮下,市場上不少企業陷入了短視的焦慮,甚至急著汰換資深技術人才。然而,真正重視永續架構與工程品質的組織,做法截然不同。

以我目前所處的新環境為例,公司對人才梯隊有著清晰且具遠見的制度規劃:

  • 對新手工程師:扎根式的系統培育 公司依然持續招募潛力新人,但並非直接把他們推到第一線面對複雜的專案,而是安排進集訓中心進行為期一陣子的嚴格培訓。這正如 Uncle Bob 所主張的磨練過程——新人必須在具備標準化開發紀律、自動化測試規範與架構原則的環境下扎實練功,淬鍊出扎實的底層判斷力後,才會正式分派至各所屬業務單位。

  • 對資深工程師:不可或缺的即戰力與架構領航 在我們單位內部,為了應對企業的專案和既有系統的需求,正積極招募具備厚實實戰經驗的資深工程師。AI 能夠迅速生成語法與樣板,但決定模組切分、處理分散式事務、評估資安風險與簽名承擔系統成敗的,永遠是那些對系統全貌具備洞察力的資深腦袋。

回頭看這段待了 12 年公司的職涯轉折,前公司在 AI 轉型的口號下盲目追求速成,甚至想方設法淘汰資深員工;我很慶幸自己及時告別了那樣的環境,加入這家既具前瞻眼光、又有完整培育制度的新公司。

在 AI 時代,最頂層的架構眼光與最底層的扎實基本功,價值不僅沒有貶損,反而在機器生成的洪流中顯得愈發珍貴。

2023年6月22日 星期四

COVID-19 確診經歷紀實

原本以為真的是天選之人,就算先前家裡兩個小孩都確診都逃過了(可能有中獎但無症狀吧),不過就在2023年六月18日破解自認為天選之人的"心態",為什麼可以確認就是這天中獎的呢?因為在前都是居家上班,到人多的室內場所都會戴口罩,就剛好這天傍晚原本只想說要去附近的國小跑步運動運動,也沒想隨身要戴口罩,突被通知去市場買些晚餐的食物,想都沒想到會被傳染況且市場是戶外的,不是北市那種新興市場有冷氣的場所,就這樣無口罩去採買...果不其然當天晚上,不不應該說是隔天半夜就感覺喉嚨不太對勁,沒想太多以為跟往常一樣吃到冰的東西又不小心碰到辣的就會喉嚨腫,白天開始覺得有點發燒症狀了,到了晚上已經確定發燒沒辦法正常作息,所以先做個快篩(陰)吃個普拿疼加強碇睡覺,果然半夜就出大汗退燒,心想這藥真日是好用。

六月20日,早上又覺得不對勁,在家量38.1決定去看醫生,去到診所量39.1挖哩~~高燒ㄟ

醫生提醒明天要再做一次快篩,先開喉嚨的抗生素和退燒藥,回家一吃完一下就退燒了,到了晚上睡覺,第一次又燒,起來吃藥後流大汗,再燒一次又流大汗,一晚兩次是第一次這種體驗,覺得不對,以前吃東西導致也不會這麼慘,就這麼6/21再快篩就陽性確診了...

當天回到診所重新掛號(只收50),多了一個解咳化痰的藥丸,就這麼吃到晚上睡覺,又再燒一次起床吃藥後退燒,這個晚上開始體會到喉嚨痛如刀割的痛楚。遇到端午連假的第一天(6/22)還是閉關在房間避免影響到家人,整天身體都覺得還好就都連線到公司加班...(沒錢的啦~責任制的宿命),不過開始有流鼻涕的症狀,但流的不多。當晚睡覺還是有小燒還是有起來吃藥,喉嚨還是痛到想翻桌。

6/23 早上一早就起床,點外送麥當勞早餐來吃,九點就衝去中醫(有打電話去問流程才自己前往看診拿藥的)拿清冠一號(藥粉),沒想到是認快篩日期來決定拿幾天的公費藥粉,所以只能拿三天的份(一天四次,三餐飯後睡前,與西藥隔兩小時吃)

先記錄到這...2023/6/23 12:52 PM

======

6/24 吐痰次數多後喉嚨也比較沒那麼痛,今天整天就是每隔兩小時西藥和清冠一起吃,直到現在晚點十點39分,吞口水雖然有微微痛 但至少沒有那種撕裂的刀割痛了

總結來說對於打三劑BNT的我,感染後前兩天有發燒症狀,喉嚨還沒很痛,確診當天(第三天)就是煎熬的開始,如刀割的喉痛真的很想翻桌,真的很氣為什麼要確診而且在連假期間,算了命就是如此遇到了就勇敢下去吧,請務必把自己的作息分配好,確實準時吃飯和吃藥才能順利度過。如:八點吃早餐(清冠)+十點西藥+12點午餐(清冠)+16點西藥+19點晚餐(清冠)+21點西藥+23點睡前(清冠)+半夜西藥

PS. 有看到網路上醫生有分享喝桑葚汁好像有效,但家中剛好只有洛神花茶,沒想到喝一口喉嚨就痛,看來完全不一樣的東西...OOXX




2023年4月3日 星期一

Learning English with MLB

2023-04-04 吉田的大聯盟首發全壘打 
Masataka masters monster for fist MBL's homer. 註解:monster指的是紅襪左外野的綠色高牆,統稱"綠色怪物" 
New Red Sox outfielder Masataka Yoshida gave his club a lift with the first dinger of his Major League career. 註解:dinger就是home run

2021年8月7日 星期六

Java應用程式在K8s中(Docker )的時區設定

 因為使用alpine的base image,要讓OS的時區改成自己設定就需要額外安裝tzdata套件,再加上公司環境根本不能連外進行安裝,所以想在docker file設定

ENV TZ=“Asia/Taipei”

或mount volumn使用host的時區 /etc/timezone 都沒辦法使用。

解法就是在k8s的yaml中指定AP image的環境變數就可以達到log符合預期的時間

- name : myApp 

  env : 

      -name :TZ 

        value : “Asia/Taipei”

PS. 預設Docker的標準時間是用UTC,但通常我們要用CST中原標準時間(UTC+8 hours)

Spring scheduler 也需要在annotation指定timezone

@Scheduled(cron=“0 0 1 * * ?” ,zone=“Asia/Taipei”)

2021年7月1日 星期四

不顯示列印視窗

 應用程式有直接列印或批次列印的需求時,以往使用IE都是透過vbScript來控制不顯示列印視窗,若在chrome就單純多了,AP端完全不用額外處理,只要在chrome 啟動程式按右鍵,目標的地方在最後面加上參數即可。

“…chrome.exe” - - kiosk-printing

2021年6月30日 星期三

如瑞士刀一樣好用Docker image-busybox

 K8s環境中有個需求是希望在container啟動前把PV(Persistent Volumn)內的檔案都清空,好讓container啟動時如全新般的狀態。Google後發現busybox這個精巧的image可以達到需求

YAML內

…

  ..containers:

  …

  ..initContainers:

   - name : clean folder

     Image:library/busybox

     Command:

      - /bin/sh

      - “-c”

      - “rm -rf /data/db/*”

     VolumnMounts:

      - name : my-data

        mountPath : /data/db

以上開頭字母須為小寫(編輯器自動轉換大寫真不方便)

2020年5月30日 星期六

重構

以下只是個人的教育訓練的準備內容,並非文章。
======================
  • [Training 開場]
為什麼要提這個?
業界很紅 書出了兩版(重構-改善既有程式的設計) 第一版用Java 第二版用JavaScript
我也覺得很有效 (拿code出來比對)
好處多多 : 讓工作有效率 別人來問邏輯時 需求評估時 程式編寫時 叫修維運時 最終能準時下班 快樂生活
老闆如果不是開發背景,會覺得沒有效益,所以要讓老闆知道這個名詞。
  • [What] 什麼是重構?
不改變原先程式執行的外在結果,而是影響內部結構,提高人類理解性,以降低維運成本
重構是有風險的,所以有理論(原則)、(手)方法、工具可以降低風險,帶來不少好處
  • [Why] 為什麼要重構?有什麼好處?
電腦才不管程式碼是簡潔或冗長的 (clear or ugly),但人會!
任何人都會寫程式(能跑出結果就好),但能寫出讓人看得懂的城市才是人
程式在寫的時間不多,反而在大部分都在讀和修改中。後續的接手的人才不會痛苦
如果有需求要評估或有bug要修改時,要花很多時間找要新增或修改在哪裡,改了會不會與其他交會影響(也就是產生副作用side effect)
clean code !
性能不一定會提升,所以重構不一定是性能優化,若是性能問題,著手的可能是整體設計或資料結構的改變。

  • [When] 何時該重構?
要新入新功能時
有計畫性的
code review時
當這個功能寫的超大一坨,全部重寫比重構簡單時,就不該重構。
  • [How] 重構的方法與工具
事前一定要有測試案例或測試程式來作為驗證
一次改一點就跑自動化測試,不要等到改了一大堆後才又在trace error
註解還是要寫,原因及重點要寫清楚不要寫下時間點和人名等沒用的資訊
pair-programing  誰都會犯錯,多個人一起把關,同時可以帶領一起了解及學習,分攤壓力,甚至會減少開發時間
自動化重構 : Eclipse 有一些refactoring 功能(Extract method、rename variable 等等)




AI 時代的影響(2026-10-24的心得)

  寫了半個世紀程式、 曾出版《Clean Code》教全世界工程師把程式碼寫乾淨的 Robert C. Martin(Uncle Bob), 最近公開表示他已經有超過 95% 的時間不再逐行閱讀 AI 寫的程式碼。 一位一生都在強調「程式碼是寫給人讀的」宗師級人物,何以敢做出...