從技術選擇到技術負債:選擇框架的隱藏成本

更新於 發佈於 閱讀時間約 5 分鐘

「所以,你想要用A框架,但又覺得B框架也不錯?」David挑眉問道,一臉的疑惑和一絲不易察覺的笑意。

「呃…對啊,我知道我現在比較熟悉A框架,但我總覺得B也很有潛力,未來也許能更好。」Lisa有些無奈地說。她剛進公司沒多久,還在摸索各種技術選擇的路上。

「讓我猜猜,」David假裝思索了一下,「你是不是也有想過要不乾脆兩個都用?或是,呃...混搭一下?」

「其實…我真的有這麼想過。」Lisa尷尬地笑了笑。

「哈哈,不用太糾結,」David給了一個爽朗的笑容,語氣中帶著一點玩笑,「這些困惑啊,都是新手入職的必經之路。我當年還比你更糟呢,連三個框架都想一起用,結果搞得自己焦頭爛額。」

「所以你怎麼選的?」Lisa好奇地問。

David神秘地笑了笑,「技術選擇可不是簡單的喜好問題,它牽扯到技術轉移的成本、技術負債的累積,還有整個團隊的長期發展。先來聽聽我的想法吧。」後頓了頓,開始解釋起來。他的語氣逐漸變得正經,像是打算揭示某個深藏多年的秘密一樣。「技術的迭代,是讓系統更完善的過程。隨著技術的進步,新框架、新工具層出不窮,但選擇什麼技術,卻不是一件隨便的事。」


raw-image


技術的迭代往往被視為讓系統更完善的一個過程,這在開發者的職業生涯中屢見不鮮。隨著技術不斷更新,新的框架、工具和最佳實踐層出不窮。然而,在這一過程中,如何合理選擇技術,並考慮到「技術轉移與技術負債」所需的成本,成為了每個技術領導者和開發者必須面對的課題。這不僅影響到產品的最終交付,更關乎系統的長期可維護性和企業的競爭力。


技術轉移的成本與風險

技術轉移,無論是在一個新專案中導入新技術,還是將現有系統遷移至另一種技術堆棧,都存在著相當的風險和成本。這些風險和成本主要體現在以下幾個方面:

  1. 技術負債的累積:隨著技術的不斷更新,原本穩定運行的系統可能因為新技術的引入而變得不穩定。每次技術轉移都可能導致技術負債的累積,這些負債不僅體現在程式碼的複雜性增加,還包括對於舊系統的兼容性問題以及新技術的學習曲線。某位同事在公司內部曾經推動過一次從AngularJS到React的技術轉移,原本的系統在轉移過程中暴露出不少隱藏的技術負債,這些問題最終使得項目進度延遲了將近半年多,成本也比預期高出兩倍。
  2. 時間與人力成本的疊加:當一個團隊在面對技術轉移時,除了要理解新技術的結構和流程,還需要同時兼顧原有商業邏輯的實現。在這個過程中,學習曲線、維護成本以及系統中斷的風險都會成為需要重點考量的因素。如果我們將原有系統的重寫或大規模改動與新技術的學習成本疊加,實際上所需的時間和人力成本可能不止是「N倍」的簡單放大。這是一個非線性的增長過程,尤其是在一個持續營運的商業系統中,這種成本和風險是不可忽視的。


框架的選擇與技術的可持續性

選擇一個合適的技術框架是開發過程中的關鍵決策之一。當我們開始一個新專案時,必須要有一個長遠的眼光,從系統的持續運營和可擴展性的角度來評估技術的選擇。舉例來說,如果一開始用原生的JavaScript撰寫項目,後續要擴展到框架中進行開發,可能還有部分代碼可以沿用或改寫。但是,若是直接從一個框架跳到另一個框架,那麼這樣的轉移過程將會非常痛苦,因為這不僅僅是代碼重寫的問題,更涉及到團隊能力的再培養和商業邏輯的再實現。

某同事在前述的技術轉移中,也曾經探討過這樣的問題。在最初選擇框架時,他認為React相較於AngularJS有更好的發展前景和更活躍的社群支持,然而當時整個團隊已經對AngularJS的使用非常熟練,轉換至React意味著重新學習、重寫代碼、適應新的開發流程,這對於一個處於持續運營中的項目來說無疑是一個巨大的挑戰。最終,他們選擇保留現有框架,並逐步引入React的部分功能,從而減少了技術轉移的衝擊,維持了系統的…穩定性。但就結果來講,也只是引入了部分功能的「概念」…


技術選擇的策略:商業專案 vs. Side Project

技術選擇的策略應該根據項目的性質來做出不同的決策。在Side Project的情境下,選擇新技術進行嘗試往往是無可厚非的,這是一個鍛鍊技術能力並理解不同框架差異的好機會。然而

