便宜行事的做法,在開發的專案陷入可靠性與財務黑洞前都看似美好。本文將協助你避免陷入技術債的甜蜜陷阱。
文/John Edwards‧譯/Nica Liu
快速完成IT軟體專案而不引起某種程度的技術債是一項挑戰。專案匆促開發與佈署的情況下,品質往往大打折扣,這樣的冒險行為勢必要重新檢視,才能修補相容性問題、安全性漏洞、效能問題,以及解決其他各種預算削減這類麻煩事。
[ 推薦閱讀: 傳統HIS架構面臨技術債危機 ]
但當重大專案受到緊迫時程所牽制,技術債能夠降到可以接受的程度,因而可以在時間、品質、與成本之間做合理的取捨。本文將介紹盡可能不造成負面影響,卻能減少或消除技術債的八種方式。
一、營運與業務團隊立場一致
降低引發技術債的可能性之一就是讓IT營運團隊與業務團隊都納入專案規劃。「這可以讓營運的意見在規劃過程中被聽見,得以讓上市時間與維持成本間進行取捨。」金融服務顧問公司 Actualize Consulting 首席顧問 Matt Seu 如此表示。
[ 推薦閱讀: 什麼是AIOps?將智慧帶入IT營運 ]
「在一次次的規劃中制定明確決策,確認何時會發生技術債,且必須在哪個時間區段裡解決掉,」Seu這麼建議。「以此方式管理技術債,可以在專案結束時排除風險。」
控制技術負債是整個團隊的事,且應該像專案那樣管理,IT人員與技術服務公司Genesis10的執行長 Harley Lippman 提出建議。「這麼做讓企業組織不致遺忘它或錯失管理良機。」他指出。著眼於逐步改善,「考慮建立團隊指標,確保團隊方向一致,並將建立管理技術債視為優先考量。」
二、慎審規畫、切實編列預算
抑制技術債需要謹慎規劃並坦然面對殘酷現實。「對產品必要走向具有明確需求與願景,結合適當資源配置與成熟的軟體開發程式,可以讓工程師以適量程度的技術債進行建置。」雲端客服中心供應商Five9的技術長 Jonathan Rosenberg 提出解釋。
醫學技術軟體開發商MedAcuity的首席軟體工程師 Jarman Joerres 則建議,在專案初始即建立「逆向工程」(engineering reserve)預算,以應變任何意外因素導致非預期技術債的累積。「一個軟體專案的最佳規劃裡,將確保技術債減少或消失納入你的規劃與評估裡,」他指出。
[ 推薦閱讀: 因應IT預算有限的7大訣竅 ]
史蒂文斯理工學院(Stevens Institute of Technology)的IT副總裁暨資訊長 David Dodd 觀察到,技術債也是有用途的,但只有在它已知、被充份瞭解、在計劃中並策略性定位企業未來時。「例如,當企業組織刻意等待新產品,迫切需要的新興技術到位才走下一步,或計劃性開發才釋出有助於市場轉型的全新系統。」他解釋道。「否則,技術債不但不恰當,還會讓你出賣未來能力,破壞企業長期利益。」
三、設定可行目標並評估結果
交付時間的壓力是企業存續無法避免的現實,但請盡可能抗拒設計捷徑加速開發進程的誘惑,因為倉促開發的軟體,未來必須花費加倍心力關注。
開發平臺供應商Skuid的技術長暨工程執行副總裁 Mike Duensing 提出建議,「架構一個開發階段與正式上線皆可適用的解決方案。」Duensing特別指出花時間與終端使用者討論的重要性,瞭解他們所需為何,並預測未來變遷的需求。避免設定不切實際的遠大設計目標也是明智之舉。「與其試圖發表大型功能,不如縮減成小型解決方案然後再逐漸增長,這能讓你配置足夠的時間進行充份的設計與測試。」他說道。
[ 推薦閱讀: IT如何支援新興的混合辦公環境 ]
管理技能培訓組織Academy的共同創辦人、也身為技術長Jason Noble 的建議,則是對所有開發團隊成員強調品質的重要性。「讓他們瞭解這必須內化到所有處理程式裡。」他說道。
Noble也建議,為各個產品的反覆循環設定可量測的目標。「用切合實際的角度設定目標,」他建議。「歷經多次反覆更迭後,技術債便得以降低,而又不影響新產品功能,還能享有更能長期維持且可靠的程式碼。」
要確保達成品質的目標,Noble建議使用靜態分析工具,像是開放原始碼提供的SonarQube。「這些工具掃瞄程式碼,並提供各類品質指標,類似文書處理軟體裡的閱讀與文法工具。」他表示。
四、建立於強健、彈性基礎上
確保你的專案掛載在強健的架構基礎上。「粗劣的架構,成就無法改變的爛房屋…還可能導致無法翻修,」Duensing提出警告。設計完善、強化過的解決方案,可以讓專案的更新加快且花費的成本更少,因而降低引發意外技術債的可能性。
團隊領導者還必須瞭解,所有專案規劃幾乎都從一無所知開始,而且多半在相關單位的壓力下開發而過度樂觀。「解決技術債並非透過更詳盡的規劃與更嚴謹的合約降低風險,就能解決過度樂觀的問題,而是要更有智慧地管理對於系統如期交付的期望。」uFlexReward執行長 Ken Charman 如是建議。「從寬鬆的規劃開展,依經驗逐步縮減;這麼作可以減少為達成交付而捨棄功能的情況。」uFlexReward是一家由聯合利華(Unilever)分拆出來的公司,負責銷售一套員工獎勵系統。
五、敏捷化
越來越多企業組織採用敏捷軟體開發,這是將專案交給協同合作、自動組織管理與跨功能團隊的一組方法與實作。審慎使用,敏捷開發可以讓企業組織以協助團隊快速建置與啟動新產品反覆執行的方式避免技術債。「此『處理程序』可以儘快逐步交付新產品與功能給使用者,」Dodd說道。改善與修正則以新版本交付的方式處理,技術債幾乎不可能累積。
在敏捷方式的認知裡,專案在生命週期裡永遠不可能真的完成,而且不可能完美。「而且,敏捷著重的是流線型開發,重點放在功能及品質。」Dodd表示。頻繁開發、測試與上線關鍵功能。與其對軟體交付採取「大爆發」(Big Bang)處理,敏捷團隊改採每年釋出多個主要版本的更新。「這會讓產品更順利逐漸成型,也可以避免讓使用者遇上重大干擾。」Dodd特別指出。
六、避免過時技術
舊版應用系統、過時技術與迥異的平臺與處理程式,會將企業組織推入技術債的深淵,迫使必要的現代化計畫延期。「技術債會讓實際的金錢與寶貴時間,淹沒在並非擴展與加速現代化營運所必須的系統與應用裡。」DNS與流量管理技術供應商NS1的共同創辦人暨執行長 Kris Beevers 如是說。
[ 下載 2020-21 CIO大調查報告,掌握最新IT趨勢 ]
老舊資產與過去的處理方式多半充斥安全性弱點,難以整合與自動化,而且可能已無法更新。「要找到能維護複雜或過時程式碼所建置的舊版應用系統的人才也越來越具挑戰性,」Beevers強調。「堅持使用頂多只有交付平均程度效能的過時技術,不僅浪費寶貴預算,還會阻礙企業組織創新並站穩競爭地位的能力。」
七、淘汰使用率偏低的資源
定期檢視現有平臺與應用的使用狀況,是另一種降低技術債的方式。「僅是移除未使用,或極少使用的產品,而非更新它,就有可能消除技術債,」人工智慧與機器語言顧問諮詢公司 Small Scale AI 首席顧問 Rob Peterscheck 如此建議。「技術債最嚴重之處往往就是最少使用的地方。」
高效率的生命週期循環可以減少技術債,專注在所有人都需要的關鍵平臺與應用上,削減不必要的產品-可能不見得是舊版工具,但為了服務逐漸減少的使用者,必須定期更新與修復。「大型企業組織的困難點,在於它們多半只是知道企業環境裡所有應用與解決方案,還有它們的使用方式而已。」Peterscheck觀察到這樣的狀況。
八、關注警訊
企業組織還必須花時間瞭解技術債到達某些轉折點必須處理時所出現的警訊。關鍵指標包括大範圍一次性手動變更、參考文件數量不足,以及與其他app或雲端難以整合等,Beever強調。
有種狀況下,可以容忍一定程度技術債的產生,那就是對速度的要求淩駕於完美軟體之上,必須快速打開市場的情況。「這時候讓產品推出,當成未來版本修訂的過渡時期,是可以接受的。」Beevers說道。
( 本文授權非營利轉載,請註明出處:CIO Taiwan )