「人們有時候會認為工程或橋樑的建造與軟體開發是可以畫上等號的。」——《告別瀑布,擁抱Scrum》
很可惜的是,並不能畫上等號。
有人說兩者最大的差異在於「不確定性」。
這當然並不是說建造橋樑不具備「不確定性」,而是因為土木工程有更多需嚴格遵守的工程標準與規範,使得此種工程專案中的確定性高過於不確定性。
畢竟我們很少會聽到有橋樑蓋到一半時,忽然說要更換建造的位置、尺寸、材質、施工方法、橋樑結構⋯⋯(相信還是有,只是我見識不夠多。)
但在軟體開發,我們老是聽到開發到一半時,突然說要變更功能需求、應用情境、技術、架構!?
談到橋樑建造與軟體工程的差異,這也讓人聯想到 Waterfall 與 Agile 兩者的選擇。
我們並不是說 Waterfall 就絕對是過時不適用於軟體開發,關鍵還是回到「不確定性」。
如果你即將開發的軟體,是一個能夠像建造橋樑那樣,確定性高過不確定性,有各種標準與限制得以準確的框定軟體開發範圍與界線,那麼 Waterfall 依然是一個適合的好方法。
軟體開發是一項又硬又軟的工作,在本質上充滿著不確定性,因此我們必須尋求更具備可調適性、持續迭代、持續改善,以便能因應變化的方法。
你的團隊具備因應變化的能力嗎?你認同軟體開發與建造橋樑不能畫上等號嗎?