All posts by hevangel

AI寫code實戰心法

看網絡上講AI寫code的實在太多外行充內行,甚至開班賣課賺不懂寫程式麻瓜的錢,實在看不過眼,在thread上嗆他們一句半句只是耍樂子。倒不如自已執筆寫一篇AI實戰文章,公開地打他們的臉,引他們過來我主場留言反駁。

有人會問我是什麼來頭,有什麼資格說三道四?我是行內人在一線AI大廠的工程師,早幾個星期剛剛完成公司內首個「AI工程師」的部署。不過職銜和公司名片只是用來唬人,真正的資格是因為工作關係,見識過無限GPU和無限tokens的威力,隱約看見今個世代基於LLM的AI技術的極限在那兒。

這篇文章是全人手寫,幫助腦袋思考的副產品。若果文筆不通順有錯字,廣東話入文看不慣,讀起來沒有起承轉合,讀者請自行餵給AI書僮伴讀。反正在AI年代,把乾貨的真知識記錄下來才最重要,日後有時間才叫AI編輯潤筆添加水份,一魚多吃。癈話不多說,讓我一一戳破網絡偽AI達人常說的廢話。

教人使用便宜的開源LLM去寫code

不要浪費時間在次等的LLM上,因為你的時間更寶貴。沒錯開源LLM的確很便宜,亦只是落後頂尖LLM三個月,但在AI世界三個月就等於人類的三年,你不會想用過時的技術吧。撇開愛祖國用國貨的因素,最大問題是你不知道何時LLM會鬼打牆,頂尖的LLM不是萬能,但遇到鬼打牆的機率少很多。你的時薪也不只二十美元,只是遇上幾次鬼打牆,你浪費掉的時間已經比頂尖LLM的月費更貴。

那便宜的LLM是否亳無用處呢?當然不是,自已用就要用最好,給別人用就要考慮成本將貨就價了。若果你十份肯定一些情況,便宜的LLM足已能勝任,用頂尖LLM就殺雞用牛刀了。寫code時有些簡單的任務,不妨交給便宜LLM去執行。若果你不太肯定,專業的做法就是先用頂尖LLM做了出來,然後建立評估去測試省錢的下限,LLM沒有最便宜只有更便宜,若8B模型能用說不定本地內建的1B也能成功呢。

教人使用no code平台去開發應用

不知何解,網絡上有一票教n8n的AI導師,很好奇他們是否收了讚助費,或是拿上一個cycle流行no code時代的東西出來循環再用。我不是因為自已是工程師所以輕視no code平台,我沒有用過n8n但我有微軟Power Automate的證書資格,公司有一半的東西是使用M365,未有AI前我自已也畫了不少flow去自動化流程,在Linux的另一半當然是shell script更加好用。

若果你今年一月時問我,那時MCP還未一統江湖,GPT5世代的推理模型還未面世,我會認同使用no code平台很正路,至少比去年流行的langchain/graph,用古怪的python語法寫workflow來得直覺。可是到十月還在教人用n8n的人,大慨就是把心思用在編寫課程打廣告收生賺錢,沒有花時間繼續進修追上一日千里的AI發展。若用Claude Code或Codex作為AI agent的開發基礎,接駁好MCP後,剩下的工作就只是寫system prompt。若果用no code平台畫出來,就是把所有connector全接到中間那個大方塊,畫完等於沒有畫。

今年有不少新世代的agentic framework面世,那個最好用目前下結論還太早。領先的兩大廠分別有Codex同Claude Code的agent SDK,Google和微軟緊隨其後,人家有什麼功能就抄什麼。獨立開源的我使用過huggingface的smolagent和後MCP時代的fastagent,而後者我更增添一個我公司需要用的小功能,發送了pull request回饋開源社群。我想要過多久時候,網絡AI導師才會教agent SDK,這些真正實用的東西呢,恐怕到時這些東西又可能過氣了。

Vibe Coding 無用論 / 萬能論

