圖片來源:Matt Blodgett Blog
"A Walking Skeleton is a tiny implementation of the system that performs a small end-to-end function. It need not use the final architecture, but it should link together the main architectural components. The architecture and the functionality can then evolve in parallel." -- Alistair Cockburn
英文我看不懂,所以我請 ChatGPT 把它翻譯成了中文:
Walking Skeleton(行走的骨架)是系統開發過程中的一個概念,它是一個小型的系統實現,可以執行一個小而完整的端對端功能。這個功能不需要使用最終的架構,但它應該能夠連接主要的架構組件。而且架構與功能要可以並行的發展。
還是不知道「行走的骨架」到底是什麼阿,這段話有點太抽象了
迷之聲:先來聽個故事吧,我們來看看在沒有 Walking Skeleton 會發生什麼事
開發人員拿到需求後直接開始寫功能,某天功能都寫好了要上線了,發現某某功能無法在正式環境運行,花了好長的一段時間才好不容易找出了問題並且修正。
好不容易解決之後又過了幾天,客戶突然有個需求,這是一個必須要在正式環境才能實現的功能,因為是要呼叫客戶的內網系統,開發人員 A 順利的完成了這個功能,這個功能也確實的正確運作。
又過了幾天開發人員 B 在開發環境寫好了一個功能,測試完畢後就直接將程式上傳到了正式環境,也因此開發人員 A 寫的功能被覆蓋掉了,A 感到非常的憤怒與懊惱,他必須重新花時間再寫一遍一模一樣的功能,客戶要非常的生氣,功能突然不能使用,業務也不爽了因為被客戶臭罵了一頓,老闆也不高興因為錢錢沒賺到。
在一個沒有組織架構的清況下開發程式是一件非常混亂和耗時的,不只會發生以上狀況,還有可能會導致功能重複開發、花費大量的時間在部屬和同步程式、修改或新增的功能變的非常困難(軟體寫成硬體)、問題常常在最後一刻才發現(人在非常緊急的情況下是很容易犯錯的,在這種情況往往會選擇不考慮後果的方法迅速解決眼前的問題,從而導致後面更嚴重的問題)。
我們應該要在開始開發之前就先把要用到的東西準備好,為了幫未來的自己省時間,也為了讓軟體能持續是軟體,客戶越開心 產品就能活的越長久,錢錢也就賺的越多,老闆就越開心,開發人員也越開心。
在一開始就要把開發和部屬環境架好,利用 CI/CD 將兩者串起來,並且用一個最簡單的功能來驗證這些工具是否正確運作,而且避免造成後續的問題,要將開發規則寫成白紙黑字,一起加到版控之中,因為這些架構、規則與功能都是會持續改進的。
Walking Skeleton 簡單來就是這個會持續改進的規則、架構與功能,從一開始骨瘦如柴到後來的有肌肉皮膚的樣子,甚至未來會長出翅膀也說不定!