Skip to main content

軟體架構師 - 貝多芬

大部分軟體團隊的開發與協作的過程,
其實都跟交響樂合奏、樂團合奏、或者音樂製作 差不多,
都是一堆人一起完成一首曲子 (產品)。


學生時代學的是古典吉他 (或稱尼龍吉他)
經常有合奏的練習
也就是像管弦樂團那樣的吉他和奏團
社長會發團譜給所有人
團譜通常會十幾頁,至少五個聲部
包含主旋律、和聲、差音 (Fill)、低音部
大家就會分工,先回去各自練習
然後每個禮拜和奏練習,直到演出前。

這個過程類比到軟體工程
總譜大概就是產品規格、系統設計文件、系統架構
而每個聲部可以類比成軟體開發團隊的各個成員
有人寫前端、有人寫後端邏輯、設計資料結構、UI/UX ... 等

而樂曲是誰創作的?
其實以軟體開發而言,
創作樂曲的就是 產品經理 (PdM) 或者 產品長 (CPO)
或者 Product Owner (PO)
作曲的意思是只有旋律,不會有其他東西
所以就會由架構師或者系統分析師接手,
把主旋律以外的東西做包裝,也就是編曲的過程,
編曲的產出是總譜、或者現代編曲軟體的 MIDI Programming

以流行樂而言,有些部分會留白,像是間奏曲要有張力的吉他 Solo
這會留給吉他手發揮,對應到軟體開發,
就是軟體工程是可以依照需要的狀況,
選擇適當的 Solution 或者演算法處理。

歌曲製作過程,
就會讓各個樂手:吉他 Bass 弦樂 ... 等各自錄音
如果是現場演奏需求,則會給總譜,讓各自樂手去練習

軟體製作也是,
給予 API 規格 (Swagger.yaml)、系統設計文件
剩下的就是軟體工程師怎麼依照規格
用自己的武器 (樂器),把規格做出來。


開發過程常見的現象,也是實際的問題:

  • 成員:平常聽的音樂太少 (用的軟體太少)、缺乏節奏感、對樂器演奏技巧掌握不足 (系統、程式語言、框架)
  • 缺乏專業素養:像是看不懂譜、演奏技巧掌握度不足 (看不懂 UML、規格書、缺乏底層運作原理的理解)
  • 演奏過程,缺乏一個良好的指揮,控制整體的節奏與情緒 (#專案經理 PjM)
  • #產品經理 是 #作曲家,用音符堆砌想要呈現的故事、情緒、畫面,很清楚樂曲要怎麼鋪成。不過大多的產品經理 做的比較像指揮、或者樂團秘書 ...
  • #架構師 是負責的工作就是 #編曲,像是把 #愛你一萬年 這首歌從民謠版,編成 #搖滾版、#交響版、#藍調版、#瑞克版 ... etc,滿足演出的需求

任務的需求,
樂手來就是要可以讀譜,
然後依照演唱會歌手的歌曲
彈奏對應的歌曲。

軟體工程也是一樣
依照規格的需求,把功能實作出來,


用音樂跟軟體工程的比喻
我一直覺得很貼切
不過不太容易引起共鳴
甚至會引戰


貝多芬 是 產品經理 + 架構師


原始資料