敏捷與DevOps

AI 讓效率提升,但誰來當保護品質的人?

AI 讓效率提升,但誰來當保護品質的人?

生產!生產!生產! 每當有新的技術出現時,肯定會以生產力倍增等讓人目亂神迷的字彙登場,不管是 20 年前的教你事半功倍的敏捷,還是十年前小步迭代快速前進的 DevOps,誰不想當菁英團隊呢?不只是老闆想,工程師也能從創造過程中得到滿滿的成就感。這次的 AI 風則吹得更強,不僅有快和生產力,連同取代誰取代誰的新聞也不停地被宣傳。 AI 已經成了不可逆的趨勢 軟體工程師或多或少都會使用 AI 工具來協助自己的開發,更何況現在大型組織甚至會以公司政策的方式推廣。用的人是變多,但相信的人呢? 從 2025 年的 stackoverflow 報告來看,卻只有 33% 的工程師相信 AI 的產出1。當然用或不用看個人需求,但新聞卻一直訴說著,AI 正在取代軟體工程師!組織內會有多少比例用 AI 取代之類云云。不過,隨著時間過去,這些訊息看起來顯得開始漸漸冷靜。開始有科技龍頭表示,他們有著新的軟體人才需求。說到底,到底怎了?,這訊息,這日子還要不要過了呢? AI 變動了軟體開發過程的成本配比 一個軟體開發的團隊,不管怎樣配比,肯定寫程式的人比較多。畢竟這是一個現實的議題,需求沒實現出來,一切也就都白搭了。只是當軟體開發出來,就會發現還有很多工作等著要處理,所以全端、全循環、一條龍等工程師頭銜總是能夠喚起工程師們嘴角的苦笑。不過現在這個程式生產活,貌似有了一個沒心沒肝又不喊累的 AI 可以頂上了。 哇~瓶頸有解了!

繼續閱讀
AI in the Loop - DevOps 現況、轉變與我的嘗試

AI in the Loop - DevOps 現況、轉變與我的嘗試

端到端的價值與增長的技術債 面對遺留的程式碼,若要進行技術、架構或工具上的轉換,你會如何進行? 是規規矩矩地重新改善程式碼,還是先上再說? 這個問題對於工程師或者是開發團隊來說,通常不容易回答! 即便回答了,這個答案也會浮動。這是因為組織需要向著最終的產品價值持續發展,而這也導致研發團隊必需或不得不持續地讓技術債增長。DevOps 從維運在敏捷實務做法上的探索,到開發與維運之間的協作,再到端到端價值的追尋,但這就像雙面刃讓持續地價值追尋也等同於持續地增長技術債務。從 Gartner 的調查1中,可以發現技術債增長的前幾個主要原因(僅列出部分)有: 過度地為了市場的需要而造成軟體架構或設計的脆弱; 追求時效而更甚於軟體品質; 技能落差。 面對這些技術債的問題,研發團隊通常採取的行為,不外乎: 紀錄、追蹤、排入改善時程; 找尋重構機會; 透過測試案例維持最基礎的品質; 監控與偵測,以便即早發現問題並且解決來降地衝擊。 然而,我們真有時間和精力花在這些行為上嗎? 還是單純為了精神上的救贖? 這個問題在 LLMs 橫空出世後貌似有了一個解答,那就是: 用 AI 來提升我們的生產力吧?

繼續閱讀
軟體品質與測試提升的挑戰

軟體品質與測試提升的挑戰