要說2025年度詞語 ,肯定是Vibe Coding一詞莫屬,年初由大神Andrej Karpathy發明,來形容全AI不經人手開發程式。群眾對Vibe Coding的反應兩極,一邊廂說普通人現在也可以寫程式,工程師軟件開發人員全部失業,另一邊廂說Vibe Coding寫出來的只是玩具,不可能拿出來作實際應用,還有更恐怖的資安外洩,整個資料庫被AI清空等都市傳說。

當外行人為Vibe Coding爭辯過不亦樂乎之際,專業的早已全面擁抱AI寫Code,科技大廠超過70%程式碼由AI生產不是神話,我自已團隊就AI生產超過200%的程式碼。你問有可能超過100%嗎?有,因為AI生產出來的有很多垃圾不能用。AI不是無用亦不是萬能,只是一件很好用的工具,需要學習才能有效地靈活運用。

在我對AI基礎技術的認知上,與其說LLM是人工智能近似人類思考,不若說LLM更像是MySQL那類的算力黑箱引擎。明白了LLM的運作原理,就不會有在與AI對話的幻覺。實際的流程是prompt+context輸入,LLM另一頭輸出一堆文字。若果輸出有問題,正確的做法不是與AI繼續對話,而是改變另一組輸入再嘗試,這個輸入到輸出驗證再試的輪迴,以前我們叫它做debug。

Vibe Coding並不是新事物,未有AI人工智能前它的名字是印度外判,也算是另一種AI(Actual Indians)。沒有管理和系統架構經驗的初級工程師,習慣所有程式碼一手一腳自已包辨,手腦合一沒錯是寫code又快又靚,但極限是一個人一天只有二十四小時。當你的項目超過你一個人的能力時,就要帶領團隊分工合作才能完成。傳統上資深工程師負責架構,初級工程師負責執行,只要薪火相傳把知識教授給後輩,上級不用去費心執行細節上的問題。

可是印度外判的出現,完全顛覆這種師徒制的理想開發環境。外判就是要節省成本,結果就是一分錢一分貨,印度外判對工作亳不上心,說漏一句就亂來錯誤百出,就好像現在的AI一樣。不知是幸運還是不幸,當年我帶領五十人的外判團隊,原本一心只想當個輕鬆發號司令的經理,結果白天我要親自把的技術執行拆件細分,寫好文件和檢收要求分發給外判去做,晚上就和他們開會做code review,他們亂來就拒收發回重做。相對起來AI比外判實在太好用了,至少AI不會明明做錯還堅持自已是對的,要我花半小時去證明為什麼他做錯了。總之受過印度外判痛苦洗體的資深工程師,早已學懂了如何運用AI去Vibe Coding的技巧,說穿了就是engineering最基本的常識,divide and conquer, clear specification, automated acceptance test。

哲學上有個無限猴子理論,若果給無限隻猴子無限台打字機,邏輯上遲早會打了部一莎士比亞名著出來。在AI比猴子聰明,大約比印度外判好一丁點,我發明一個無限印度外判理論,只要有無限GPU和無限tokens,AI遲早會寫出你想要的程式。

在AI時代,寫文章的意義

很多個月沒有更新這兒,今天心血來潮,剛好又有可以靜下來思考的時間,隨便寫下憋在腦內很久的話。這篇文章全人手寫,反正只是隨筆,流水賬的brain dump,就算我自已用AI把文章整理好,別人也是塞入AI去總結,不用浪費時間了,那天在自已blog裝好MCP,再叫AI batch mode去執吧。

自從ChatGPT在2022年尾橫空出世後,AI完全顛覆整個網絡生態,從前值錢的技能,忽然間隨便就可以用AI召喚出來。好像冷兵器轉熱兵器年代,武士窮一生苦練的劍術,被一個手持火槍的民兵轟掉。我在ChatGPT出世第二天已經註冊,有幸在第一線AI科技大廠工作,親身經歷AI這幾年間的驚人進化,每天要進上新技術的步伐很吃力,不過就如dot.com泡沬年代的速度,只要能早別人幾個月看穿技術的趨勢,不論是投資股市,把握商機還是工作上的機遇,之後十幾年食粥定食飯,就看能否搭上這班列車。

好歹我曾經是專業寫手,在大報寫影評專欄有稿費收。在AI降臨後,我的影評文章差不多全面停產,我自問也不是寫得特別出色,報章被消失後也沒有多少讀者,而是在讀者的眼中,我用一兩小時手寫的文章,與AI生成的沒有品質上的區別。我嘗試用AI輔助生成文章,結果AI幻覺太嚴重,往往曲解或誤解我想表達的意思,可以我當編輯和AI對話叫宅修正,時間上比自已手寫還慢。AI生產品質過不了自已那關,但那讀者又亳不關心那不大也不少的品質差異,所以索性不再寫影評了。

書評和股評文章是我自己的學習筆記,以前學新知識再寫下來作記錄,可以加深自已的認知。在AI輔助學習的時代,寫文章不再是最有效率的學習方法,取而代之是把知識轉化為database和prompts,需要時可以讓AI agent儲存使用。文章只是你擁有的知識的平面記錄,建立你的私人AI第二大腦,才是未來發展的方向。未來讀者不再被動地閱讀作者預先寫好文章,而是和作者的AI分身談天,當然也叫它就某議題寫篇文章發表意見。在AI時代作者身為知識curator的本質不變,但與讀者溝通的渠道使用新科技。從寫博客文章刷流量,到上FB/IG經營專頁,開Youtube做Podcast頻道 ,與作者主持的AI分身聊天室,KOL變現的方法需要與時並進用啊。

Final Fantasy VII Remake

當年《Final Fantasy VII》(FF7)係好多打機朋友嘅童年回憶,我都唔例外。記得嗰陣玩到廢寢忘餐,一個星期內打爆機。呢隻遊戲有幾經典,相信唔使多講。當年喺PS2年代已經係神作,事隔二十年,竟然推出重製版,我趁住Steam減價即刻買返嚟。但買咗之後,生活忙碌,冇咁多時間打機,玩咗差唔多兩年先爆機。

重製版嘅畫面當然靚,語音亦都出色,亦加咗好多內容。但係以前幾分鐘先行到嘅城鎮,變成要用幾個鐘先行到。原本短短嘅過場畫面,而家變成整個章節,要打好幾場戰鬥先過到,搞到行一段路都要用成一兩個鐘。

講下遊戲嘅戰鬥系統,以前係回合制RPG,而家已經冇乜人玩。新版本融合咗動作元素,最初我試咗Classic Mode,發現節奏太慢不合適現代人,於是轉用Action Mode。我揀咗最容易嘅難度,主要都係想睇故事,唔係為咗練等級。

動作模式其實同經典模式差不多玩法,只是你打人時不用係等,你可以手癢得閒按下個掣,有啲野做下咁。其實你主要等條action bar儲滿,跟住放必殺大招。如果你就咁齋打,唔放魔法唔叫召喚獸出嚟,打啲雜魚完全沒有難度,打boss就冇可能了。我玩最容易難度,唔使練功,唔使儲裝,連補藥都唔多使食幾粒。主要都係睇故事,你叫我去刷升呢,我梗係冇心機。以前細刷升呢樂可以樂此不疲,而家真係人老咗,時間寶貴,刷升呢啲咁戇居嘅嘢,留返畀啲細路仔做啦。

講返個故事,上次玩是十幾年前,原本個故事大部份忘記了,於是打爆remake後,特登去睇返舊Walkthrough,看看有什麼不同。新版有齊舊版所有重大事件,甚至有些相同對白的致敬位。新版全無逢立體世界地圖,竟然神還原舊版不少背景畫的場景,很有驚喜。

以前嘅故事非常感人,當年其實睇住佢成個Sector 7被炸咗,見到啲人好心痛,今次反而完全冇感覺。你明明Aerith俾人捉左要去救人,仲有時間花十幾小時,幫人搵音樂捉貓做跑腿。時間拖得太長,原本緊張氣氛俾佢啲小遊戲,無無聊聊嘅低B任務,全部斬斷,冇咗嗰個氣氛。

