2026年6月4日 星期四

杞人憂天的Robust System

曾經參與過寫一個robust system的過程,獲益良多。寫一個work嘅系統,同一個robust嘅系統,分別在於「杞人憂天」的防禦設計。

一個系統「work」是基本,但現實太多奇形怪狀的可能性,會令佢「唔work」,所以好的系統在於error-handling處理得好,包含不同的可能情況,也能令errors被妥善處理得好(處理得到),codes才能如常返回正常狀態,不會當掉。這個error handling,就像「杞人憂天」的處理,即使問題未曾遇上,也要有先見之明把codes try{} catch{}包著,保護它遇到有任何問題也可以catch得到(備註:try-catch只是error-handling的其中一種,但它已可以攔截很多問題),再之後對於現實裏的奇形怪狀errors有適當的應付方案。而就是這些強大的error handling應付方案sss,才能令system被稱得上robust吧。

說開又說,那時我們行Agile,每天都有stand-up meeting,是很難忘的一段時光。記得不同地方行Agile,有成功,有失敗(同事只為應付老闆,沒有凝聚力),以我所經歷的,成功的stand-up meeting經驗,那時上司們從大至小先分享(不是由小職員先說),以 1) 上一天作了什麼;2) 今天打算作什麼;3) 遇到什麼困難 為guidelines,聽到上司們分享他們的工作,可以幫助小職員的我也明白多一點工作在發生什麼事(雖然也有很多聽不懂的成分),而且也可以幫助我匯報我完成了的任務,又可以把處理任務時遇到的難處分享出來,上司們就可以幫助我解難,讓我走少一點冤枉路。了解上司們的工作和他們先分享,也讓我勇敢一點表達我所面對的(原來是這樣分享的),又可以對大家所面對的困難加以討論,而且那時上司們都會對我能完成的任務即時鼓勵,所以說那時很難忘。我想這個經驗也是個成功的Info n Tools秘技,值得被記下吧。

低過GPA

懷住平靜嘅心覆診。等待時遇到病發中嘅人,勾起一啲往事嘅回憶,可以放低人前嘅固定包袱經歷一次其實好難忘。有啲爽嘅感覺,可能呢個就係人天生嘅防禦機制,保護番自己,讓自己找回「正常」嘅「唔正常」神經系統。

見到醫生。醫生話我有進步有成效,膽固醇指數仲低過醫生佢自己(醫生看似是個柔弱的女生),一時都唔識反應,只好隔住個口罩向醫生投以微笑。LDL應該由3.X回落番去2.X, 低過GPA :D, 最近嘅生活調節見到有成果,喺值得有少少嘅高興嘅。醫生當日親自解釋過俾我聽,膽固醇有分好同壞,好嘅叫HDL,數值愈高愈好;壞嘅叫LDL,數值愈低愈好。從前參加我說笑是「賣血」嘅計劃,LDL曾經唔知點解去到2.X,之後又變番3.X。最近努力過健康嘅生活,但係抽血前一兩日因為一啲原因仲食左Jolibee炸雞一件同食左焗芝士牛柳粒飯,諗住實影響空肚檢測嘅血啦。但可能最近日子有功,粟米芯零食真係幫左我好多,所以LDL可以低過學校成績嘅GPA,真係值得感恩。拎藥時仲撞到朋友,可以一齊去食個清湯米線午餐,有緣呀。

為左有少少嘅慶祝,今日去左買衫,由XL+++回落番去L,喺有少少成就感嘅。同時亦都將某幾件從前嘅大碼衫拋走了。成為過去了。

Weight loss! The journey continues... 旅程中繼續努力。


2026年5月31日 星期日

如何幫助自己整理工作安排

其實都係一啲老生常談,唔知點解就係會安排得好混亂,所以就由與大家一齊brainstorm個workflow開始,將一啲common sense嘅嘢一步步組合埋一齊。我想自己唔用AI諗一諗先,之後大家想嘅話就用AI比較一下啦。

傳統 Waterfall model

一、首先,諗一下一件事需要有啲乜嘢部分。(自由發揮)

  • 目的/目標(為何 Why)
  • 牽涉到嘅群體(人 Who)
  • 時間(時 When)
  • 地點(地 Where)
  • 工作任務分工(如何 How)

二、跟住諗一下結果(output)是什麼。
  • 一個什麼樣的product
  • 一個怎樣的KPI
  • 帶給使用者一個怎麼的體驗
  • 有什麼可以讓使用者takeaway
  • ……

三、Research & analysis: 有什麼前人近似的工作可以參考?


四、列出所有達至本次output的總括的任務。
  • 產品類
    • 產品的部分
    • 產品各部分的功能
    • ……諸如此類
  • 宣傳類
    • 有什麼宣傳平台
    • 需要提供什麼資料(簡略版、詳細版)
  • 活動類
    • 有什麼活動需要安排
  • 財務類
    • 每個項目需要的價值
  • 行政類
    • 人手安排
    • 資源管理
  • ……