今年有很多機會幫忙客戶處理軟體品質提升和測試執行效率的議題,每每檢閱各種資訊後總是感觸良深。 一般來說,軟體開發通常都會有測試,但多半會著眼在類驗收型的測試。這類測試通常是軟體開發的品質活動下限,畢竟你的交付對象不可能不驗貨。不過這類測試有個大家都知道的問題,那就是通常很晚期才會知道對錯,而且執行期會看起來很長,畢竟所有測試都在最後一刻統一驗收。一口氣驗出所有問題,然後解決問題,時間很難不長。如果再搭配窘迫的測試人員和資源,那問題就很驚人了。 通常想要改善這情況,有幾件事得思考: 降低最終測試案例數量。可以做的方式如只驗收影響的部分、等價類劃分、透過風險和覆蓋率因素來分散測項的執行或改良與刪除無效測項等。不過這些方式能否有效展開的前提在於對受測系統的功能與模組的掌握度和良善的測試案例管理。如果沒這兩個前提,那麼很難做好什麼減量的決策,畢竟沒有依據。 多樣的測試方式與早期測試,也就是我們常說的左移。在工程上,一個基礎的原則是 built in quality。簡單說就是在每個軟體開發階段都確保該階段交付物的品質,不讓瑕疵流到下個階段。話是這麼說,但想做好這件事卻很少有速解方案。以單元測試為例,或許會有一個單純的想法那就是從現在開始規定大家都要寫單元測試。通常很容易會觀察到兩種結果,那就是不了了之和施行效率不佳。接著就會開始常見的故事: 那麼到底是誰的錯呢? 正解是整個開發系統的錯,或者非要說誰的錯的話,那大概就是全部參與者的錯。 為什麼是這樣的理由?如果組織在新產品或專案或團隊的一開始沒有左移測試的念頭或至少融入一些除了類驗收測試外的其他測試手段。通常亡羊補牢並不容易,因為組織內的工程人員和非工程人員早已經長期透過各種方式貼補或容忍品質議題,而這類慣性會成為引入所謂「正確」做法時的巨大阻礙。此外,從未考量類驗收型測試外測試的軟體系統要再為其撰寫其他類測試有可能是相當困難的事情,因為目前的軟體實作結構可能盤根錯節且沾黏嚴重(耦合度高)。面對這樣的軟體系統,一般做法都會從舊系統內的新實作開始落實。不過,這類施行方式會有幾個關鍵議題需要尋求所有該系統參與者的共識: 成效可能不容易立即彰顯,而且開發時間還變長了!畢竟既有系統的原有品質問題不會憑空消失,所以會產生一種雖然投資了品質活動,但怎還是有問題的現象。這類認知落差非常需要被重視和解決,否則可能加劇工程和非工程人員之間的摩擦。可能的解決方式不外乎事前溝通、對齊關注指標、或針對高度有問題的部分做一次性的改善等。 測試不只是學會工具就行。測試有時會需要軟體設計方面的知識,所以千萬別認為送人去學 xUnit 之類的工具,然後就要馬上雞犬升天。通常是會升天,但可能不是你想像的那種。因此,除了強化測試技術本身的學習之外,持續強化工程團隊在設計上的能力也是相當必要的。可能的進行方式除了培訓外,還可以考量組織內非正式研討活動和加深團隊對既有系統的理解等。 萬年不變的流程和政策造成的變革阻礙。此處的流程不只包含開發,還需要考量開發流程的上下游或分支流程。除非在意的只是有沒有某種測試技術活動,而成效次之,那麼的確還真不用想太多。若是希望這些活動能夠紮根並且持續發展和提升,那麼除了考慮工程相關流程外,最好也思考一下與該受測系統相關的業務流程或其他營運流程,同時重新審視這些流程所涉及範圍的政策,以便去除不必要的摩擦。

繼續閱讀
大型企業面對的遺留系統挑戰

大型企業面對的遺留系統挑戰

什麼是遺留系統? 遺留系統指的是已經運行多時,具有一定商業價值,但隨著時間推移,逐漸面臨架構、技術、軟體版本等過時問題的系統。 為什麼需要面對遺留系統❓ 由於遺留系統在商業營運上仍然有其必要性,因此往往難以輕易汰換。隨著新的商業需求出現,系統在過時的基礎上變得越來越難以修改或擴充。在某些情況下,即使發展新的系統,甚至會因為系統間的高度耦合,使其無法如預期般的退場。 遺留系統除了面臨維護成本逐漸上升,穩定性往往也會開始下降,最終導致工程團隊疲於應對與維護。因此,我們必須誠實地面對遺留系統所帶來的風險,並尋求長遠的解決策略。 跨出改善的關鍵活動 在 CPHT 進行遺留系統評估與改善輔導案的過程中,除了探尋從過去到現在商業決策的脈絡,同時也包含了挖掘第一線工程人員的認知與想法。其中幾個關鍵的活動: 遺留系統與技術債的評估 團隊拓墣與服務邊界的梳理 日常工作流程的梳理 人員對於負責系統、職務等的掌握度與適應性 每個系統的形成與演變,必然有其歷史背景與脈絡,其中包含當時的商業需求、組織樣貌、技術趨勢等。而從商業到工程之間的分析活動也意味著推動任何的改變都必須彌合商業與工程的落差。否則,即使出發點是為了改善遺留系統,眼前所採取的方案仍可能成為潛在的技術債,並在未來反噬! 由於輔導的企業涉及上百人團隊與上百個長達五年甚至十年以上的軟體系統,因此透過這些盤點作業來梳理現況也至關重要。在現況盤點後,我們更能針對架構發現與顯著技術債來尋求在商業需求層面、技術層面、治理層面的長遠處置策略,以及在下一階段聚焦關鍵的改善活動。值得一提的是-去年幫助企業進行遺留系統評估與改善規劃後,最近 CPHT 也和客戶一起動起來,努力把改善計畫變成實際行動! – 如果你也正在思考如何組織內的資訊系統與流程內追尋持續改善,那麼 CPHT 的豐富經驗和能力將會是你最好的選擇! 👉 了解更多: https://www.cpht.pro

繼續閱讀