寫軟體不是造汽車

html5tricks發表於2014-08-25

  寫軟體和做其他事情是不一樣的。當我們製造別的東西的時候——像汽車、玩具、椅子、畫作、甚至包括數字產品如平面圖片和3D模型——我們做出來的成品就是最終的結果。而開發軟體則不是,我們做出來的產品永遠不可能有最終的結果——我們需要向計算機解釋如何根據任意的輸入來輸出任意可能的結果。

  寫軟體不像造汽車,或者可以這麼說,它更像是建立一個汽車裝配生產線。

  我們很容易瞭解汽車製造的設計觀念,產品設計師只要拿著一張設計圖紙,說一聲“照這個做”,然後工程師們就可以開工了,開始製造一個看上去真實存在的東西。

  假設我們的產品設計師需要給一個網站開發一個使用者資料管理系統,一個簡單而完美的設計也許就是在佈局好的頁面中放置幾個佔位符文字,用來顯示使用者名稱、使用者頭像和一些基礎資料資料。然而,這僅僅是開發軟體過程中的假設階段,實際操作很複雜。比如使用者如何編輯這些欄位?視窗頁面太窄了怎麼辦?頁面如何在各種螢幕的閱讀器中展示不錯的效果?產品設計師只是假設了一些理想狀況下的頁面,但是開發者卻需要將每一種可能遇到的情況都考慮到。

  回到剛才打的“汽車裝配生產線”這個比喻,產品設計師提出一些看上去很簡單的需求,就像“可以把駕駛室的車門顏色由紅色替換成藍色嗎?”這樣的需求。這是一種誤導——做一輛紅色車門的汽車看起來很簡單,但實踐起來卻非常困難——我們需要調整生產線上的配色系統以便讓其支援噴刷多種顏色的油漆,這就要增加一些區域性噴色的邏輯,並且需要增加配置選項以允許人們在生產線上可以選擇需要噴刷的油漆顏色。還有就是需要購買一些新的噴漆嘴,因為紅漆比藍漆流動更快一些。而且需要安排更好的健康保險,因為一旦銷售人員知道你製造的汽車只有一扇門是紅色的,他們會瘋狂地扔東西。

  在軟體開發中也會發生類似的事情。“嘿,這個使用者管理系統看起來很不錯,可以在使用者生日的時候傳送一條祝福訊息嗎?”於是你又接收到了一條看似簡單的需求。

  當你在開發軟體的時候,你並不是在構建使用者管理系統中的一個頁面,而是在建立一條裝配生產線,它由一堆的零部件組成,而且可以每次生成正確的使用者管理頁面。

  英文原文:Writing Software is not like Building a Car 翻譯:html5tricks - 蔣麗麗

相關文章