方格精選

Code 寫得好對公司有用嗎?

閱讀時間約 5 分鐘

tl;dr, 絕對有用!

IT部門的同事間可能經常遇到這種問題,「究竟應該花多點時間去寫好編碼,還是應該快快寫好新的功能,往後才改善編碼的質素」,雖然大家心裏面都希望花時間寫好每一個功能的編碼,但面對開發時間永遠不足、上司的壓力,很多時就會無視編碼的質素,來成就新功能/新產品可以及早推出,然後就安慰自己之後才執拾殘局。不過程式員都是人類,難以敵不過「Later means never」這個定律,所以質素往往成為節省開發時間、成本下的犧牲品。
即使我們知道應該花時間一開始就寫好一點,但我們怎麼說服你自己、你的上司、你的老闆一開始的編碼質素是何其重要?寫下軟件工程界的大作之一《Refactoring - Improving the Design of Existing Code》的Martin Fowler 近日一篇文章《Is High Quality Software Worth the Cost?》就為我們提供了清晰的解答,軟件的質素其實是牽引住各種層面。
(From:https://twitter.com/ghjhbbbnn/status/1026721753924550656)

外部質素(external quality)與內部質素(internal quality

Martin Fowler首先將軟件的質素分開為外部質素和內部質素,外部質素指的是用家能夠看得到的,例如UI和程式缺陷,而內部質素即是用家難以分辨好壞的部分,例如軟件結構。
現今不少公司都很注重UI、UX的設計,因為用家很容易因為用得不暢順而氣餒,投訴甚至放棄使用。程式缺陷亦固之然是要盡量避免,也是因為這直接影響用家的使用體驗。相對來說,編碼結構的好壞藏在華麗的UI之後,用家其實難以知道軟件內部的編碼究竟寫得好不好。Martin Fowler舉例說兩個軟件UI一樣好,亦沒太多的程式缺陷,一個內部編碼整潔有序,賣10美元,另一個內部編碼一團糟,但賣6美元。既然用家都不能看到內部編碼如何,編碼是否整潔有序亦看似無礙軟件運作,誰會花多4美元去買前者?軟件公司又為何要花資源在軟件的內部質素?
技術債項 Technical Debt

內部質素與軟件持續開發

作為一個程式員,最花時間的工作理應就是處理、改動程式編碼,即使是全新的軟件開發,程式員仍需要在已完成的程式基礎上去編寫源碼。要加一個新的功能,首先要知道如何將新功能放入原本程式的流程裡,然後改動現有流程並放置新功能。而由於通常會接觸到/使用到原本的程式編碼,程式員不得不先理解程式是如何編寫。
問題來了,如果原本程式的內部質素奇差,邏輯紊亂,數據難以跟隨,程式員就要花很多時間去理解、使用原本的程式。這種程式當下的狀態與其理應狀態之間其差異,Martin Fowler 稱之為 cruft, 一種程式上的冗餘。他提到另一位著名的程式設計師Ward Cunningham 對cruft所提出的一種隱喻,Technical Debt 技術債項,因為當一位程式員為了各種原因去無視內部質素,其產生出來的技術債項會導致將來所有有份涉足該源碼的程式員付出更多時間去進行程式上的修改,這些額外所費的時間可視為技術債項的利息
內部質素對開發時間的影響
雖然用家無法直接體會到軟件的內部質素,但用家卻在意軟件新功能開發的時間,這就直接受到內部質素的影響。技術債項多,每一項新功能的添加就會附上相應衍生出來的利息,亦即開發時間增加,用家亦要等待同樣的時間才能使用到新功能。在這個情況下,技術債項少的軟件會比債項多的軟件更快推出新功能,而用家相對之下很有可能會轉用較貴但功能更多的同類軟件。路遙知馬力,技術債項多的軟件可能可以很快跑出,但往往輸在持久力上。
債項多少的差異,使到軟件持續開發進度的交叉點數週就出現
Martin Fowler指出,即使最好的開發隊伍,亦難免有技術債項的產生,皆因開發的時候很多時處於不確定的未知狀態,開發成員亦只有大概的概念去知道軟件需要什麼,只能夠見步行步,越後期迷霧才越散去,加上軟件所用的開發語言、資源庫、平台亦在開發期間不斷變更,就如興建大廈時,在興建好一半後大改圖則、建築材料一樣。
We made good decisions, but only now do we understand how we should have built it.
而成功的開發隊伍就會透過寫自動化測試(automated test)、重構(refactoring)、持續整合(continuous integration),以積極清除足夠的冗餘,令到新功能開發時間減低。在這個意義底下,內部質素高的軟件也許一開始的開發成本較高。但以長遠發展,高內部質素的軟件開發成本卻是比較低廉。
所以,各位程式員應該知道如何和上司解釋軟件質素的重要,而各位老闆亦懂得怎樣分配時間、資源在軟件開發吧?

聯絡我們:
電郵地址: hello@ones.software
Contact us:
Email address: hello@ones.software
ONES Publication
We share what we have learned about app and web development. Find us in ones.software. Email: hello@ones.software
為什麼會看到廣告
通過 Offision 立即提高您的辦公績效!免費試用! 無需信用卡 即開即用
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在現今的商業世界,軟件是企業營運中不可缺少的部份。要決定您的企業是否購買現成的軟件,還是自行開發一套軟件,這可能是一項艱鉅的決定:自行開發一套軟件相對昂貴,但現成的軟件卻缺乏彈性。但為什麼還會有企業自行開發軟件?
軟件可以即要即用?企業級軟件訂閲服務 (SaaS) 開發 - 系統架構篇:Single tenancy (單一租戶模式) 和 Multi tenancy (多租戶模式) 歡迎聯絡我們: http://ones.software
在現今的商業世界,軟件是企業營運中不可缺少的部份。要決定您的企業是否購買現成的軟件,還是自行開發一套軟件,這可能是一項艱鉅的決定:自行開發一套軟件相對昂貴,但現成的軟件卻缺乏彈性。但為什麼還會有企業自行開發軟件?
軟件可以即要即用?企業級軟件訂閲服務 (SaaS) 開發 - 系統架構篇:Single tenancy (單一租戶模式) 和 Multi tenancy (多租戶模式) 歡迎聯絡我們: http://ones.software
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
  終於在2021年5月底的時候,下定決心要轉換跑道,立志要成功轉職成為網頁工程師,後來開始在網路上查找相關的資訊,思考要如何學習以及入門的時候,搜尋到了AC CAMP,看完了簡介沒兩分鐘馬上決定加入。   其實本身自己也算是完全沒有任何關於寫code的經驗,所以剛開始是加入學期一,發現AC 的課綱
Thumbnail
Bud, in the early morning. Bloom, in the early afternoon. Tempo of the rose. Color code of ROSE: Pink as the tenderly Passion, white as the ...
前言 目前手邊工作上,與其說是開發新功能,大多時候比較常是優化原有的功能,順便修正以前留下來的bug,因此解讀前人的程式碼、留不留註解、如何讓程式寫的更"乾淨"一點等常見的問題一件一件浮上檯面。
Thumbnail
  好久沒遇到這麼對我口味的遊戲了,先簡單的概括一下感想吧。: 極對我電波的遊戲,能感受到製作組很極力的使用各種象徵元素來營造劇情氣氛,如象徵生命的懈寄生、具有生命重量的鮮血、祈禱通往天堂的歌德與巴洛克式教堂元素等。   這是個在絕望的時代中,各式各樣的人尋求心中光芒的故事。
Thumbnail
交易所行為準則旨在保護臺灣「區域鏈暨加密貨幣自律組織」成員、投資者與消費者之利益,同時也促進區塊鏈產業之繁榮、引導加密貨幣正向發展。為促進成員發揚自律精神、恪遵法令規定、提昇商業道德並建立市場紀律,特在此宣誓本自律組織之成員應信守以下之基本原則:
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
  終於在2021年5月底的時候,下定決心要轉換跑道,立志要成功轉職成為網頁工程師,後來開始在網路上查找相關的資訊,思考要如何學習以及入門的時候,搜尋到了AC CAMP,看完了簡介沒兩分鐘馬上決定加入。   其實本身自己也算是完全沒有任何關於寫code的經驗,所以剛開始是加入學期一,發現AC 的課綱
Thumbnail
Bud, in the early morning. Bloom, in the early afternoon. Tempo of the rose. Color code of ROSE: Pink as the tenderly Passion, white as the ...
前言 目前手邊工作上,與其說是開發新功能,大多時候比較常是優化原有的功能,順便修正以前留下來的bug,因此解讀前人的程式碼、留不留註解、如何讓程式寫的更"乾淨"一點等常見的問題一件一件浮上檯面。
Thumbnail
  好久沒遇到這麼對我口味的遊戲了,先簡單的概括一下感想吧。: 極對我電波的遊戲,能感受到製作組很極力的使用各種象徵元素來營造劇情氣氛,如象徵生命的懈寄生、具有生命重量的鮮血、祈禱通往天堂的歌德與巴洛克式教堂元素等。   這是個在絕望的時代中,各式各樣的人尋求心中光芒的故事。
Thumbnail
交易所行為準則旨在保護臺灣「區域鏈暨加密貨幣自律組織」成員、投資者與消費者之利益,同時也促進區塊鏈產業之繁榮、引導加密貨幣正向發展。為促進成員發揚自律精神、恪遵法令規定、提昇商業道德並建立市場紀律,特在此宣誓本自律組織之成員應信守以下之基本原則: