|
對于軟件開發(fā)領(lǐng)域來講,變更始終是最讓人頭疼的東西,大家對于如何消除變更,如何控制變更,提出了很多很多的理論與方法。無奈變更這東西就像是個打不死的小強,倔強的與軟件開發(fā)一起生存了半個多世紀,到了現(xiàn)如今的網(wǎng)絡(luò)時代,不但沒有被壓制住,反倒更加猖獗了。那么在小強最繁榮的游戲圈里面,大家是如何面對變更的呢?
整體而言,游戲行業(yè)(尤其是網(wǎng)絡(luò)游戲行業(yè))對于變更是又愛又恨的,很糾結(jié),很痛苦。因此在網(wǎng)絡(luò)游戲行業(yè)中,變更管理也不是簡單的放任或者控制,而是要權(quán)衡各方面的因素,讓變與不變維持在一個平衡點上。一句話概括其管理方式就是:胡蘿卜+大棒政策。
游戲公司中對于變更的兩種意見
主變派:策劃、制作人;觀點:變化乃游戲生存之本
變化是網(wǎng)絡(luò)游戲生存之根本,大家評判一個網(wǎng)絡(luò)游戲發(fā)展勢頭的最重要的標準有兩個:在線人數(shù)與更新頻率。一個更新頻率趨于變緩的游戲,基本上可以說是快進入消亡期了。追逐玩家們不斷變化的口味,引領(lǐng)游戲圈的新潮流,創(chuàng)造更高的吸金效率,這些都是以不斷的變化為基礎(chǔ)的。
因此,游戲必須變。不讓游戲發(fā)生變化,就等于是要了游戲的命。就算是限制變更,也相當于扼住了游戲賴以生存的咽喉。
不變派:開發(fā)團隊,項目經(jīng)理;觀點:變化是浪費,是隱患
說到底,游戲還是個軟件,單機游戲也好,網(wǎng)絡(luò)游戲也好,無非都是運行在計算機上的軟件。變更對于軟件開發(fā)而言,災(zāi)難性的,這一點所有軟件開發(fā)人員都深有體會,變更會導(dǎo)致大量的重復(fù)工作,嚴重影響開發(fā)進度;會對已完成的所有工作產(chǎn)生沖擊與影響,帶來更多的不可預(yù)期的Bug;沒有被良好重新設(shè)計的變更,甚至?xí)苯油{到軟件構(gòu)架的穩(wěn)定性,為將來埋下極大的隱患,等等。這些軟件本身的問題,同樣也適用于游戲開發(fā)。
更要命的是,頻繁的變更會讓開發(fā)團隊感到強烈的挫敗感,自己辛辛苦苦做好的東西,沒過幾天就被徹底改掉了,感覺自己就像是做了很多沒有用的東西一樣,長此以往,開發(fā)團隊將會士氣受挫,導(dǎo)致開發(fā)效率低下。
看來矛盾是不可避免了。那么到底聽誰的呢?聽策劃的,還是聽開發(fā)的?按照大自然物競天擇的自然規(guī)律來判斷的話:誰強,聽誰的。
誰更強?策劃,還是程序?如果我在這里挖個坑,蓋個樓的話,邀請大家來評價一下的話,我相信會相當?shù)幕鸨?/p>
實施證明,策劃與程序,都很重要。
變更的分類,哪些可以變?哪些不能變?
如果我們根據(jù)變更是否會對開發(fā)工作產(chǎn)生影響來對游戲需求變更進行分類,我們可以整體上分為兩種變更:1.對當前的游戲開發(fā)工作產(chǎn)生直接影響;2.不會對當前的游戲開發(fā)工作產(chǎn)生直接影響。
當前的工作,是指正在開發(fā)、測試、美術(shù)人員手上處理,或者進入到當前迭代周期內(nèi)待處理的工作。發(fā)生直接影響,則是指會打斷當前正在進行的開發(fā)工作,比如一個游戲需求:玩家自定義聊天頻道功能,現(xiàn)在這個需求已經(jīng)到了程序手中,開始編寫代碼了,這時候如過策劃人員發(fā)起變更,就會對當前工作產(chǎn)生直接的影響。而如是另一種情況:這個需求目前還在策劃階段,還沒有送到程序員與美術(shù)人員的手中,這時候策劃人員發(fā)起需求變更,不會對當前的開發(fā)任務(wù)產(chǎn)生直接影響,因為現(xiàn)在還根本沒有人在開發(fā)這個功能。
如果我們仔細分析一下程序人員反對變更的理由的話,我們會發(fā)現(xiàn),其實程序人員僅僅是反對會產(chǎn)生直接影響的變更,而對于那些不會產(chǎn)生直接影響的變更,則不是很反對。那些不產(chǎn)生直接影響的變更,雖然也會對現(xiàn)有的工作產(chǎn)生一些間接的影響,但是影響不會很大,這個問題我們會在后面來討論。
胡蘿卜+大棒
基于上面提到的變更的分類方法,我們可以得到這樣一個變更管理的方法:
當一個需求(或者策劃案)還處在策劃階段,還沒有被送去開發(fā)與實現(xiàn)的時候,我們允許這個需求發(fā)生改變,甚至允許它發(fā)生任何的改變,沒有任何限制。而一旦這個需求被送去開發(fā)與實現(xiàn)了,那么我們將不再允許這個需求發(fā)生任何改變,需求與設(shè)計將會被鎖定,開發(fā)人員將會按照鎖定的版本進行開發(fā)。
如果在開發(fā)過程中,策劃人員實在忍不住要提出變更,那么他僅有兩個選擇:
1. 要求項目經(jīng)理徹底中斷掉該需求當前的開發(fā)工作,將該需求從當前的開發(fā)列表中取消,待其將需求變更修改好后,再重新納入到下一輪開發(fā)計劃中;
2. 等待已經(jīng)送交開發(fā)的需求開發(fā)完成,在已經(jīng)完成的基礎(chǔ)上提出修改(作為一個新需求)并納入到下一輪的開發(fā)計劃中。
當一個需求被完成后,如果策劃人員需要對已經(jīng)完成的內(nèi)容進行變更,那么他需要提出一個新需求,就叫做“對自定義聊天頻道修改”,將這個需求納入到需求庫中,并要求項目經(jīng)理納入到接下來的開發(fā)周期中,作為一個新的開發(fā)任務(wù)來處理。
那么以上的假設(shè)是否可行呢?有沒有人真的這么實踐過呢?答案是肯定的,敏捷開發(fā)方法論(不論是Scrum與XP)都是在以這種方法在管理需求變更,實踐的結(jié)果也是相當不錯的;另外,據(jù)我接觸的游戲公司中,也有一些公司在采用類似的方法來管理變更(金山的一些項目組就是這么做的,效果很好)。如果想更多的了解敏捷式變更管理,可以參考Ken Schwaber伯伯的書:《Scrum敏捷項目管理》(Agile Project Management With Scrum)
以上的做法,基本上滿足了策劃與程序的不同需求:策劃需要變更,開發(fā)不需要變更。開發(fā)人員應(yīng)該對這個方法很滿意,既然變化是勢不可擋的,但是只要不會直接影響當前工作,也是完全可以接受的;但是策劃人員心里還是有一絲不爽:在漫長的開發(fā)周期內(nèi)不能變更,是否太不人道了?
應(yīng)用正確的開發(fā)模型
網(wǎng)絡(luò)游戲開發(fā)應(yīng)該是有周期性的,短迭代周期的增量式開發(fā)是比較好的開發(fā)模型。瀑布模型肯定是行不通的,如果還有公司在用瀑布模型開發(fā)網(wǎng)絡(luò)游戲,唉,只能默默的祝愿他們一路走好了。長周期的迭代(半年一個周期)也是行不通的,這倒不是這種方法本身有什么問題,而是太長的迭代對于這個快速變化的花花世界來說,太痛苦了。
但是在我們訪談記錄中,卻發(fā)現(xiàn)很多游戲公司居然沒有任何開發(fā)模型,完全是一種混沌的開發(fā)方法,買來一個現(xiàn)成的游戲引擎,想到什么就開發(fā)什么,感覺做的差不多了就打個包上線,沒采用任何開發(fā)模型,沒有什么明確的開發(fā)周期,一切都是憑著感覺來。這是一個很危險的事情,很多這樣的公司,在游戲上線以后,會發(fā)現(xiàn)這個游戲制作工作徹底陷入了一團糟的境地,任何局域性方法都無法提供有效的幫助,最終公司進入一個死循環(huán),決的辦法也變得很殘忍:要么死掉,要么徹底改革。
任何的針對具體軟件開發(fā)管理問題的解決辦法,都是要在軟件開發(fā)模型的大框架下才能起效果的。我們不可能把瀑布模型中制定計劃的方法用在敏捷開發(fā)模型下,我們也不能把打牌估算的方式用在瀑布模型中,因為這些具體方法都是在具體的開發(fā)模型的框架下,才具備了生存的條件。就像生態(tài)系統(tǒng)一樣,熱帶雨林里的鱷魚,放到沙漠里面,肯定活不下去的。所以如果一個游戲公司連基本的開發(fā)模型都沒有引入的話,那么就不要考慮變更怎么管理了;就像在真空中任何生物都無法生存一樣,在沒有開發(fā)模型的環(huán)境中,任何開發(fā)管理方法也都無法取得效果。
所以,上文提到的這種這種需求(策劃)變更管理方法,是要在敏捷開發(fā)的大環(huán)境下,才能夠起作用的,在瀑布、長周期的迭代式開發(fā)模型中,都不會有啥正面作用。
迭代周期的選擇
一般的共識是這樣的:相對較長的Sprint迭代周期,能夠有效的提高開發(fā)效率。因為一個Sprint周期中,有些工作是不能被省略的,如Backlog的整理、估算、計劃會、評審會與反思會、代碼集成、測試、打包等,這些活動一般都要占用不少的時間,越長的Sprint周期,這些活動所占用的時間比例會越少,為開發(fā)人員留下的整塊開發(fā)時間就越多,工作效率也越高。
而Sprint周期越短,對于需求變化的響應(yīng)速度就越快。人們對于未來變化的把握能力其實很弱,越短的時間,把握越強,考慮的也越詳細,太長時間以后的事情(如2個月以后),則基本沒有什么把握能力了。
Sprint周期的選擇,就是開發(fā)效率與響應(yīng)速度之間的一個平衡。
一般在開發(fā)期的游戲,會選擇相對較長的Sprint周期,如1-2個月左右,這時候策劃相對比較明確,還沒有引入玩家與運營反饋,需求變更相對較少,選擇相對較長的開發(fā)周期能夠保證開發(fā)期的游戲開發(fā)效率,爭取盡早達到上線標準。這時候也希望策劃團隊能夠盡可能減少不確定的變更,如果一個功能或玩法沒法確認真的比改變前更好,那么就不要貿(mào)然提出改動,等到上線之后聽到玩家的反饋后再提出,能節(jié)省不少工作量。
而從游戲上線封測開始,Sprint周期就開始逐步縮短,以適應(yīng)逐漸增多的Bug、調(diào)整與變更,在游戲正式運營后,一般都會將Sprint周期控制在1-3周左右,一般都是與游戲的更新周期保持同步。從管理的角度來說,為了適應(yīng)更短的Sprint周期,很多管理上的規(guī)章與流程也要隨之相應(yīng)的簡化,以適應(yīng)高相應(yīng)速度的要求。
產(chǎn)生間接影響的變更如何應(yīng)對
有一些變更雖然不會對當前的開發(fā)工作產(chǎn)生任何影響,但是卻會在將來對開發(fā)工作產(chǎn)生一定的影響,如一個變更會導(dǎo)致我們對當前的游戲構(gòu)架進行調(diào)整,那么這個變更將會在未來產(chǎn)生相當大的工作量。那么我們是否在當前的工作中考慮這些存在著潛在影響的變更呢?
it知識庫:網(wǎng)絡(luò)游戲開發(fā)中的需求變更管理,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。