從sprint規(guī)劃的角度來(lái)看,在API之前構(gòu)建一個(gè)完整的用戶(hù)界面是錯(cuò)
我正在閱讀Mike Cohn的《敏捷評(píng)估和規(guī)劃》,其中提到不要按“構(gòu)建用戶(hù)界面”和“構(gòu)建中間層”這樣的任務(wù)來(lái)劃分,而是要專(zhuān)注于構(gòu)建一些東西,你可以通過(guò)“”來(lái)覆
解答動(dòng)態(tài)
僅構(gòu)建用戶(hù)界面原型通常不會(huì)降低風(fēng)險(xiǎn)。它可能會(huì)增加風(fēng)險(xiǎn),因?yàn)樗荒芴峁┯行У漠a(chǎn)品。更好的方法通常是在一次迭代中交付一個(gè)或多個(gè)工作特性,這是Mike Cohn建議的。不確定性是正常的,在工作的早期是一件好事。試圖過(guò)快地減少不確定性會(huì)導(dǎo)致比解決問(wèn)題更多的問(wèn)題,因?yàn)檫@會(huì)迫使團(tuán)隊(duì)在沒(méi)有足夠信息和用戶(hù)驗(yàn)證的情況下做出決策。交付風(fēng)險(xiǎn)有所不同,降低交付風(fēng)險(xiǎn)的最佳方法通常是以工作增量交付功能。
在構(gòu)建API之前構(gòu)建整個(gè)用戶(hù)界面并不是減少不確定性的唯一方法。另一種選擇是使用具有適當(dāng)保真度的線(xiàn)框和模型,甚至可以提高保真度,以獲得用戶(hù)的反?S氪瞬⑿,开发团队可以利用他们峨s沒(méi)Ы緱嫻牧私猓菇ù怪鋇墓δ芮釁,但重甸`欽返鼗袢∈菽P、API和算法。
隨著模型變得更加詳細(xì),涉眾的反饋也被納入其中,開(kāi)發(fā)團(tuán)隊(duì)可以迭代地改進(jìn)用戶(hù)界面。處理任何類(lèi)型的數(shù)據(jù)格式更改可能需要少量的工作,但是在一個(gè)架構(gòu)良好的系統(tǒng)中,視圖應(yīng)該于數(shù)據(jù)模型和API,只要這些數(shù)據(jù)模型和API具有必要的數(shù)據(jù),這個(gè)想法是,在每次sprint之后,您應(yīng)該有一些新的工作版本的應(yīng)用程序。每次迭代都會(huì)給產(chǎn)品增加一些有用的東西,這不僅僅是組織工作。
mike Cohn所說(shuō)的與垂直開(kāi)發(fā)和水平開(kāi)發(fā)之間的差異有關(guān)。您應(yīng)該嘗試垂直地構(gòu)建特性,這意味著可以遍歷應(yīng)用程序的所有層并供用戶(hù)使用。它可能不是全功能的,它可能只是一些基本的東西,但它是用戶(hù)可以使用并向您提供反饋的東西。然后,在下一次迭代中添加更多的功能,等等。但在每一步中,它都是對(duì)應(yīng)用程序所有層的練習(xí)。
當(dāng)您進(jìn)行橫向開(kāi)發(fā)時(shí),往往會(huì)出現(xiàn)這樣的情況:這個(gè)sprint我們做數(shù)據(jù)庫(kù),下一個(gè)sprint我們做服務(wù)層,下一個(gè)sprint我們做API,下一個(gè)sprint我們做UI等等。當(dāng)你這樣做的時(shí)候,你不僅冒著不得不做一些返工的風(fēng)險(xiǎn),因?yàn)槟阍诿恳徊蕉技僭O(shè)了一些事情,當(dāng)你整合的時(shí)候,你意識(shí)到你還有很多事情要做,或者你必須改變一些事情,而且反饋環(huán)越來(lái)越大,你需要等待更多的用戶(hù)對(duì)你正在構(gòu)建的東西提供輸入。
如果你首先構(gòu)建UI、減少不確定性和收集反饋對(duì)你來(lái)說(shuō)很重要,那么這不一定是一個(gè)問(wèn)題,只要你用心去做,意識(shí)到垂直和水平方法之間的差異。稱(chēng)之為發(fā)現(xiàn)階段,或者探索階段,或者原型設(shè)計(jì),或者調(diào)查階段,或者其他什么,只要知道你在做什么,讓用戶(hù)知道他們看到的不是一個(gè)有效的增量,因?yàn)橛脩?hù)界面沒(méi)有連接到任何地方去做有用的事情。
一個(gè)更好的方法是找出如何把用戶(hù)界面放在用戶(hù)面前收集反饋,同時(shí)投入最少的精力。像Invision這樣的工具可以幫助您做到這一點(diǎn),而無(wú)需花費(fèi)時(shí)間與開(kāi)發(fā)人員一起構(gòu)建真實(shí)的東西(這是一堆交互式線(xiàn)框)。一旦你收集了你的數(shù)據(jù),建立了你對(duì)什么是需要的,什么是風(fēng)險(xiǎn)較小的方法的理解,你就可以去構(gòu)建真正的東西了。這沒(méi)有多大意義,因?yàn)橄乱徊剑ㄍǔJ荙A)將無(wú)法啟動(dòng)任何這些任務(wù),直到所有這些任務(wù)都完成。因此,即使您將其拆分,任務(wù)組仍將被視為單個(gè)工作單元。
您所指的是創(chuàng)建一個(gè)類(lèi)似于原型的東西,為用戶(hù)/干系人提供他們可以使用的東西,檢查您對(duì)產(chǎn)品領(lǐng)域和目標(biāo)的理解。這項(xiàng)工作本身可以分為多個(gè)任務(wù),分別進(jìn)行測(cè)試和交付。但這與你的書(shū)中提到的問(wèn)題無(wú)關(guān)。在第一個(gè)場(chǎng)景中,整個(gè)任務(wù)應(yīng)該適合一個(gè)sprint。在第二個(gè)場(chǎng)景中,你可能正在處理一些更大的問(wèn)題。從sprint計(jì)劃的角度來(lái)看,這并沒(méi)有錯(cuò),但非常危險(xiǎn)。這是因?yàn)槿绻粋(gè)開(kāi)發(fā)人員后來(lái)發(fā)現(xiàn)了一個(gè)bug,你就必須從項(xiàng)目的那一方重新開(kāi)始,因?yàn)樵趕print計(jì)劃期間做出的決定,而且正如你所知道的,更改一個(gè)代影響一切。
考慮到這一點(diǎn),我猜這就是Mike Cohn提到不要拆分任務(wù)的原因,比如“構(gòu)建用戶(hù)界面”和“構(gòu)建中間層”而不是專(zhuān)注于構(gòu)建一些你可以發(fā)射“”的東西來(lái)覆蓋一個(gè)特性的所有技術(shù)層。
作為產(chǎn)品所有者,你可能在項(xiàng)目中遇到過(guò)相關(guān)的情況,如果沒(méi)有,安全總比后悔好,因?yàn)檫@樣的情況已經(jīng)發(fā)生了,專(zhuān)家們已經(jīng)得出結(jié)論,上述情況更好- End
免責(zé)聲明:
本頁(yè)內(nèi)容僅代表作者本人意見(jiàn),若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無(wú)關(guān)。本頁(yè)內(nèi)容僅供參考,請(qǐng)您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請(qǐng)咨詢(xún)專(zhuān)業(yè)人士處理。