一茵臭、MVP
????????MVP是Eric Ries所著《精益創(chuàng)業(yè)》這本書中提到的概念憔辫。MVP=Minimum Viable Product知举,意思是最輕量級的可行性產(chǎn)品瓷耙。 它的目的是驗證兩件事:一是產(chǎn)品滿足了用戶需求;二是產(chǎn)品能夠創(chuàng)造商業(yè)價值妻怎。在我的理解里MVP有兩個場景可以很好的應用壳炎,一是用戶不知道想要什么的情況下的MVP,二是用戶知道想要什么東西逼侦,但是認知不全面情況下的MVP匿辩,如下圖
在第一種場景下腰耙,客戶想要一個代步工具,我們可以先給做一個滑板車铲球,如果這就滿足了用戶需求挺庞,則不需繼續(xù)開發(fā),節(jié)省資源快速滿足需求睬辐;在第二種場景下挠阁,用戶想要一輛汽車,我們就得先把架構搭建起來溯饵,滿足汽車的基本構造侵俗,如四個輪子、發(fā)動機丰刊、駕駛艙隘谣,先交付用戶使用,若用戶滿意啄巧,則不需繼續(xù)開發(fā)寻歧,若不滿意,還可以繼續(xù)增加內飾秩仆、空調码泛、收音機等等增強體驗的功能,這也是節(jié)省資源快速滿足需求澄耍;所以MVP實質上是指利用最少的資源來得到最大的回報噪珊,這里的回報指的是經(jīng)驗證的認知 。
二齐莲、XP(極限編程)
? ? XP是一種敏捷痢站、高效、低風險选酗、柔性阵难、可預測、科學而且充滿樂趣的軟件開發(fā)方式芒填。從90年代初呜叫,軟件需求量激增,很多規(guī)則已經(jīng)難于遵循殿衰,很多流程復雜而難于理解怀偷,很多項目中文檔的制作過程正在失去控制,軟件交付開始變得困難播玖。XP就是在這樣的情況下誕生的,它是靈巧的輕量級軟件開發(fā)方法饭于,它跳出復雜的流程和文檔蜀踏,而是以輕量的框架和極限的思想為核心進行開發(fā)维蒙。
· 價值觀
· 溝通
? ? 小組成員未達到協(xié)作的目的,必須保持持續(xù)無間斷的溝通果覆,以此來避免文檔帶來的巨大溝通障礙颅痊。通過口頭的交流解決問題,提高工作效率局待。
· 簡單
? ? XP方法中提倡工作中秉承“夠用就好”的思路斑响,也就是盡量地簡單化,只要今天夠用就行钳榨,不考慮明天會發(fā)現(xiàn)的新問題
·反饋
? ? 反饋這件事是非常重要的舰罚,與客戶,與開發(fā)人員之間薛耻,測試人員之間等营罢,大家都應該及時反饋項目相關的事情,讓所有人知道目前的進度和遇到的問題饼齿,知道下一步該做什么饲漾,知道朝著哪個方向一起努力,以便于更好的相互配合缕溉,更好的溝通考传。
· 勇氣
? ? XP秉承敏捷的擁抱變化,有了變化就需要開發(fā)人員有足夠的勇氣去不斷修改和重構自己的代碼证鸥,然后去滿足不斷變化的需求僚楞,也可能會產(chǎn)生更多的bug,都需要有足夠的勇氣去承擔這個后果敌土。重新開發(fā)要敢于廢棄之前的努力镜硕,重構則是要勇于改變現(xiàn)狀,讓代碼脫胎換骨返干。
· 原則
· 快速反饋
? ? 通過更短的反饋鏈條兴枯,迅速地了解現(xiàn)在的產(chǎn)品是否滿足客戶的需求,驅動我們去更好的進行產(chǎn)品迭代和調整矩欠,把系統(tǒng)價值最大化提現(xiàn)财剖。同時也要求團隊成員之間及時和有效的反饋,使得團隊協(xié)作更加順暢癌淮。
· 簡單性假設
? ? 這一原則要求開發(fā)人員將每個問題都看得十分容易解決躺坟,也就是說只為本次迭代考慮,不去想未來可能需要什么乳蓄,相信具有將來必要時增加系統(tǒng)復雜性的能力咪橙,也就是號召大家出色地完成今天的任務。
· 逐步修改
? ? 任何問題都應該通過一系列能夠帶來差異的微小改動來解決,每次修改及時得到反饋美侦,決定是否滿足客戶的需求從而繼續(xù)往下進行产舞,避免一次改動過大,如不能一下滿足客戶需求會造成多次返工菠剩。
· 提倡更改
? ? 開發(fā)不息易猫,bug不斷,我們提倡以不同的解決方案去滿足不同的客戶需求具壮,每次更改都是在提現(xiàn)產(chǎn)品的價值准颓,不能守著最初的方法不敢去做任何改變,時代在進步棺妓,我們也需要不斷的通過更改系統(tǒng)去滿足這些進步攘已,要為隨時可能到來的改動做好心里準備。
· 優(yōu)質工作
? ? XP方法論中涧郊,貫徹的是“小步快走”的開發(fā)原則贯被,因此工作質量決不可打折扣,通常采用測試先行的編碼方式來提供支持妆艘,先明確驗收標準和測試用例彤灶,開發(fā)人員可以按照這些進行開發(fā),確保每次開發(fā)調整的產(chǎn)出都是可以上線可用的增量批旺。
· 規(guī)則
? ? 計劃
? ? · 編寫用戶故事幌陕。
? ? · 根據(jù)發(fā)布計劃制定發(fā)布時間表。
? ? · 進行頻繁的小規(guī)模發(fā)布汽煮。
? ? · 將項目分解成迭代搏熄。
? ? · 用迭代計劃驅動每個迭代。
? ? 管理
? ? · 為團隊提供專注開放型辦公空間暇赤。
? ? · 可持續(xù)的節(jié)奏心例。
? ? · 以站會開始每一天。
? ? · 團隊開發(fā)速度可度量鞋囊。
? ? · 讓團隊坐在一起止后。
? ? · 調整有缺陷的規(guī)則。
? ? 設計
? ? · 簡單原則溜腐。
? ? · 設定一個系統(tǒng)隱喻译株。
? ? · 在設計交流中使用CRC卡。
? ? · 使用Spike方法降低風險挺益。
? ? · 不要過度設計或過早添加不必要的功能歉糜。
? ? · 盡可能地重構代碼。
? ? 編程
? · 客戶緊密參與團隊協(xié)作望众。
? · 遵循編碼規(guī)范匪补。
? ? · 優(yōu)先編寫測試伞辛。
? ? · 通過結對編程構建生產(chǎn)代碼。
? ? · 一次僅限一對程序員集成代碼叉袍。
? ? · 持續(xù)集成始锚。
? ? · 選一臺機器專用于代碼集成。
? ? · 代碼集體所有喳逛。
? ? 測試
? ? · 所有代碼都必須有單元測試。
? ? · 發(fā)布前必須跑通所有單元測試棵里。
? ? · 發(fā)現(xiàn)一個Bug要增加一個單元測試润文。
? ? · 經(jīng)常性進行驗收測試并公布測試結果。
XP 和 Scrum 的核心區(qū)別
? ? 簡單地說殿怜,XP 更關注技術和工程實踐典蝌,而 Scrum 更關注團隊協(xié)作和管理實踐。這是我總結的二者核心區(qū)別头谜,其實很好理解骏掀。
? ? 極限編程是第一批敏捷開發(fā)方法中最具實效的一種。在各種敏捷方法中柱告,極限編程最為重視工程實踐截驮。
? ? 極限編程核心的測試驅動開發(fā)、持續(xù)集成际度、用戶故事等具體落地的實踐葵袭,給研發(fā)團隊提供了明確有效的指導,使他們得以隨時保持軟件處于可工作乖菱、可交付的狀態(tài)坡锡,使迭代交付高質量軟件成為可能。所以我們可以說窒所,沒有 TDD鹉勒,沒有持續(xù)集成的敏捷只停留于形式,不是真正的敏捷吵取。
? ? 極限編程的規(guī)則非常簡單禽额,采用極限編程很像在玩拼圖游戲,你會看到很多小片的拼圖海渊,每一個小片單獨看起來沒有意義绵疲,組合起來就會看見一幅完整的圖景。這些規(guī)則乍一看可能顯得幼稚笨拙臣疑,但在它們背后有著堅實的價值觀和原則支撐盔憨。