寫軟體不是造汽車
寫軟體和做其他事情是不一樣的。當我們製造別的東西的時候——像汽車、玩具、椅子、畫作、甚至包括數字產品如平面圖片和3D模型——我們做出來的成品就是最終的結果。而開發軟體則不是,我們做出來的產品永遠不可能有最終的結果——我們需要向計算機解釋如何根據任意的輸入來輸出任意可能的結果。
寫軟體不像造汽車,或者可以這麼說,它更像是建立一個汽車裝配生產線。
我們很容易瞭解汽車製造的設計觀念,產品設計師只要拿著一張設計圖紙,說一聲“照這個做”,然後工程師們就可以開工了,開始製造一個看上去真實存在的東西。
假設我們的產品設計師需要給一個網站開發一個使用者資料管理系統,一個簡單而完美的設計也許就是在佈局好的頁面中放置幾個佔位符文字,用來顯示使用者名稱、使用者頭像和一些基礎資料資料。然而,這僅僅是開發軟體過程中的假設階段,實際操作很複雜。比如使用者如何編輯這些欄位?視窗頁面太窄了怎麼辦?頁面如何在各種螢幕的閱讀器中展示不錯的效果?產品設計師只是假設了一些理想狀況下的頁面,但是開發者卻需要將每一種可能遇到的情況都考慮到。
回到剛才打的“汽車裝配生產線”這個比喻,產品設計師提出一些看上去很簡單的需求,就像“可以把駕駛室的車門顏色由紅色替換成藍色嗎?”這樣的需求。這是一種誤導——做一輛紅色車門的汽車看起來很簡單,但實踐起來卻非常困難——我們需要調整生產線上的配色系統以便讓其支援噴刷多種顏色的油漆,這就要增加一些區域性噴色的邏輯,並且需要增加配置選項以允許人們在生產線上可以選擇需要噴刷的油漆顏色。還有就是需要購買一些新的噴漆嘴,因為紅漆比藍漆流動更快一些。而且需要安排更好的健康保險,因為一旦銷售人員知道你製造的汽車只有一扇門是紅色的,他們會瘋狂地扔東西。
在軟體開發中也會發生類似的事情。“嘿,這個使用者管理系統看起來很不錯,可以在使用者生日的時候傳送一條祝福訊息嗎?”於是你又接收到了一條看似簡單的需求。
當你在開發軟體的時候,你並不是在構建使用者管理系統中的一個頁面,而是在建立一條裝配生產線,它由一堆的零部件組成,而且可以每次生成正確的使用者管理頁面。
英文原文:Writing Software is not like Building a Car 翻譯:html5tricks - 蔣麗麗
相關文章
- 軟體定義汽車:蘋果+小米造車前瞻(附下載)蘋果
- 再次重申:ERP不是軟體(轉)
- 寫給程式設計師:我們這一代不是汽車工人程式設計師
- 10款深度偽造軟體
- (視訊)《快速建立網站》 4.1 為啥造軟體不同於造汽車,為啥是軟體就一定會有Bug - 構建開發運維一體化(DevOps)網站運維dev
- 自由軟體、開源軟體看起來都不是好名字
- 軟體塊寫完了
- 軟體構造第一部分——軟體構造基礎內容梳理
- 【智慧製造】工業軟體:智慧製造的大腦
- 元氣桌布是不是流氓軟體 元氣桌布軟體怎麼樣
- 中國軟體企業排名(不是絕對的)
- 中國軟體人沒有創造力?
- 軟體編寫風格
- 特斯拉、華為們要用軟體重新定義汽車?
- 軟體定義汽車之SOME/IP介紹
- 羅蘭貝格:智慧汽車軟體白皮書
- 【工業軟體】工業軟體對推進智慧製造的價值
- 軟體設計是怎樣煉成的(3)——軟體系統不是木桶型的
- 寫好軟體的訣竅
- 微服務不是軟體工程銀彈的10個原因微服務軟體工程
- 守好軟體定義汽車下的質量之門
- 如何營造高效軟體開發團隊(轉)
- 汽車製造 | 中國汽車產業政策的不足及日韓汽車產業政策的啟示產業
- 由軟體構造引申的OOP與POP的心得體會OOP
- 「人物特寫」工程院院士譚建榮:馬雲不是製造業的殺手,工業機器人也不是救命良藥...機器人
- 【智慧製造】中國製造2025獻禮之汽車篇
- mac寫作軟體哪個好?推薦幾款實用的mac寫作軟體Mac
- 幽默:軟體工程其實並不是理科生的天下軟體工程
- 不是我說國產軟體不好用,但他真的是流氓
- 遊戲創作的思考--網路遊戲不是SNS軟體(轉)遊戲
- 軟體開發人員需要的不僅是技術,也不是文件,也不是管理,而是……
- 讓你眼前一亮的不是流行的軟體,而是這五款小眾軟體
- Mac智慧手寫筆記軟體Mac筆記
- 寫一個簡易中介軟體
- iA Writer專業寫作軟體
- MWeb Pro for Mac(Markdown寫作軟體)WebMac
- iA Writer for Mac(MarkDown寫作軟體)Mac
- 部落格寫作軟體:MarsEdit for MacMac