行業動态

了(le/liǎo)解最新公司動态及行業資訊

當前位置:首頁>新聞中心>行業動态
全部 471 公司動态 136 行業動态 173

軟件開發越來(lái)越糟?(軟件開發)軟件開發的(de)人(rén)厲害嗎,

時(shí)間:2025-04-21   訪問量:0

内存越來(lái)越大(dà),空間卻越來(lái)越小!

原文鏈接:https://stackoverflow.blog/2023/01/30/is-software-getting-worse/

本文爲(wéi / wèi) CSDN 編譯整理,未經授權,禁止轉載!

作者 | Isaac Lyman 譯者 | 彎月責編 | 夢依丹出(chū)品 | CSDN(ID:CSDNnews)

最近,我偶然間讀到(dào)Nikita Propokov的(de)一(yī / yì /yí)篇文章《軟件幻滅》(https://tonsky.me/blog/disenchantment/)。這(zhè)不(bù)禁讓我想起了(le/liǎo) Maciej Cegłowski 的(de)帖子(zǐ)《網站臃腫危機》(https://idlewords.com/talks/website_obesity.htm),以(yǐ)及其他(tā)幾篇類似的(de)帖子(zǐ)。

越來(lái)越多的(de)軟件開發人(rén)員認爲(wéi / wèi),如今的(de)應用程序規模越來(lái)越大(dà),速度越來(lái)越慢,問題越來(lái)越多。然而(ér),以(yǐ)這(zhè)個(gè)時(shí)代的(de)硬件水平,我們理應能夠編寫出(chū)更快、更小、更健壯的(de)應用程序。DOOM,于(yú) 1996 年問世,就(jiù)能在(zài)懷孕測試儀(https://www.cnet.com/culture/programmer-makes-original-doom-playable-on-pregnancy-test/)以(yǐ)及其他(tā)上(shàng)百種意想不(bù)到(dào)的(de)設備上(shàng)運行。而(ér)另一(yī / yì /yí)方面,時(shí)至 2022 年,聊天應用程序在(zài)後台運行時(shí)居然會占用 0.5GB(甚至更多)的(de)内存,有時(shí)甚至會讓設備完全失去反應,即使在(zài)高端硬件上(shàng)也(yě)是(shì)如此。

對于(yú)這(zhè)個(gè)主題的(de)帖子(zǐ),人(rén)們普遍認爲(wéi / wèi) 80% 的(de)批評是(shì)公平合理的(de),還有 20% 隻不(bù)過是(shì)沒病空呻吟。

大(dà)多數開發人(rén)員都知道(dào),千萬不(bù)要(yào / yāo)說(shuō)“這(zhè)隻是(shì)一(yī / yì /yí)個(gè)智能手機操作系統,能有多難?”之(zhī)類的(de)話。或者,“90 年代的(de)電子(zǐ)表格應用程序隻需要(yào / yāo) 10 KB,爲(wéi / wèi)什麽這(zhè)款應用需要(yào / yāo)一(yī / yì /yí)個(gè)G?”若非親手構建應用程序,你永遠無法想象其複雜性和(hé / huò)困難程度。

但這(zhè)并不(bù)意味着,我們不(bù)能進行客觀的(de)批評。如今的(de)應用程序的(de)的(de)确确比以(yǐ)前更慢了(le/liǎo),而(ér)且還在(zài)沒有相應增加價值的(de)情況下呈指數增長。其實,幾乎所有現代應用程序都可以(yǐ)被優化。我們可以(yǐ)提高它們的(de)速度,甚至可能提高幾個(gè)數量級。我們可以(yǐ)删除代碼。我們可以(yǐ)編寫微型的(de)、專門構建的(de)庫。我們可以(yǐ)找到(dào)壓縮文件的(de)新方法。

但爲(wéi / wèi)什麽我們沒有這(zhè)麽做呢?

Propokov 的(de)答案是(shì)“軟件工程師并沒有爲(wéi / wèi)自己的(de)工作而(ér)感到(dào)自豪”。這(zhè)句話雖有一(yī / yì /yí)定的(de)道(dào)理,但我堅信,努力工作并出(chū)色地(dì / de)完成任務是(shì)人(rén)類的(de)自然天性,隻有當某些事情反複阻礙時(shí),我們才會失敗。因此,與其抱怨人(rén)類的(de)懶惰,并以(yǐ)此來(lái)解釋爲(wéi / wèi)什麽如今的(de)軟件如此緩慢且有缺陷,我們更加應該思考:“什麽樣的(de)力量和(hé / huò)驅動力創造的(de)環境導緻軟件工程師很難全力以(yǐ)赴做好自己的(de)工作?”

對此,我有幾個(gè)答案。

速度、可靠性以(yǐ)及磁盤占用空間并不(bù)能吸引客戶

在(zài)工程師眼中,軟件是(shì)由交互組件、輸入和(hé / huò)輸出(chū)構成的(de)網絡。這(zhè)個(gè)模型既準确又實用。然而(ér),這(zhè)并不(bù)是(shì)打包、營銷或銷售軟件的(de)方式。對于(yú)商人(rén)和(hé / huò)客戶來(lái)說(shuō),軟件就(jiù)是(shì)一(yī / yì /yí)系列功能。

以(yǐ)庫存管理應用程序爲(wéi / wèi)例。營銷會大(dà)肆展示高分辨率的(de)庫存照片、大(dà)膽的(de)色調,以(yǐ)及各種功能亮點:

跨多個(gè)倉庫跟蹤庫存;

與物流、供應鏈以(yǐ)及銷售系統集成;

多層次的(de)周次以(yǐ)及月度報告;

細粒度的(de)訪問和(hé / huò)安全控制;

所有終端的(de)即時(shí)更新;

可在(zài) Windows、MacOS 和(hé / huò) Linux 上(shàng)運行。

這(zhè)些陳述都是(shì)可證僞的(de),也(yě)就(jiù)是(shì)說(shuō),我們隻需要(yào / yāo)一(yī / yì /yí)個(gè)小時(shí)的(de)演示,就(jiù)可以(yǐ)證明軟件能否做到(dào)這(zhè)些。但隻有一(yī / yì /yí)條與速度有關。軟件實際上(shàng)可能非常慢,需要(yào / yāo)幾秒鍾才能響應按鈕點擊,但依然可以(yǐ)保證“即時(shí)更新”。

速度會影響用戶對應用程序的(de)整體體驗。速度是(shì)質量的(de)重要(yào / yāo)标志,但這(zhè)個(gè)特性很難吸引人(rén)。如果你花大(dà)量時(shí)間優化核心流程,而(ér)競争對手正在(zài)開發一(yī / yì /yí)種新型報告,那麽有可能接下來(lái)你會因此而(ér)損失大(dà)量客戶。針對現有客戶調查一(yī / yì /yí)下,你就(jiù)會發現,當問及下一(yī / yì /yí)步應該開發什麽時(shí),他(tā)們大(dà)多會要(yào / yāo)求功能,而(ér)不(bù)是(shì)速度,除非軟件太慢以(yǐ)至于(yú)無法使用。再者,董事會根本不(bù)可能允許公司暫停現有的(de)産品開發計劃,抽出(chū)六個(gè)月的(de)時(shí)間來(lái)處理技術債務。功能、功能、還是(shì)功能,我們身上(shàng)的(de)這(zhè)些壓力從未減輕。

程序員希望編寫快速的(de)應用程序。但市場根本不(bù)在(zài)乎

你可能注意到(dào),上(shàng)述我們沒有提及可靠性。有誰敢說(shuō)自己的(de)應用程序沒有bug?我們根本沒有辦法确保這(zhè)一(yī / yì /yí)點,更不(bù)用說(shuō)通過産品演示證明了(le/liǎo)。難道(dào)我們要(yào / yāo)說(shuō)“90%的(de)單元測試覆蓋率和(hé / huò)全套集成測試?”誰能明白這(zhè)意味着什麽,而(ér)且如果你向他(tā)們解釋,他(tā)們會感到(dào)無聊。我們無法向客戶解釋可靠性,讓他(tā)們相信你的(de)說(shuō)辭,同時(shí)又對這(zhè)個(gè)話題感興趣。敏捷時(shí)代告訴他(tā)們,bug是(shì)不(bù)可避免的(de),你隻能努力修複。由于(yú)沒有全面的(de)方法來(lái)衡量軟件中的(de)缺陷,因此不(bù)能将其作爲(wéi / wèi)比較産品的(de)特性。我們投入時(shí)間來(lái)測試、重構和(hé / huò)改進,但可能完全不(bù)會有人(rén)注意到(dào)。

程序員希望編寫沒有bug的(de)應用程序。但市場根本不(bù)在(zài)乎

另外,上(shàng)述我們也(yě)沒有提到(dào)磁盤使用情況,盡管有時(shí)我們會在(zài)“下載”按鈕下方用一(yī / yì /yí)行小字顯示下載文件的(de)大(dà)小。與上(shàng)述功能亮點相比,磁盤使用情況在(zài)客戶心目中的(de)影響力太小。上(shàng)一(yī / yì /yí)次,你因磁盤空間不(bù)足而(ér)責怪開發人(rén)員(而(ér)不(bù)是(shì)自己的(de)計算機)是(shì)什麽時(shí)候?你是(shì)否會根據下載文件的(de)大(dà)小選擇視頻遊戲?可能永遠不(bù)會。你會發現有人(rén)抱怨最新的(de)《使命召喚》太大(dà),但新版發布的(de)那一(yī / yì /yí)周仍然賺了(le/liǎo) 10 億美元。

減小可執行文件或輸出(chū)包的(de)大(dà)小是(shì)吃力不(bù)讨好的(de)工作。但這(zhè)通常是(shì)一(yī / yì /yí)項技術含量很高的(de)工作,不(bù)僅需要(yào / yāo)了(le/liǎo)解正在(zài)構建的(de)應用程序,還需要(yào / yāo)了(le/liǎo)解其依賴的(de)數百個(gè)較低級别的(de)庫。此外,通常我們并不(bù)鼓勵這(zhè)項工作,部分原因是(shì)這(zhè)是(shì)一(yī / yì /yí)個(gè)雷區。你也(yě)許并不(bù)了(le/liǎo)解某一(yī / yì /yí)行代碼的(de)作用,但這(zhè)并不(bù)意味着它沒有用。也(yě)許這(zhè)樣做隻會造成在(zài)智能手機上(shàng)運行Ubuntu的(de)那0.01%的(de)用戶出(chū)問題。但也(yě)許你付出(chū)了(le/liǎo)大(dà)量努力,最後不(bù)過是(shì)防止應用程序在(zài)每四年一(yī / yì /yí)次的(de)閏日崩潰。即使是(shì)最小的(de)工具函數最終也(yě)會發展成公司智慧的(de)産物。我們沒必要(yào / yāo)惹這(zhè)種麻煩。

一(yī / yì /yí)些程序員希望編寫更小的(de)應用程序。但對市場或我們來(lái)說(shuō),這(zhè)樣做并沒有好處

消費類軟件被低估

分發應用程序并不(bù)難。互聯網的(de)誕生或多或少正源于(yú)此。但銷售應用就(jiù)像拔牙。大(dà)衆願意花 15 美元買一(yī / yì /yí)個(gè)三明治或一(yī / yì /yí)張電影票,即便碰到(dào)爛片也(yě)隻能一(yī / yì /yí)聲歎息,但面對感興趣的(de)應用,即便隻需要(yào / yāo) 1 美元,他(tā)們也(yě)會猶豫不(bù)決。隻有兩種人(rén)群願意爲(wéi / wèi)優質的(de)軟件付費:企業和(hé / huò)遊戲玩家。不(bù)知爲(wéi / wèi)何,我們所在(zài)的(de)世界其他(tā)人(rén)都希望軟件免費。

這(zhè)種期望對消費應用的(de)質量造成了(le/liǎo)破壞。構建一(yī / yì /yí)款應用所需的(de)成本大(dà)約爲(wéi / wèi) 5 萬~50 萬美元。如果你無法讓用戶付費,那麽就(jiù)必須通過其他(tā)方式收回成本。以(yǐ)下這(zhè)些因素是(shì)導緻 Web 和(hé / huò)原生應用膨脹和(hé / huò)緩慢的(de)最主要(yào / yāo)原因:用戶跟蹤、廣告、營銷漏鬥、捆綁銷售、付費訂閱、針對上(shàng)述所有内容的(de)反制措施,以(yǐ)及其他(tā)上(shàng)百個(gè)不(bù)太體面的(de)收入來(lái)源。人(rén)們往往以(yǐ)爲(wéi / wèi)這(zhè)些都是(shì)因爲(wéi / wèi)商家的(de)貪婪,但其實大(dà)多數時(shí)候都是(shì)因爲(wéi / wèi)他(tā)們很絕望,沒有更好的(de)方式。互聯網上(shàng)的(de)一(yī / yì /yí)些流行網站,大(dà)多隻能勉強維持。

我并沒有誇大(dà)這(zhè)樣的(de)系統造成的(de)浪費和(hé / huò)低效率。如果按照合理的(de)價格發布一(yī / yì /yí)款獨特、高質量的(de)應用,結果往往是(shì)無人(rén)問津,下載量爲(wéi / wèi) 0。于(yú)是(shì),你隻能以(yǐ)免費試用/訂閱模式重建。然而(ér)如此一(yī / yì /yí)來(lái),即便下載此次達到(dào)數百次,也(yě)隻有少數用戶願意轉爲(wéi / wèi)付費,這(zhè)些收入不(bù)足以(yǐ)支撐你的(de)開銷。那麽,接下來(lái),你隻能在(zài)免費版本中投放廣告,雖然 UI 設計師可能會極力反對。然而(ér),即便這(zhè)樣,你也(yě)會發現廣告浏覽獲取的(de)收入僅爲(wéi / wèi)幾分錢。于(yú)是(shì),你隻能投放更多的(de)廣告。然後,用戶就(jiù)會抱怨廣告太多,因爲(wéi / wèi)在(zài)他(tā)們看來(lái),你應該讓他(tā)們繼續免費使用應用。你嘗試将一(yī / yì /yí)些廣告換成應用内購買。而(ér)用戶會繼續抱怨。無奈之(zhī)下,你添加了(le/liǎo)一(yī / yì /yí)些“行動呼籲”,鼓勵用戶付費使用無廣告體驗版。結果發現,很多人(rén)很快就(jiù)删除了(le/liǎo)應用。爲(wéi / wèi)此,你添加了(le/liǎo)分析和(hé / huò)遙測,這(zhè)樣就(jiù)可以(yǐ)弄清楚如何保留住客戶。然而(ér),你發現“保留”可能就(jiù)是(shì)“成瘾”的(de)代名詞。如此循環往複,不(bù)久之(zhī)後你的(de)應用就(jiù)徹底“面目全非”,成爲(wéi / wèi)一(yī / yì /yí)個(gè)毫無樂趣的(de)收入機器,各種濫用用戶的(de)注意力和(hé / huò)隐私。但你依然無法賺到(dào)很多錢。

如果人(rén)們願意付費購買應用,我們就(jiù)可以(yǐ)避免這(zhè)一(yī / yì /yí)切。但不(bù)幸的(de)是(shì),他(tā)們不(bù)願意,所以(yǐ)應用都變成得臃腫、緩慢、bug 累累。

開發人(rén)員沒有意識到(dào)自己的(de)力量

看到(dào)這(zhè)裏,有人(rén)肯定會說(shuō),你就(jiù)知道(dào)指責他(tā)人(rén),難道(dào)軟件開發人(rén)員就(jiù)沒有責任了(le/liǎo)嗎?我認爲(wéi / wèi),确實有些方面我們可以(yǐ)做得更好。

即使在(zài)經濟衰退期間,開發人(rén)員也(yě)擁有非凡的(de)影響力。我們可以(yǐ)堅持使用(或不(bù)使用)特定技術。我們依然有高薪、福利和(hé / huò)股權。我們可以(yǐ)團結一(yī / yì /yí)緻來(lái)改變整個(gè)公司的(de)文化和(hé / huò)工作環境,雖然這(zhè)種力量非常微弱。優秀的(de)程序員很難找,每個(gè)人(rén)都知道(dào),而(ér)我們知道(dào)他(tā)們知道(dào)。

這(zhè)就(jiù)是(shì)我們的(de)力量,我們可以(yǐ)更好地(dì / de)利用這(zhè)種力量。

我們應該在(zài)每次沖刺中預留一(yī / yì /yí)些時(shí)間出(chū)來(lái)解決技術債務。當有優化和(hé / huò)改進代碼的(de)機會時(shí),我們應該設法延遲功能開發。我們應該說(shuō)服老闆支持開源項目。我們應該建立一(yī / yì /yí)種期望,讓所有人(rén)明白我們不(bù)一(yī / yì /yí)定要(yào / yāo)投入所有工作時(shí)間開發新功能,我們的(de)準則和(hé / huò)行業對我們有更高的(de)期望。

大(dà)多數時(shí)候,這(zhè)些做法都不(bù)會産生任何負面影響。我們并沒有過分要(yào / yāo)求。每個(gè)行業都有專業标準和(hé / huò)要(yào / yāo)求。爲(wéi / wèi)什麽我們認爲(wéi / wèi)軟件開發就(jiù)不(bù)能建立類似的(de)标準和(hé / huò)要(yào / yāo)求?

唯一(yī / yì /yí)需要(yào / yāo)注意的(de)是(shì),這(zhè)些激勵措施對我們沒有好處。這(zhè)是(shì)一(yī / yì /yí)場艱苦的(de)戰鬥。有些經理不(bù)願意我們花時(shí)間解決技術債務,僅僅是(shì)因爲(wéi / wèi)他(tā)們不(bù)理解。有些銷售人(rén)員會擔心我們的(de)軟件沒有競争力。投資者可能會威脅将我們的(de)工作外包給更靈活的(de)開發人(rén)員。客戶的(de)态度和(hé / huò)市場力量的(de)轉變還需要(yào / yāo)一(yī / yì /yí)段時(shí)間。但是(shì),如果改變現代軟件的(de)狀态是(shì)一(yī / yì /yí)個(gè)有價值的(de)目标,那麽就(jiù)值得付出(chū)努力。

未來(lái)軟件開發能得到(dào)改善嗎?

我對軟件的(de)未來(lái)并不(bù)樂觀。90 年代,程序員可以(yǐ)構建微型、高度優化的(de)應用程序,因爲(wéi / wèi)當時(shí)他(tā)們别無選擇。客戶的(de)計算機隻有 32MB 内存和(hé / huò) 200 兆赫茲的(de)單核處理器。如果應用做不(bù)到(dào)極簡,就(jiù)無法運行。如今,兩年前購買的(de)基本型号 Macbook Air 的(de)内存是(shì)原來(lái)的(de) 250 倍,而(ér)且四核處理器的(de)速度是(shì)單核的(de)數倍。我們有更多選擇了(le/liǎo),但我們交付的(de)應用 90% 是(shì)垃圾。除非有人(rén)抱怨,否則我們不(bù)會做優化。我們會把整個(gè)Web浏覽器打包到(dào)發消息的(de)應用、做筆記的(de)應用中,甚至連我們寫代碼用的(de)工具都是(shì)如此。

在(zài)過去的(de)二十年裏,我們一(yī / yì /yí)直在(zài)努力提高軟件開發的(de)速度,降低軟件開發的(de)難度,讓軟件越來(lái)越易于(yú)使用。誠然,如今我們正在(zài)以(yǐ)前所未有的(de)速度創建應用,應用擁有的(de)功能數量也(yě)超出(chū)了(le/liǎo)以(yǐ)往,而(ér)軟件開發人(rén)員的(de)經驗也(yě)比以(yǐ)往任何時(shí)候都匮乏。從商業的(de)角度,我們不(bù)難看出(chū)這(zhè)其中的(de)吸引力。但我們也(yě)爲(wéi / wèi)此付出(chū)了(le/liǎo)代價,我們的(de)客戶、電力能源乃至整個(gè)地(dì / de)球都爲(wéi / wèi)此付出(chū)了(le/liǎo)沉重的(de)代價。

這(zhè)種狀況不(bù)會在(zài)一(yī / yì /yí)夜之(zhī)間發生變化,甚至可能在(zài)未來(lái)五年内都不(bù)會變化。但我依然對此充滿了(le/liǎo)希望。

最新一(yī / yì /yí)波 Web 編程語言和(hé / huò)技術(如 WebAssembly、ESBuild、SWC、Bun 和(hé / huò) Yew)正在(zài)努力讓編譯時(shí)和(hé / huò)運行時(shí)的(de)速度和(hé / huò)可靠性達到(dào)新的(de)水平。Rust 不(bù)僅能夠提供與 C 看媲美的(de)性能,而(ér)且對開發人(rén)員非常友好,這(zhè)種高級語言在(zài) Web 服務器上(shàng)越來(lái)越受歡迎。此外,還有 Tauri 等輕量級 Electron 的(de)替代品有望成爲(wéi / wèi) Web 開發人(rén)員的(de)首選跨平台框架。Tree-shaking 也(yě)将爲(wéi / wèi)編譯器和(hé / huò)打包器帶來(lái)新的(de)希望。

就(jiù)市場而(ér)言,幾款流行的(de)遊戲(比如《死亡細胞》和(hé / huò)《以(yǐ)撒的(de)結合》)已經以(yǐ)付費下載的(de)方式進入移動平台。雖然革命尚未成功,我們仍需努力,但這(zhè)是(shì)對全球最大(dà)的(de)技術消費者群體智能手機用戶進行軟件成本再教育的(de)一(yī / yì /yí)次突破。

如果在(zài)過去的(de)二十年裏,我們一(yī / yì /yí)直緻力于(yú)提高生産力(雖然此過程會犧牲掉效率和(hé / huò)财務可持續性),也(yě)許接下來(lái)的(de)二十年裏,我們可以(yǐ)解決集體技術債務,找回失去的(de)效率,并改善經濟交流,同時(shí)還不(bù)會失去軟件爲(wéi / wèi)我們的(de)生活帶來(lái)的(de)生産力提升。

上(shàng)一(yī / yì /yí)篇:一(yī / yì /yí)件潮玩,生活添趣味(消費新潮流,釋放新熱度⑥)毛主席得意之(zhī)筆四渡赤水:3萬紅軍對40萬國(guó)軍,堪稱軍事史上(shàng)的(de)奇迹(棉花娃娃)潮玩設計報價,

下一(yī / yì /yí)篇:過去十年機器學習軟件開發行業概覽(軟件開發)過去十年黃金價格,

在(zài)線咨詢

點擊這(zhè)裏給我發消息 售前咨詢專員

點擊這(zhè)裏給我發消息 售後服務專員

在(zài)線咨詢

免費通話

24小時(shí)免費咨詢

請輸入您的(de)聯系電話,座機請加區号

免費通話

微信掃一(yī / yì /yí)掃

微信聯系
返回頂部