新版有免費DLC部分,只有兩章,內容較短,主要都係資源重用。Yuffie在原著中存在感比較薄弱,因為佢係後期先加入,在兩大女神面前,未能吸引很多粉絲支持,DLC起用她做主角,估不到她賣萌又幾吸引。DLC有點雞肋,Yuffie在這個時間點潛入魔光城很奇怪,主線去偷魔法水晶更加是搵戲來做。有幾個同伴新角色出場,全部都係用完即棄茄喱啡。DLC中在Sector 7走嚟走去時,有個無聊嘅棋盤遊戲「Fort Condor」,好玩又唔係,唔好玩又唔係,搞到我要全部攻略,浪費時間。DLC最好看是本傳入面嘅人物出嚟客串兩句,講下佢哋嘅小故事。

玩完Remake,很自然會去玩Rebirth,不過聽聞評價很一般,大慨不值原價買回來,等何時Steam大減價才買吧。

為什麼信天主教

阿仔,這封是你領堅振前,爸爸寫給你的信。你在學校上了堅振班,每個星期日返聖堂也返了很多年,很多基本的教理早已過聽過多遍,我也不用再重覆說多次。領了堅振代表你是一個天主教徒,不過在你這個年紀,大慨自己信天主教到底是信什麼,也只是一知半解。

很多人小時候信教,大個了就不再返教會,亦有些人某天忽然重拾信仰,也有一些人轉信了其他宗教。今天你領了堅振,只是掛名成了天主教徒,將來你會否繼續留下來,還是要看你以後的選擇。

信天主教的人,大約可以分為三類,第一類是親身經歷了神蹟而信,這類人少之又少。第二類是基於感情上文化上而信,很多鬼佬信耶穌,只是因為那是他們二千年以來的文化,他們沒有其他宗教上的選擇。第三類是經過思考而相信,faith is truth seek understanding,大部份人不喜歡思考,所以第三類人亦是少數。

如何思考信什麼,這是你自已的旅途,我是不可能幫你思考啊。就算我把我的理據說給你聽,就算你記得到背得出,若不是你自已思考出來,就不屬於你自已的思想。

首先你要回答自已,為什麼有神比沒有神合理。選擇了信相有神後,世界上有幾百種不同的宗教,那一個才是正確呢?人數少新興的宗教不用理會,可以把他們歸類為邪教。但傳統大宗教之間,應該信耶穌,信真神阿拉,還是佛祖?選擇了相信耶穌,還要再細分天主教,基督教,東正教不同的派別,手上拿都是差不多的聖經,為什麼教導卻可以有極大的分別呢。

將來你會接觸不信的人,其他宗教的人。他們可以是個好人,只不過信錯了宗教。在現今社會的禮貌,人們會儘量迴避談及宗教話題,但還是有些情況,你還是會遇到有人質疑你的信仰,你有能力作出身為一個天主教徒的回應嗎?或者當下你沒有辨法好好回答,不過不用灰心,只要回家後看書上網學習,下次再遇到同樣的提問題時,就不會被問得沒聲出了這麼丟架了。我書櫃上那些哲學神學書,就是當年因為不服輸,努力下過苦功的證明。只要你明白自已信的是什麼,為什麼天主教是唯一正確的宗教,你就不用害怕教外人的問題了。反過來其他人會害怕你的說話,因為他們害怕面對自已的錯誤選擇。

老工程師給年輕工程師的話

我的公司設有mentorship program,安排資深工程師指導年輕工程師。還刻意配對不同部門的員工,以免同組上司下屬會有利害關係,可以讓資深工程師安心無私地,把工作經驗和職場智慧傳承給新一代。

每次指導為期半年,每個月見面一次,給後輩請教前輩工作上遇到的難題。自計劃推出以來我指導過四位後輩,指導不只是在幫助他人,對我自已的職場發展也很有幫助。從與他們對話為他們解答問題中,我從而檢視我自己的職場理念,反思多年來我工作上的處事方法。

