開發者時間大解密:為何大部分工作都在「理解系統」上?

開發者時間大解密:為何大部分工作都在「理解系統」上?
Photo by Christopher Gower / Unsplash

在軟體開發的世界裡,有一個現象一直存在卻鮮少被深入討論:開發者將大部分時間花在「理解系統」上。這個現象值得我們深入探討,因為它直接影響著開發效率和成本。

軟體開發的時間分配:40年來的驚人不變

早在1979年,Zelkowitz、Shaw和Gannon在《軟體工程與設計原則》一書中就指出,開發者67%的時間都花在了維護上。這已經暗示了理解現有代碼是開發工作的主要部分。

快轉到2018年,Xia、Bao等人在《測量程式理解:與專業人員進行的大規模現場研究》中透過詳細的數據分析發現,程式理解佔據了開發者約58%的時間。更值得注意的是,「導航」(在代碼間跳轉查找信息)單獨就佔了24%的時間,這部分甚至不包括在「理解」的範疇內!

這意味著,經過40多年的技術進步,開發者仍然將大部分時間花在理解系統上。唯一的變化可能只是我們更精確地測量了這些「理解時間」。

為何這個問題如此重要?

如果理解系統是軟體開發中最大的時間消耗,那麼它理應成為我們首要優化的目標。然而,我們的討論往往集中在如何編寫代碼,如何構建系統,卻很少談論如何高效地「理解系統」。未被討論的問題就不會被明確定義,未被明確定義的問題也就無法被有效優化。

目前,「理解系統」主要通過閱讀代碼實現。事實上,前面提到的研究也將理解與閱讀視為基本同義詞。這引發了一個重要問題:閱讀真的是理解系統的最佳方式嗎?

重新定義問題:從閱讀到決策

為什麼開發者要閱讀代碼?根本目的是為了收集足夠的信息,以便知道下一步該做什麼。從這個角度看,閱讀代碼本質上是一種決策前的信息收集過程。

閱讀恰恰是從數據中收集信息的最手動、最低效的方式。這為我們提供了一個巨大的優化空間。

在我多年前創立的人性化評估理念中,我將「理解系統以知道下一步該做什麼」的過程稱為「評估」(assessment)。我認為,我們應該圍繞這一過程優化開發工作流。

從閱讀到工具化:可塑性開發的誕生

經過十年的探索,我和同事們發展出了「可塑性開發」(moldable development)的概念。這一理念認識到:閱讀是從數據中提取信息的最手動方式,它不僅無法擴展,還會導致信息不完整和不確定性。

軟體開發已經足夠困難,不了解當前系統的狀態不應該成為方程式中的一個變量。一個手繪的關於當前系統的圖只是一種信念,而工程決策絕不應該基於信念。

一旦我們接受系統本質上是數據的觀點,就應該像處理數據那樣處理它。數據科學告訴我們,應該先從問題出發,然後通過與上下文匹配的工具進行推理。

可塑性工具:適應上下文的解決方案

由於軟體高度依賴上下文,我們無法預測具體問題,只能預測問題類型。為了應對這一挑戰,可塑性開發的核心理念是:工具應該在了解問題後可以被塑造,以便處理上下文中重要的事情,並代替開發者完成枯燥的閱讀工作。當然,為了使這一方法實用,創建自定義工具的成本必須很低。

我認為,在開發過程中為每一個具體問題構建自定義工具將是軟體開發的下一個重大飛躍。

十年後,我們不應該再以閱讀來衡量「理解系統」的時間。我們應該將精力集中在解決實際問題上。要實現這一目標,我們應該從討論如何「不閱讀代碼」開始。我們負擔不起不這樣做的代價。

Glamorous Toolkit:可塑性開發的具體實踐

為了啟動「如何不閱讀代碼」的對話,我們創建了Glamorous Toolkit。這是一個可塑性開發環境,它使得以低成本創建關於軟體系統的自定義工具成為可能。

例如,假設你需要理解一個複雜的數據處理管道。傳統方法需要你閱讀數百行代碼並在腦中構建流程模型。而使用Glamorous Toolkit,你可以快速創建一個視覺化工具,直接展示數據如何在管道中流動,哪些轉換發生在哪裡,以及可能的瓶頸在哪裡。這不僅節省了理解時間,還提供了更準確的系統視圖。

為普通人解釋:為什麼這很重要?

即使你不是軟體開發者,這個話題也與你息息相關。想像一下,如果建築師花67%的時間試圖理解已有的建築結構,而不是設計新建築;或者醫生花58%的診斷時間查閱過去的病歷,而不是與患者互動和制定治療方案。這聽起來效率極低,對吧?

這正是軟體行業面臨的現實。結果是什麼?軟體開發成本高昂,交付緩慢,質量不穩定。作為軟體的使用者,你可能經歷過緩慢的更新、持續存在的錯誤或過高的軟體價格。這些問題很大程度上源於開發者在理解系統上花費過多時間。

可塑性開發提供了一種新思路:不是更快地閱讀代碼,而是通過創建針對特定問題的工具來避免大量閱讀。這就像從用放大鏡手動檢查地圖,進化到使用GPS導航系統。結果將是更快、更便宜、更可靠的軟體開發。

Read more

寫程式碼從來不是瓶頸:LLM時代的軟體開發挑戰

寫程式碼從來不是瓶頸:LLM時代的軟體開發挑戰