五、把任務再細分列出。
  • 產品由設計至完成所需要的步驟與流程
  • 製作產品所需時間與時間階段
  • 由誰人負責產品的不同部分(分工)
  • 檢查者與檢查所需時間
  • 活動包含什麼部分
  • 活動部分所需要的物資和準備
  • 釐清什麼任務較關鍵、什麼任務較次要(輕重緩急)
  • 有什麼不確定的可能性

六、為所列出任務寫下gantt chart。
  • soft deadline
  • hard deadline

七、讓任務按時序完成。
  • 管理時間,讓小任務可以依照計劃完成,大計劃因此才可以跟上進度。
  • 讓群體一同想辦法解決遇到的難題,防止個別個體「卡關」浪費時間。

八、檢查
  • 確保output與起初所制定的目標方向一致。有必要再作調整修正。

九、推行
  • 市場推廣:藉不同活動與宣傳介紹產品並推出市面。

十、反饋與檢討 Feed-forward
  • 於不同層面檢討可改善的地方,讓下次可以留心與進步。
  • 把重點記錄下來,讓個人或他人可以作將來參考。

面對情緒低谷

 人生總有一些日子,會失去動力、活力,無能為力。

可能是日積月累的勞碌,可能是突如其來的大事發生,可能是際遇的不順,可能是身子就是會出狀況,面對自己卻無從入手、力不從心。

停滯的日子,就讓自己停一停,想一想。

有什麼失敗或負面的情緒,沒有被說出口,沒有被處理的呢?

誠實面對自己,把自己看為自己的最佳朋友。

正在學習一件事,就是當一些失敗的過去或情緒閃過,就學習正視它:問自己發生了什麼事?為什麼我會不開心呢?原因呢?感受呢?那麼我可以把它轉化為一件比較中性的回憶嗎?例如找人傾訴一下,我的情況會否好一點?

只把情緒壓抑,總會有爆發的時候,所以需要學習好好為自己包紮心靈的傷口,讓它可以結痂康復。

與自己對話一場。

下一步,又可以想一想:

有什麼事情是你的心想去作的,而非因責任而要作的呢?

就讓這件事情給自己分心一下吧。

就讓它成為自己心中的動力,因為它是你心裏確實想作的事情。由它開始令自己重拾活力。一步一步,小小的、慢慢的開始。

能作自己喜歡的事是幸福的。

昔日與醫師最後一次見面,對我的忠告是:「要跳舞。」

所以我堅持著。即使會很難,即使會不情願花力氣。但一點一滴的累積,帶來一點一滴的進步。是令人喜悅的。

休息一下,再重新出發。希望您也會再一次好好的。

:)


2026年5月26日 星期二

辦公室心態秘技輯錄

小小的辦公室裏,不同的個體都在同一時間、同一空間,發生著種種的大小事……

要過感恩的生活,在工作中也要如是。

  • 有同事脾氣暴躁,所以跟他相處不刺激到他已值得感恩了,可是當他發脾氣的時候,告訴自己不要放於心裏,不要被他的說話影響自己就好了。
  • 有同事不負責任,這個很難相處,就做好自己本份,辛苦委屈唯有交托給主。
  • 有同事懶懶閒,這也改變不到他的心態,不與他說話,安靜做事就好。主會算帳。
  • 有同事做得比自己好,就要欣賞他,不要比較,每個人也是不同的個體,有別人可取之處就學習,而且我也有糧出就好了,內心不要那麼苦澀地面對。
  • 有同事約食飯不預我:還有其他同事一起吃飯的話,每一個人也是重要的,不是只有不約我食飯的一群才是重要的,好好珍惜與每一位同事的相處,不論「大」「小」。若只有自己一人,靜靜地享受一人的獨處時光也是好的。
  • 同事誤解自己:假如有機會別人願意聽,就嘗試解釋一下背後的想法;假如不聽,就不要理會別人的目光,反正做好自己就可以了。
  • 工作不適合自己:就等待一下,想清楚,會否自己可以學習多一點,還是真的不合適,就換過跑道再走。
(持續更新)

[RGB & CMYK] 絕版了的回憶

古舊的人喜歡談古舊的事……

想起高中的一段回憶,那時為了全校重視的運動會,擔起了橫額設計的角色……

那一年——中七,而中七這個名詞已經成為絕版了的歷史。

那個年代,我還經歷了高中找學校的大事——這件我心裏的一件大事,家庭的大事,改變了一切的大事……

換了新的環境,新的適應,新的生活,新的體會。

回到正題,那時候沒有錢用正版軟件,也堅持不想用盜版,所以找來了免費的alternative software(s)學習使用,把人生第一次的大横額設計出來。