總結前後幾次指導後輩的經驗,我把自已的職場經驗理整記錄,寫成這篇文章。老實說這文章的內容,對有點工作經驗的人來說,非常「阿媽係女人」。不過有時與後輩傾談中,我很訝異有些常識,並不是每個人都懂。說在前頭,先戴頭盔,我的工作經驗,只限於科技巨企,我從畢業到現在,一直都是在標普五百大公司打工,我的經驗在其他非科技行業,新創或小中型企業,未必十分適用。

自已的前途,自已把握
很多打工仔有一個錯覺,認為只要把工作做好,升職加薪是理想當然的事。事實上你的上司,除了每年的例行工作評核時,才會想起下屬有升職加薪的需要。上司一年另外的三百六十四天,他只會關心工作進度,團隊能否完成上面派下來的任務。

升職是需要自已去爭取的,而加薪在大公司中只是升職的副產品,每個職級有固定的薪資范圍。不要相信要擦老細鞋才會有職升,大公司的升遷相對很公平,只要公司是在增長擴展中,有材能不惹別人討厭,就已經是升職的充分條件。若果上司只喜歡擦鞋無能的人,整個團隊專養懶人沒有戰力,很難在科技公司中長期生存。經濟差時科技公司炒人絕不手軟,無能的公司整間被市場淘汰,也是常常發生的事情。

升職有快有慢,但更多時候是講運氣,但當運氣來到時,你未準備好就輪不到你升職了。首先公司要賺錢升職才會快,而公司或你所屬的部門賺不賺錢,你參與的產品是否成功,絕大多數非你個人能控制。當你發現公司開始走下坡,升職的空間慢慢收窄,不要猶疑安於現狀,果斷轉職跳槽,不失為升職的另一個好方法。

趁年輕,多交朋友
這個建議聽起來有點癈話,不就是整天聽到做人要有networking嗎?在大公司工作,公司有很多自發性的社群,如午飯時間打波跑步,當一天半天義工服務社會等,有很多機會結識到同期進入公司,其他部門的新人。當大家都是新人的時候結交朋友,比較沒有利害關係容易相處。在其他部門有熟人的好處,大慨不用我多費唇舌去解釋。很多時間你不需要有等別待遇,只是消息比較靈通一點,知道對面團隊的真正意圖和優先次序,就已經可以在工作上事半工倍。

    你的知識,決定你的值價
    在科技行業工作,注定學海無崖,每年都要學習新的知識,才避免被時代淘汰。學習的知識有很多類別,有些知識放諸四海皆有用,如基礎的電腦理論,熟能生巧的揼曲手藝。有些知識是行業的專門經驗累積,全世界可能只有十數間公司有此需要。優點是技術門檻高減少外來競爭,不怕新人或外判搶飯碗,缺點是當你想走出這個舒適圈人工就大打折扣。有些知識是只在公司內部有用,如看懂那堆從來沒有文件的源碼,公司內的知識主要是就業保障,經濟不好時至少裁員第一輪裁不到你,讓你有充足時間去尋找新工作。除了技術上的硬知識外,管理團隊,項目營運,報告吹水等軟知識,升職拾級而上後,所佔的比重會越來越多。

    你的生產,決定你的收入
    你的收入並不取決於工時長短,而是取決於你的產出。許多人以為只要努力工作、加班,就能獲得高薪,但如果產出有限,無論多努力,薪水依然停滯不前。真正決定薪資高低的,是你能為公司或市場創造多少價值。提升個人產出的方法之一,是擴大自己的影響範圍。單打獨鬥的工程師,最多只能完成自己的工作,而能夠指導新人、優化團隊流程、提升整體效率的人,價值遠超過單純埋頭苦幹的個人。當你能讓整個團隊變得更高效,公司自然願意支付更高薪資來留住你。

    此外,確保你的貢獻能被具體衡量,也非常重要。如果你能拿出數據,例如「透過自動化工具減少 50% 人工操作」,或「優化系統讓效能提升 30%」,這樣的成果更容易讓上司認可你的價值。單純努力但沒有具體成效,往往很難獲得升職加薪的機會。簡單來說,決定薪資的關鍵不是你的工時,而是你的生產力。當你的工作能帶來明確的效益,提升團隊效率,甚至影響更大的業務範圍時,你的收入自然會隨之提升。與其抱怨薪水太低,不如思考如何讓自己的產出更有價值。

    沒有最好的技術,只有更低的成本
    工程師喜歡追求新技術,但技術不是目的,而是手段。 技術選擇關鍵在於能否以更低成本解決業務需求。 成本不只是金錢,還包括時間、人力、維護與學習曲線。 技術門檻過高,維護困難,反而增加企業負擔。 成熟技術有生態系統支持,能降低長期運營風險。 技術決策不應只看技術優劣,更要考量業務需求。 市場變化迅速,紅極一時的技術可能很快被淘汰。 可靠、低成本、持續創造價值的技術才值得選擇。 工程師應該思考技術是否讓工作更高效、更有競爭力。 技術的真正價值,在於幫助企業用更少的成本獲得更大收益。

    學習如何應付官僚主義
    在大公司裡,官僚主義無可避免,了解並適應這些運作才能更有效率地生存。雖然你的技術再好,但並不代表所有事情都能順利進行,很多時候,流程和內部運作才是決定成敗的關鍵。很多明文規定的流程,背後其實只是為了讓某些人感到安心,而非真正有效的管理。了解規則後,你會發現其實有不少「擦邊球」可以打,有些審批其實只是形式,懂得如何處理這些程序,就能顯著加快工作進度。

    然而,在這樣的環境中,找對人比找對方法更為重要。每個公司內部都有一些看似不起眼,但影響力卻極大的關鍵人物。他們可能是資深的老臣子,或是某個技術上的權威,這些人雖然職位不一定高,但他們的話語權往往能左右事情的走向。與這些人建立良好的關係,能讓你少走很多冤枉路。你會發現,無論你的提案多麼完美,如果沒有這些人支持,事情就很難推進。

    另外,當你直接推銷自己的想法時,往往得不到預期的支持,這時候學會讓決策者參與討論就變得尤為重要。與其強行推銷,不如引導他們在討論過程中認同你的觀點,甚至讓他們覺得這個想法是自己提出的。這樣,事情反而能夠更順利地推進。其實,在大公司裡,越是複雜的事情,越需要讓別人覺得這是「他們的主意」。這不代表你要放棄自己的想法,而是要懂得如何在複雜的組織環境中巧妙地推動,讓自己成為能夠真正帶來變化的人。

    所有事情背後必定有其原因
    在職場中,我們常常會遇到一些難解的情境或結果,無論是升遷未果、工作分配的變動,甚至是團隊成員的更替,這些都似乎沒有立刻的解釋。

    有些看似影響深遠的決定,其實背後的原因可能已經不再適用。舊有的規範或做法,可能是過去某個時期的反應,但隨著時間推移,若沒有人重新檢視這些原因,它們便可能被不經意地延續下去,成為一種過時的束縛。對此,我們要保持敏感,了解和適應環境的變化,才能不被過時的原因拖累。

    有時候不會直接告訴你真正的原因,可能決策涉及到高層的策略考量,或是人事調動中的微妙平衡。你也許會被告知一些門面癈話,但真正的原因可能是權力鬥爭的結果 。這就是為什麼我們需要有足夠的智慧,去理解探求背後的種種,不要天真地全盤接收聽到的說話。

    無論面對什麼情況,都應該記住「一切都有原因」這一點。無論是一次突然的升遷,還是某個奇怪的工作安排,背後總有其合理性。即使這個原因不容易被理解,或是讓人一時無法接受,它依然存在。在職場上,一切都不是無緣無故的,每一個決定的背後,都有一個值得探索的原因。循著利益得失的方向去尋找線索,也許是會看到意料之外的關聯。