小批量處理事務
以小批量或「單件流」的方式做事,能讓我們從每次完成中即時學習並持續改進,這是革新製造業與現代軟體開發的核心原則。透過避免大批量作業,我們可以在每一輪迭代中汲取教訓,並防止品質問題在整個過程中擴散。
背景:這是我的系列文章中的第 8 篇,原為 Lightcone Infrastructure 的內部備忘錄,經編輯後公開發佈。
當你完成一件事時,你會學到關於如何做這件事的知識。當你同時完成許多件事時,你無法將從中學到的每一課應用到其他事情上。事實證明,這種洞見在很大程度上是工業革命的核心成因。
裝配線(流水線)是現代製造業的基礎技術之一。在理想的裝配線中,恰好一件產品的原材料從工廠的一端進入,並持續移動,直到從另一端作為完全組裝好的產品產出(緊接著是第二件、第三件,依此類推)。這種理想的裝配線基本上已經實現了,即使是對於人類最複雜的一些人造物也是如此。特斯拉工廠將一堆未組裝的鋁材和一些專門零件,在幾乎整整 10 小時內轉化為一輛可以上路的汽車,這一切都在一條蜿蜒穿過超級工廠(Gigafactory)的連續移動裝配線上完成。
在製造業中,這被稱為「單件流」(single piece flow)。它意味著:
- 如果我們在組裝的任何步驟發現缺陷,我們會立即停止生產線,防止任何質量問題傳播到第一個故障產品之外的任何東西。
- 每當一件物品離開裝配線的一個工位時,我們可以立即調整該工位的流程,以改進隨後通過的任何部件。
一條運行順暢的單件流裝配線也是流程經過完美校準的標誌。我們知道自己沒有在組裝的任何部分花費過多時間。傳送帶持續移動,速度始終如一,校準得剛好足以完成任務。如果由於某種原因任務花費了更長時間(例如,因為某個工人的表現不如前一個工人),我們會立即察覺。
與這一切形成鮮明對比的是人類關於效率的一些本能。如果我們不是從頭到尾一件一件地製作,而是處理一大批幾十個、幾百個或幾千個物品,我們似乎可以變得更有效率。這通常是一個謊言。
關於學生製作陶器/紙飛機/照片等不斷演變的寓言通常在此時被引用。雖然這個寓言有許多版本,但據我所知,這篇來自《原子習慣》的故事才是原版:
開學第一天,佛羅里達大學的教授傑利·尤斯曼(Jerry Uelsmann)將他的菲林攝影課學生分為兩組。
他解釋說,教室左側的所有人將屬於「量」組。他們的成績將完全取決於他們產出的作品數量。在課程的最後一天,他會統計每位學生提交的照片數量。一百張照片得 A,九十張得 B,八十張得 C,依此類推。
同時,教室右側的所有人將屬於「質」組。他們的成績將僅取決於作品的卓越程度。他們在學期中只需要產出一張照片,但要拿到 A,那必須是一張近乎完美的影像。
學期結束時,他驚訝地發現所有最好的照片都是由「量」組產出的。在學期中,這些學生忙於拍照、實驗構圖與光影、在暗房測試各種方法,並從錯誤中學習。在創造數百張照片的過程中,他們磨練了技能。與此同時,「質」組坐著推測完美。最後,除了未經證實的理論和一張平庸的照片外,他們的努力幾乎沒有任何成果。
雖然人們可能接受裝配線在製造業中具有深遠的變革性,但可能不太清楚同樣的原則如何影響像軟件工程這樣的運作,而這正是我們工作的一大部分。然而,同樣的原則也是現代軟件開發進步中不可忽視的驅動力。
在軟件工程的黑暗舊時代,軟件會以所謂的「版本」(releases)形式交付。
一個版本的生命週期始於一群經理聚集在一起,列出一長串他們認為正在開發的軟件應該具備的功能。然後這份清單會交給一小組領頭工程師,轉化為所謂的「規格書」(spec),通常至少有幾百頁長。這份規格書接著交給一組程序員去「實現」。產出的軟件隨後交給一組測試人員進行測試。然後交回給程序員修復。接著他們會進行大量的用戶測試,以獲取對產出軟件的產品反饋。這又會產生一份額外的功能清單,轉化為規格書,然後實現、測試和修復。
最後,在經過多個月甚至多年後,軟件會被刻錄在 CD 上,然後運送給用戶。
將此與主導現代軟件工程的流程進行對比。一切都是持續部署的。單個工程師通常從產生一個功能的想法到將其交付給用戶,只需幾小時,而非幾個月。每一個微小的代碼更改都會立即發佈。我們避免一次發佈很多東西,因為這會讓我們更難回滾。這就是單件流/小批量原則的應用。
在管理層面,單件流的反面通常被稱為「瀑布式規劃」(waterfall planning)。瀑布式規劃流程被結構化為產品開發的多個不同階段,大批量的變更被組合、審計、審查、迭代,最終在未來的某個時間交付給用戶。瀑布式流程的替代方案通常被稱為「精益流程」(lean processes)(這也是《精益創業》[The Lean Startup] 書名的由來)。
將單件流原則應用於新領域通常可以產生巨大的效率提升。例如,一個深陷舊習的領域是建築與施工。一棟建築的建造或翻新是分一組離散且漫長的階段進行的。首先客戶「弄清楚他們需要什麼」,然後建築師畫出藍圖,接著規劃師審查藍圖,然後承包商建造整棟建築,最後審計員審查施工。
這簡直是瘋了。如果你從未建造過建築的任何部分,你怎麼可能知道你需要什麼樣的建築?如果你不知道不同材料對你的效果如何,你怎麼可能知道該選用什麼材料?
Lighthaven 的翻新方式與灣區基本上所有其他建造或翻新的建築截然不同。在翻新期間,我們的目標是在開始下一個房間之前完成一個房間。在每個房間完成後,我們會回顧哪些可行、哪些不可行、哪些部分花費的時間比預期長,以及哪些部分出乎意料地容易。我們的承包商不習慣這樣。我們需要大幅改變他們的運作方式,但我認為如果不是這樣,Lighthaven 就不可能成功建成。
Lightcone 的大部分工作應該目標是盡可能持續地交付,即使在該領域中單件流的樣子還沒有明確的先例。為了展示這種思考方式在實踐中的樣子:
當我秉持這種考量時,理想的工作坊是一系列的房間,每個參與者在一週的時間裡走過這些房間,每個站點都教給他們一些東西,並為未來的站點做準備。在白天的每一小時,一位新受教的參與者離開工作坊,緊隨其後的是另一個人,而另一個人則剛從起點進入。^([1])
每一位參與者都是所有未來參與者的學習機會。我們可以校準每個站點的效率和難度(如有必要,根據參與者進行調整),並且如果出現問題,我們會立即注意到。
不幸的是,群體效應(cohort effects)影響很大,因為獨自學習的體驗與共同學習非常不同,這似乎是實現這種理想工作坊的一大障礙。但我仍在思考也許有某種方法。
在許多方面,Inkhaven 是單件流在寫作行為上的應用。我不相信智力進步必須由需要數月或數年才能寫成的長篇大論組成。智力勞動應該每分鐘都在累積,革命性的洞見由數百個微小的變化匯聚而成。每日發佈使智力進步更接近單件流。
對於 Lighthaven 的活動租賃,長達一個月的準備和規劃時間也產生了巨大的低效率。理想的系列活動應該是一件一件地創建。當然,障礙在於人們的日曆和計劃,他們需要提前數週或數天控制自己的日程,這要求在上一場活動完成之前很久,就鎖定每一場活動的大部分內容。
單件流的應用也是 Lightcone 擁有一群「通才」的一個重要原因。專業化往往會滋生瀑布式的習慣。而一群通才可以共同將精力集中在交付當前需要交付的任何東西上,直到交付完成,然後重新調整方向。
- ^(^)Justis 在幫我編輯這篇文章時,親切地將其命名為「工作坊長蛇」。
相關文章
其他收藏 · 0