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

更新於 發佈於 閱讀時間約 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 已經是在另外一個專案上面了…

這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
先從react開始: 其實市面上有許多前端框架像是react,angular,vue... 至於為什麼我會選擇react…
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
在投資時,一定會了解很多不同的技術,其中包含技術面跟基本面,有些人喜歡用技術面投資,有些人則以技術面做進出場依據,不過這兩種是否有相關聯呢? 如果詳細去看這兩者的區別的話,有時候技術面非常好但基本面不好,或是基本面非常好但顯示出來的技術面很差,所以這兩者到底如何去做選擇或取捨呢?
你知道「技術債」是什麼嗎?忽略技術債可能會影響一家公司的專案進行或技術營運,這主題想寫很久一直被我放在草稿清單,今天來談談技術債。
Thumbnail
在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
Thumbnail
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
Thumbnail
快速重點 ● 機會成本指在做出最佳選擇後,放棄的次佳選擇。 ● 對於投資,每一個投資選擇,都意味著付出一定的機會成本。 ● 考慮選擇所帶來的損失,才能做出最有利於自己的選擇。
Thumbnail
企業需要持續調整以契合市場需求,轉型是必然需要面對的挑戰。科技發展、ESG轉型、電動車、AI轉型、敏捷管理等需求頻繁。成功轉型的比例僅有20%,建議引入變革急迫感、強大變革領導團隊、建立明確願景與溝通、去除障礙、創造短期戰果、不宣佈勝利過早、深植變革文化。參考「領導變革:為何轉型未竟其功」。
Thumbnail
#職場故事 #網頁設計 #前端工程師 #轉職 #跨領域 八、軟體公司的前端工程師之路 新公司不是做網頁專案的,而是自己研發資安軟體的公司,主要只有一個大專案,跟很多客製化的需求。 我在這次轉職時有考慮到,我其實不太喜歡一個案子做完就結束的感覺,因為那會讓我覺得這些作品做完好像也不是我的東西..
分享最近遇到的一些人事物的小故事。最近,有同事在工作十幾年後決定放棄科技業轉換跑道,投入傳產,例如裝潢工作,因為覺得科技業的壓力太大,每天的負擔太重,令人苦不堪言。我個人會考慮轉換職業,但不會選擇與我目前學經歷無關的工作,因為時間是非常寶貴的。   我想你大家可能不懂這件事情,我在看了老高
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
先從react開始: 其實市面上有許多前端框架像是react,angular,vue... 至於為什麼我會選擇react…
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
在投資時,一定會了解很多不同的技術,其中包含技術面跟基本面,有些人喜歡用技術面投資,有些人則以技術面做進出場依據,不過這兩種是否有相關聯呢? 如果詳細去看這兩者的區別的話,有時候技術面非常好但基本面不好,或是基本面非常好但顯示出來的技術面很差,所以這兩者到底如何去做選擇或取捨呢?
你知道「技術債」是什麼嗎?忽略技術債可能會影響一家公司的專案進行或技術營運,這主題想寫很久一直被我放在草稿清單,今天來談談技術債。
Thumbnail
在軟體開發領域中,Backend 和 Frontend 是兩個常被提及的術語。許多同學常常問我,到底是 Backend 比較難還是 Frontend 比較容易?
Thumbnail
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
Thumbnail
快速重點 ● 機會成本指在做出最佳選擇後,放棄的次佳選擇。 ● 對於投資,每一個投資選擇,都意味著付出一定的機會成本。 ● 考慮選擇所帶來的損失,才能做出最有利於自己的選擇。
Thumbnail
企業需要持續調整以契合市場需求,轉型是必然需要面對的挑戰。科技發展、ESG轉型、電動車、AI轉型、敏捷管理等需求頻繁。成功轉型的比例僅有20%,建議引入變革急迫感、強大變革領導團隊、建立明確願景與溝通、去除障礙、創造短期戰果、不宣佈勝利過早、深植變革文化。參考「領導變革:為何轉型未竟其功」。
Thumbnail
#職場故事 #網頁設計 #前端工程師 #轉職 #跨領域 八、軟體公司的前端工程師之路 新公司不是做網頁專案的,而是自己研發資安軟體的公司,主要只有一個大專案,跟很多客製化的需求。 我在這次轉職時有考慮到,我其實不太喜歡一個案子做完就結束的感覺,因為那會讓我覺得這些作品做完好像也不是我的東西..
分享最近遇到的一些人事物的小故事。最近,有同事在工作十幾年後決定放棄科技業轉換跑道,投入傳產,例如裝潢工作,因為覺得科技業的壓力太大,每天的負擔太重,令人苦不堪言。我個人會考慮轉換職業,但不會選擇與我目前學經歷無關的工作,因為時間是非常寶貴的。   我想你大家可能不懂這件事情,我在看了老高