這是一篇比較老的
文章,但是文中的這些問題在現在仍然普遍存在。代碼質量的高低與商業產品的優劣是否有直接的影響?開發者Frank Sommers在文中給出了他的看法。文章內容如下。
在大多數商業項目中,代碼質量并不被看重,因為大部分情況下,代碼不是整個項目的最終產品,客戶最終使用的是二進制文件,而不是源代碼。相比代碼質量,開發流程、進度和技能更能決定產品最終的質量。
在現實生活中,我幾乎從來沒有遇到一個對他所工作的代碼完全滿意的商業軟件開發者。相反,我甚至認識到, 開發者對其所工作的代碼的滿意度與代碼給老板所創造的價值成反比關系。
我的一個朋友在世界上最大、最賺錢的數據庫公司的核心服務器組件部門工作,他時常感嘆龐大的代碼庫中那些丑陋的命名約定,對于開發者來說,很難在這些代碼的基礎上開始工作。但是,不可否認, 就是這些丑陋的代碼庫為該公司創造了高達數十億美元的收入。
不幸的是,開發者一邊感嘆著代碼質量,一邊還不得不繼續做這項奇怪的、與眾不同的工作。 說這項工作與眾不同,是因為用戶不能從最終產品中直接看到你的付出。如果你是一個音樂家,你可以根據自己的喜好來塑造每一個音符和樂句,并直接呈現給聽眾。如果你是一個木匠,你的產出是實際的椅子或櫥柜。
但是作為一名開發者,除了你工作的開發環境和開發團隊外,你幾乎沒有留下什么東西。客戶看到的是二進制文件,而不是你的源碼。 除非你的產品是開源的,或者包含源碼文件,否則,除了開發團隊的人外,幾乎沒人看到或者關心這些代碼,而你每天在這些代碼上花費了大量寶貴的時間。
大多數編譯器也不關心代碼的質量,比如,變量如何命名、方法是否簡潔、對象模型是否清晰、甚至不管你使用了什么算法,編譯器對這些都沒有興趣, 無論代碼是優雅還是丑陋,都能創建出效果相同的二進制文件。比如,當你閱讀這篇文章時,你根本不會考慮當前頁面源代碼的質量。
當然,作為開發者,我們必須關心代碼質量,因為我們每天要花費大部分的時間來與這些代碼打交道。而且, 作為一個合格的開發者,我們應該努力打造和維護一個高質量的代碼庫。
我們花費大量時間來打造更高質量的代碼,我們通常會說現在所做的工作將會在一段時間后帶來更多的商業利益,以此來體驗我們所做的努力。但是,代碼質量很少直接導致任何可衡量的商業投資回報。比如我那位在數據庫公司工作的朋友的例子,他認為這些代碼丑陋不堪、難以閱讀,但是依然能夠很好地創造利益。 該公司專注的是產品的整體質量,而不是代碼的質量。
總體產品的質量,不是通過改善單一活動的質量就能提升的。 開發者測試、敏捷開發方法、QA(質量保證)、CI(持續集成),這些所有的流程保證了最終高質量的產出。代碼質量只是其中的一小部分。商業軟件公司往往會更專注于產生高質量產品的過程,因為這比起強調代碼質量來說,能獲得更好的回報。
通常來說,產品經理很清楚以上這些內容。但是對于開發者來說,必須日復一日地工作在他們認為“丑陋”的代碼基礎上。這意味著,開發者注定一直無法對他們所工作的代碼的質量感到滿意。
在大多數商業項目中,代碼質量并不被看重,因為大部分情況下,代碼不是整個項目的最終產品,客戶最終使用的是二進制文件,而不是源代碼。相比代碼質量,開發流程、進度和技能更能決定產品最終的質量。
在現實生活中,我幾乎從來沒有遇到一個對他所工作的代碼完全滿意的商業軟件開發者。相反,我甚至認識到, 開發者對其所工作的代碼的滿意度與代碼給老板所創造的價值成反比關系。
我的一個朋友在世界上最大、最賺錢的數據庫公司的核心服務器組件部門工作,他時常感嘆龐大的代碼庫中那些丑陋的命名約定,對于開發者來說,很難在這些代碼的基礎上開始工作。但是,不可否認, 就是這些丑陋的代碼庫為該公司創造了高達數十億美元的收入。
不幸的是,開發者一邊感嘆著代碼質量,一邊還不得不繼續做這項奇怪的、與眾不同的工作。 說這項工作與眾不同,是因為用戶不能從最終產品中直接看到你的付出。如果你是一個音樂家,你可以根據自己的喜好來塑造每一個音符和樂句,并直接呈現給聽眾。如果你是一個木匠,你的產出是實際的椅子或櫥柜。
但是作為一名開發者,除了你工作的開發環境和開發團隊外,你幾乎沒有留下什么東西。客戶看到的是二進制文件,而不是你的源碼。 除非你的產品是開源的,或者包含源碼文件,否則,除了開發團隊的人外,幾乎沒人看到或者關心這些代碼,而你每天在這些代碼上花費了大量寶貴的時間。
大多數編譯器也不關心代碼的質量,比如,變量如何命名、方法是否簡潔、對象模型是否清晰、甚至不管你使用了什么算法,編譯器對這些都沒有興趣, 無論代碼是優雅還是丑陋,都能創建出效果相同的二進制文件。比如,當你閱讀這篇文章時,你根本不會考慮當前頁面源代碼的質量。
當然,作為開發者,我們必須關心代碼質量,因為我們每天要花費大部分的時間來與這些代碼打交道。而且, 作為一個合格的開發者,我們應該努力打造和維護一個高質量的代碼庫。
我們花費大量時間來打造更高質量的代碼,我們通常會說現在所做的工作將會在一段時間后帶來更多的商業利益,以此來體驗我們所做的努力。但是,代碼質量很少直接導致任何可衡量的商業投資回報。比如我那位在數據庫公司工作的朋友的例子,他認為這些代碼丑陋不堪、難以閱讀,但是依然能夠很好地創造利益。 該公司專注的是產品的整體質量,而不是代碼的質量。
總體產品的質量,不是通過改善單一活動的質量就能提升的。 開發者測試、敏捷開發方法、QA(質量保證)、CI(持續集成),這些所有的流程保證了最終高質量的產出。代碼質量只是其中的一小部分。商業軟件公司往往會更專注于產生高質量產品的過程,因為這比起強調代碼質量來說,能獲得更好的回報。
通常來說,產品經理很清楚以上這些內容。但是對于開發者來說,必須日復一日地工作在他們認為“丑陋”的代碼基礎上。這意味著,開發者注定一直無法對他們所工作的代碼的質量感到滿意。