還記得那設計是黑色的背景底色亮粉紅的文字,還有很多小人物——是從科大CS學系派發的精美文件夾取材而得的靈感。

同學們分工合作,到大陸把我的設計打印出實物。

結果,原來﹑原來、原來!

亮粉紅的顏色是打印不到出來的,成了暗紅色,整個設計的亮點也沒有了T.T。

原來,學校學了的RGB與CMYK,懂了原理,仍會犯上錯誤。

這個回憶,也許同學都不記得了,大家都各散東西多久了。

但仍記得大家雖然背景不同,也活過了一場絕版了的高中生活。大家的記憶點都不一樣,但就這麼的一起相處過,擁有著一堆零碎的、失敗的、幼稚的回憶,儲存於心裏。


2026年5月23日 星期六

[感言] 夕陽系統的千瘡百孔

凡事都有兩面,有好處,自然有壞處;有得,自有失;沒有完美,總有它的限制。

沒有一個程式可以解決所有的問題,沒有一個系統沒有漏洞。它能到達「成熟」的階段,但它永不會完美。之後就是隨著年日總有「老化」的一天,或是世界進步了,或是已經maintain不到了……科技的日新月異,隨著programming languages本身的更新,components/dependencies的新version推出,本來work的logic又要隨著新版本而需修改,而往往不是所有東西都能完全實現於新版本中……

而且languages/components/dependencies也有它本來的限制,所以depends on它們的產品也自然帶著它們的不完全。

只是說database(s),隨年日累積,多大的容量也總有一天會遇上爆data不能再寫入的問題,需要operational handling,加大容量作能維持使用得到,所以系統建構完成也需要維護才能保持正常運作。

再者,假若系統是由一個群體寫成,一個群體中總有每人的個性喜好,寫出的合成體也總不會完全統一(syntactically, semantically),寫法背後的設計,因著不同角度、理解與分工,也不會完全一致,而且,總有一些亂七八糟的員工,把事情搞得亂七八糟……所以只能看程式員的包容程度,去修改別人/前人遺留的問題,再加以個人的改進/新功能。

就算是one man band,今天的自己與昨天的自己也可以不同了,寫出來的東西又可以一切都被推翻、可以前後不對應……

隨年日的增長,系統複雜性愈來愈高,假如只再聘用junior programmers來開發新功能,卻不加入前人的幫助,指導當中的訣竅與地雷,任由小職員亂衝亂撞,不理解背後的動機設計,系統只會強硬地被修改得遍體鱗傷。

加上,如果人以MVP為終極目標而開發系統,不願花心思於日後的改進,但求過(客戶)關而已,結果只會變成體無完膚……

基於人的問題、軟硬件的不完全等原因(而且所列出的因素只是冰山一角),系統千瘡百孔地運行著。再面對的是修改不正確,以及不斷累積的technical debts,以致會到達「老化」「衰敗」的階段,已經到達極限,無能為力了。

問問AI如何解決/幫助夕陽系統維持生命值,re-factoring、code reviews、automated scanning、backlogging可能有些果效,但它也只是減慢老化的過程,總有一些地方,人無能為力。

老闆總不喜歡成本花在re-factoring上,因為它(短視地)不賺錢;code reviews需要有能之士,但他們也有他們的時間/能力限制,並不足以完全解決所有問題;使用automated scanning的工具又要在程式以上多花一層功夫才能run得到,而這層功夫又可能會帶來更多的問題;backlogging只是把問題記下,不能解決問題本身……

當然,系統來到「老化」之前,自然有它「年青力壯」的階段,有它曾經的輝煌。這就是一個系統的一生,曾經風光,也總會面對被淘汰的一天。正如人生一樣。要保持系統的健康並不簡單。

我猜想,其實每位開發者都曾經夢想過,寫有用的系統,開發健康的codes。當終於面對現實,這個期望與落差,又有多大啊。

說回AI這回事,theoretically,AI model被train到某個程度,它也會有錯亂至死去的階段,緃然它「輝煌」過。不過「舊嘅唔去,新嘅唔嚟」,新嘅model出現,又多容易呢。

將來(現在)AI寫code的世代,可能re-factoring、code reviews、automated scanning、backlogging也只是一個command的事,天曉得。但又負面一想,要看穿系統漏洞也同樣只是一個command的事,多恐怖呢。

又廢話了一頓,人也需要關機了。

杞人憂天的Robust System

曾經參與過寫一個robust system的過程,獲益良多。寫一個work嘅系統,同一個robust嘅系統,分別在於「杞人憂天」的防禦設計。 一個系統「work」是基本,但現實太多奇形怪狀的可能性,會令佢「唔work」,所以好的系統在於error-handling處理得好,包含不...