前一陣子在網路上讀到一些關於Agile Software Development的文章, 其中尤其以Scrum最引起我的興趣. 主要的原因是他的觀念跟我之前一直以來的開發作法有很多相似的地方, 只是我一直沒有系統性的把把過去的經驗作有系統的歸納整理, 只是很隨興的照著自己覺得比較快樂的開發方式下去開發引擎, 也不知道有Scrum這東西. 所以我就去買了一本Agile Software Development with Scrum來看, 這本書寫的不錯, 頁數不多, 而且很多作者過去的經驗來加以佐證, 我比較喜歡這種不講太多理論, 專注於實務經驗的書.基本上Scrum的觀念就是軟體的需求是一直在變的, 所以一般擬定設計之後就不能再改變設計的作法其實很不實際. Scrum的觀念是每一個開發專案有一個所謂的Project backlog, 這個backlog紀錄了所有這個project要完成的功能, 重點是這個backlog是永遠沒有截止日期的, 想要的新功能隨時都可以再加進去, 但專案負責人得為backlog中的每個項目加上優先權. 接下來的開發就是以所謂的sprint一直循環, 每個sprint以不超過30天為最好, 開發成員從backlog中選出可以在這個sprint中完成的項目作為sprint的目標, 每個sprint結束時, 整個專案就會增加一些新的功能. 由於在每個sprint期間, 開發成員只需專注於所挑選的功能上, 所以可以有效提高生產力. 而每個sprint完成時又可以立刻看到專案的成長, 有助於維持團隊的士氣. 如此不斷的循環, 一直推出新的build.
一個人開發引擎其實是頗為無聊的工作, 所以我之前總是以一個短期能達到的目標為單位來開發, 如此一來每隔一段時間就有一些東西出來, 比較會有成就感, 也裁不容易厭倦. 年輕的時候很能熬夜, 常常一個sprint都是以一天來計算的:). 現在體力比較差了, 引擎也更複雜了, 沒辦法這樣搞了. 之前每次引擎po出來的影片其實就是幾個較大的sprint的結果. 不過以前backlog只放在腦袋裡, 現在我打算將backlog在網站上po出來, 以免久了就忘了 :P
現在正在尋找有無好用的scrum工具可以有效的來管理backlog跟每一個sprint.
Scrum
Agile software development
Agile Game Development
Scrum Alliance
順便一提, Unreal Engine也是採用Scrum的方式來開發的喔.