多年來,我始終認為在軟體工程中,撰寫程式碼的行數從來都不是真正的瓶頸所在。 真正的瓶頸過去是,現在依然是程式碼審查、透過指導和配對進行的知識傳遞、測試、偵錯,以及協調與溝通的人為成本。所有這些都被包裹在工作票、規劃會議和敏捷儀式的迷宮中。 這些原本旨在提升品質的流程,往往比撰寫程式碼本身更能拖慢我們的速度,因為它們需要思考、共享理解和健全的判斷力。 如今,隨著大型語言模型(LLMs)使生成可運行程式碼變得比以往更快,一種新的說法出現了:撰寫程式碼曾經是瓶頸,而我們終於突破了它。 但這種說法並不完全正確。 新增軟體的邊際成本正趨近於零,尤其是有了LLMs的幫助。但理解、測試和信任該程式碼的代價是什麼?比以往更高。 LLMs轉移了工作負載——而非消除它 像Claude這樣的工具可以加快初始實現速度。但結果往往是更多的程式碼流入系統,以及對負責審查、整合和維護它的人員施加更大壓力。 這在以下情況尤為明顯: * 不清楚作者是否完全理解他們提交的內容。 * 生成的程式碼引入了不熟悉的模式或違反了既定慣例。 * 邊緣案例和非預期的副作用並不明顯。 我們最終陷入這樣一種情

By Eric Lau
每位員工250K的KPI文化:導致科技業裁員潮的主因

每位員工250K的KPI文化:導致科技業裁員潮的主因

為何我們的工作永遠充滿不確定性 在科技產業中,尤其是SaaS(軟體即服務)領域,我們正見證著一場靜默卻深刻的變革。這場變革不僅關乎技術創新,更與一個經常被忽略的關鍵績效指標(KPI)有關:每位員工創造的收入。當這個數字低於行業標準—通常為每位員工25萬美元—大規模裁員往往就在眼前。讓我們深入探討這個現象如何影響亞洲科技生態系統,以及您如何在這個波動的環境中保障自己的職業發展。 SaaS市場的爆炸性增長與現實 SaaS行業正經歷前所未有的擴張。根據最新數據: * 2020年(疫情前,AI風潮前):美國年收入超過100萬美元的SaaS公司約5,000家(其中48%採用產品主導增長策略PLG) * 2025年(AI時代,PLG效率提升):此類公司增至約15,000家(其中72%採用PLG策略) 簡而言之,越來越多的SaaS公司正競逐同一塊市場蛋糕,而這一趨勢沒有放緩的跡象。雖然個別成功的公司增長速度比以往更快,但整體競爭也更為激烈。 值得注意的是,典型SaaS/PLG業務結構中,約70%或更多的成本與員工相關。儘管AI現已成為較大的成本中心,大多數SaaS公司仍主要由人類運

By Eric Lau
驗證機制的悖論:在AI時代證明人類身分的挑戰與未來

驗證機制的悖論:在AI時代證明人類身分的挑戰與未來

在科技快速發展的今日,我們面臨著一個奇特的矛盾:那些致力於開發最先進人工智能的公司,同時也在投入大量資源開發機制——驗證碼(captcha)——來防止機器冒充人類。這種矛盾不僅僅是表面上的諷刺,更揭示了更深層次的科技發展悖論。 證明自己是人類的荒謬困境 每一天,我們這些真正的人類正越來越難以證明自己是人類,而機器卻能輕鬆解決這些令人煩惱的驗證難題。我們已經到了一個令人啼笑皆非的地步:辨識扭曲的文字、尋找企鵝或識別模糊的腳踏車圖片,對人類來說遠比對GPT-4或Gemini等多模態模型更具挑戰性。 更諷刺的是,隨著機器變得越來越智能,人類反而越來越難以證明自己的人類身份。這場軍備競賽已然變得荒謬,而且不可能永遠持續下去。 這不僅是一種諷刺,更是一種結構性矛盾。我們花了數十年時間建造旨在匹配或超越人類能力的智能系統,同時又開發工具以防止這些系統進入我們的數位空間。 這導致了一個看似技術性精神分裂的悖論:在這個世界中,人類必須越來越多地通過設計來阻擋他們自己創造的智能的測試。 超越驗證碼:建立人類層 但這不僅僅是用戶體驗問題,它是一個文明層面的挑戰。 如果任何人在任何地方都

By Eric Lau
少即是多:當產品出現問題時,該減少而非增加功能

少即是多:當產品出現問題時,該減少而非增加功能

在科技產業中,我們經常會有這樣的迷思:當產品不盡理想時,增加更多功能就能解決問題。然而,現實往往恰恰相反。如果您的產品核心價值不明確,添加再多花俏功能也只是掩蓋根本問題,而非真正解決它。本文將深入探討為何在產品開發中,「少即是多」的理念至關重要。 為何我們總是想要增加更多功能 作為產品開發者,我們熱愛創造。這種創造的過程令人著迷,彷彿一種有趣的嗜好而非工作。當面對產品問題時,我們的本能反應往往是:「讓我們再加些功能來解決它!」這裡加點新特性,那裡更新一些設計,然後所有策略問題就迎刃而解了,對吧? 可惜,事實並非如此。對於產品成長緩慢、用戶參與度低和留存率差等問題,這些都反映出產品整體基礎的弱點,而非僅僅缺少幾個功能。每個產品都有其核心價值主張,更多功能可以使這一價值更好,但它不能修復核心本身的問題。 產品過度擴張的危險信號 這種傾向於通過增加功能來解決問題的偏見在整個科技行業非常普遍。太多團隊在面臨困境時,他們的解決方案似乎總是構建更多產品!構建是有趣的,他們擅長這樣做,然後一切問題都變成了他們手中錘子的釘子。 然而,現實是,當業務運作不良時,正確的做法是後退一步,不是

By Eric Lau