對於商業專案來說,技術選擇則需要更加謹慎和戰略性。商業專案的技術選擇往往不僅僅考慮技術本身的優劣,更重要的是要考慮技術的長期發展性、團隊的技術能力、以及最終對商業目標的達成度。

在這種情況下,技術的更新和轉移不僅僅是一個技術問題,更是一個商業決策問題。技術的選擇必須要服務於商業目標,如果一個框架或技術的轉換不能顯著提高系統的穩定性、可擴展性或開發效率,那麼這樣的轉換可能並不值得。除非現有的技術框架已經遇到瓶頸,無法有效擴展,否則技術轉移往往是一個風險極高的決策。


案例分析:某同事的經驗教訓

某同事曾經面對過一個類似的技術選擇困境。當時,他所在的團隊已經基於一個特定的框架(AngularJS)構建了大量的業務邏輯和前端頁面。隨著React在業界的崛起,他們也考慮過是否應該轉移到React,以期望在未來的開發中獲得更多的靈活性和更強的社群支持。然而,在評估了技術轉移的成本、學習曲線、現有系統的技術負債以及商業邏輯的兼容性後,他們最終決定保持現有的技術框架,同時在新功能的開發中引入React 部分的開發概念,以逐步過渡,這樣既保持了系統的穩定性,又在技術層面上獲得了創新。

這個案例說明了技術選擇與技術轉移的複雜性。在商業專案中,選擇一個框架或技術堆棧不僅僅是因為它『更好』或『更流行』,而是要考慮它是否適合當前的商業需求和技術能力,是否能夠在合理的成本和風險下達成既定的商業目標。


技術選擇的平衡藝術

技術選擇和技術轉移是一門需要平衡的藝術。它涉及到對技術本身的理解、對商業目標的清晰認知以及對團隊能力和長期維護性的深刻思考。無論是面對新技術的引入,還是考慮現有系統的技術轉移,都需要在短期效益和長期影響之間找到最佳的平衡點。

對於商業專案來說,技術選擇必須考慮技術轉移的成本、學習曲線、系統穩定性和長期維護性。在技術轉移的過程中,應該做好充分的準備,包括系統的評估、技術可行性分析以及對轉移過程中可能遇到的風險的預估。只有這樣,才能確保技術轉移不會成為技術負債的來源,反而能夠為系統的長期發展注入新的活力。

最終,技術的迭代應該是為了讓系統更加完善,而非累積新的問題。因此,在技術選擇的過程中,時刻保持對長期可維護性和系統穩定性的關注,是每一個技術領導者和開發者應該具備的基本素質。希望這樣的經驗能夠為我們在未來的技術選擇中提供一些參考和啟發。

技術負債是可以接受的,但你必須要還清它,否則它會積累並最終拖垮你的專案。 Martin Fowler - 重構|改善既有程式的設計




後記:

故事中的某同事,最後真的使用React 已經是在另外一個專案上面了…

留言
avatar-img
留言分享你的想法!
Rewrite-avatar-img
發文者
2024/08/12
成長不止於技術:工程師提升自己和影響力的實務指南提及了這篇文章,趕快過去看看吧!
avatar-img
詹姆士的軟體易開罐
26會員
82內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2025/02/28
「你最近在用什麼技術?」 我故作輕鬆地回答,嘴角掛著一抹自信的微笑,生怕哪個細節露了餡。站在技術交流會的角落,我身邊圍繞著一群 Node.js 和 Golang 的信徒,他們談笑間拋出各種高併發、分散式系統的話題,我努力跟
2025/02/28
「你最近在用什麼技術?」 我故作輕鬆地回答,嘴角掛著一抹自信的微笑,生怕哪個細節露了餡。站在技術交流會的角落,我身邊圍繞著一群 Node.js 和 Golang 的信徒,他們談笑間拋出各種高併發、分散式系統的話題,我努力跟
2025/01/14
身為新進資深工程師,先傾聽、再觀察,不冒然大肆改革。以每日筆記、公開分享累積信任,在適當時機推動流程與技術革新。穩紮穩打、緊扣團隊目標,就能在新組織裡真正帶來正面影響,為自己與團隊打造長期成長的基礎。讓努力更有方向,也讓團隊走得更穩更遠。
Thumbnail
2025/01/14
身為新進資深工程師,先傾聽、再觀察,不冒然大肆改革。以每日筆記、公開分享累積信任,在適當時機推動流程與技術革新。穩紮穩打、緊扣團隊目標,就能在新組織裡真正帶來正面影響,為自己與團隊打造長期成長的基礎。讓努力更有方向,也讓團隊走得更穩更遠。
Thumbnail
2024/10/27
B2C 與 B2B 軟體開發在需求、時程、成本及專業需求上有明顯差異。B2C 軟體偏重通用性與快速迭代,以滿足大量個體用戶,開發周期較短、成本低;相較下,B2B 軟體強調穩定與安全,需針對企業需求與合規要求,開發周期長、資源投入大。
Thumbnail
2024/10/27
B2C 與 B2B 軟體開發在需求、時程、成本及專業需求上有明顯差異。B2C 軟體偏重通用性與快速迭代,以滿足大量個體用戶,開發周期較短、成本低;相較下,B2B 軟體強調穩定與安全,需針對企業需求與合規要求,開發周期長、資源投入大。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
「所以,你想要用A框架,但又覺得B框架也不錯?」David挑眉問道,一臉的疑惑和一絲不易察覺的笑意。 .... David神秘地笑了笑,「技術選擇可不是簡單的喜好問題,它牽扯到技術轉移的成本、技術負債的累積,還有整個團隊的長期發展。先來聽聽我的想法吧。」
Thumbnail
「所以,你想要用A框架,但又覺得B框架也不錯?」David挑眉問道,一臉的疑惑和一絲不易察覺的笑意。 .... David神秘地笑了笑,「技術選擇可不是簡單的喜好問題,它牽扯到技術轉移的成本、技術負債的累積,還有整個團隊的長期發展。先來聽聽我的想法吧。」
Thumbnail
一旦甲乙方進到零和賽局,情感上開始對抗之後,兩敗俱傷就是必然的結局了。既然是這樣,合約的撰寫及執行不妨看作是合作誠意的具象表態。
Thumbnail
一旦甲乙方進到零和賽局,情感上開始對抗之後,兩敗俱傷就是必然的結局了。既然是這樣,合約的撰寫及執行不妨看作是合作誠意的具象表態。
Thumbnail
「轉型」真的是太容易被掛在嘴邊的詞了,任何在趨勢上的名詞都能被掛上轉型兩個字。正在接班路上的你或妳,是不是也曾丟出不同轉型方案作為策略方向?轉型感覺沒有很難阿,不就是上級支持、資源投入嗎?如果成功轉型有跡可尋,為什麼失敗的案例遠比成功的多?
Thumbnail
「轉型」真的是太容易被掛在嘴邊的詞了,任何在趨勢上的名詞都能被掛上轉型兩個字。正在接班路上的你或妳,是不是也曾丟出不同轉型方案作為策略方向?轉型感覺沒有很難阿,不就是上級支持、資源投入嗎?如果成功轉型有跡可尋,為什麼失敗的案例遠比成功的多?
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
軟體開發一個很迷人的地方是可以在架空的世界(電腦世界)中重新思考、解構並處理真實世界的問題。但要怎樣真正有效的解決問題就很看各家功力了。 這篇文章我們暫且放下溝通及流程規劃的議題,聚焦來看看純粹領域差異造成的困難以及該怎麼面對。 回顧過往曾經觸碰過的領域真的滿多,茲列舉幾個
Thumbnail
軟體開發一個很迷人的地方是可以在架空的世界(電腦世界)中重新思考、解構並處理真實世界的問題。但要怎樣真正有效的解決問題就很看各家功力了。 這篇文章我們暫且放下溝通及流程規劃的議題,聚焦來看看純粹領域差異造成的困難以及該怎麼面對。 回顧過往曾經觸碰過的領域真的滿多,茲列舉幾個
Thumbnail
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
Thumbnail
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
Thumbnail
時代在進步,技術也在進步,現代前端框架這麼多,我們該如何選擇?
Thumbnail
時代在進步,技術也在進步,現代前端框架這麼多,我們該如何選擇?
Thumbnail
分享自己在B2B SaaS 產品公司的設計經驗,如何在不一樣的環境中,找到自己的價值。設計師在垂直產業中需要掌握的思考方向。
Thumbnail
分享自己在B2B SaaS 產品公司的設計經驗,如何在不一樣的環境中,找到自己的價值。設計師在垂直產業中需要掌握的思考方向。
Thumbnail
世上有種困難叫:老闆不覺得這個很難、 主管不想背負這個困難,還有計劃主持人認為廠商或顧問要處理你的困難。 身為一個創新創業的顧問,實在不太願意承認數位轉型比創業難;但身為同時又在做數位轉型的教練和執行者,我很想告訴大家,數位轉型還真他X的難啊。
Thumbnail
世上有種困難叫:老闆不覺得這個很難、 主管不想背負這個困難,還有計劃主持人認為廠商或顧問要處理你的困難。 身為一個創新創業的顧問,實在不太願意承認數位轉型比創業難;但身為同時又在做數位轉型的教練和執行者,我很想告訴大家,數位轉型還真他X的難啊。
Thumbnail
正在執行開發的進度,往往是還沒解決這個又來下一個,頓時覺得人生怎麼不是樸實無華,而是好難。
Thumbnail
正在執行開發的進度,往往是還沒解決這個又來下一個,頓時覺得人生怎麼不是樸實無華,而是好難。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News