軟體開發項目管理經驗之敏捷(Scrum/Agile)

2020-12-15 鏞人隨筆

記得剛畢業的時候自己很單純,滿腦子「技術(而且只有核心技術)在身,走遍天下的思想」;因而當時花了大量的精力研究CPU架構,作業系統核心,編程技術等等。自己當初的技術屌絲狀態今天仍然歷歷在目!

當然,隨著工作經歷的增多,我對於軟體行業的看法也在潛移默化的變化著。今天小編就以一位資深的軟體從業人員的視角,來給大家介紹一下軟體研發項目的管理模式之敏捷(Scrum/Agile)開發。

我入行軟體領域的時候還是瀑布模式的天下。從市場部給出市場趨勢結果,產品部門給出產品設計文檔,研發團隊進行技術評估,反饋,溝通,確定產品最終設計;最後,導入研發團隊進行任務細化,切分,安排開發任務以及對應的優先級等等。這一套過程走下來沒有幾個月是完不成的!因為這裡面包含的不僅僅是單個部門的工作,各個部門對問題的理解差異以及心理期望各不相同,這些需要有大量的溝通,協調來統一產品方向。

粗略估算,單這些任務基本上就會花上幾個月的時間才能完成。而這些僅僅是一個項目的開始,因為這個階段僅僅是給出了產品的目標結果,對於實際的開發過程以及產品質量保證環節都還沒有開始。

研發團隊拿到經過技術評估後產品需求,需要根據開發工作的特點進行細化,拆分,分配到開發人員手中;而開發人員也需要進行一些基本的軟體設計:給出接口文檔,架構文檔等;也需要與測試團隊溝通好測試的各種case,避免後續測試存在理解上的偏差。最後才是coding,release,測試。

說了這麼多讀者是不是覺得有點跑題了?非也!我們是要先看到傳統的瀑布模式對於目前軟體行業的局限,才能能夠深刻理解美國人發明「敏捷」的根源。那麼軟體研發有什麼特點呢?尤其是網際網路相關的軟體研發呢?一句話:「研發速度跟不上需求變化!」這一點相信大家都可以很容易理解。軟體行業尤其是網際網路行業,機遇無處不在,市場也無處不在,就看誰能夠快速抓住用戶需求的痛點並迅速搶佔市場份額,俗稱「圈羊」。如果慢了半拍就相當於將機會拱手送人。因此,快速決策,快速研發,快速投入市場進行營銷就是企業尤其創新型網際網路企業的命門!

試想,網際網路企業繼續使用「瀑布法」開發軟體,那麼從需求變更提出,到最終上線運營,營銷,這個周期一般至少要1年左右(產品需求定案3個月,5個月研發,4個月修復bug)!而且周期越長,風險越不可控制!輸的可能就越慘!對於做deliver業務的企業也會失去客戶的新人,畢竟客戶花錢還是很緊著看成果的。

不得不說,歐美人的洞察力跟分析能力,創新能力還是很強的。針對於這些問題, 他們提出了顛覆「瀑布模式」的全新項目管理模式:「敏捷模式」(Agile)。

什麼是敏捷(Agile)?我接觸這個概念最初在德企,我現在也非常感激當初的manager能夠將這個先進的東西介紹給我們的研發團隊。為了便於圈外人士理解,我需要介紹一點有趣的事情。

橄欖球在國內不是很流行,但是在美國以及英國卻是十分受歡迎的一種體育運動(大家別覺得我跑題了,容我慢慢道來)這個體育運動的規則相對自由,可以推人,抱人,絆人等等,反正我們常見體育運動裡面嚴重犯規的行為很多在橄欖球裡面都是可以接受的,尤其是美式橄欖球,也叫硬式橄欖球(因為全身穿戴堅硬的盔甲,頭戴安全帽而知名,目的就是保護球員),得分的方式是計算球朝向對方球門前進的yard,或者射門進球。

由於項目規則十分自由,導致球員的衝撞,對抗異常激烈;如果一個球員拿著球,站在原地不動,基本就會被球員壓成麵餅了!如果拿著球跑動,那麼後面將有千軍萬馬追著你,跟你搶球!目的就一個:想盡辦法搶奪對方的球,避免對方抱著球向自己的球門前進哪怕一個yard!

誰拿到球,那麼誰就是整個團隊的核心,所有的成員必須時刻幫助這位球員抱著球前進,並時刻準備著接球,成為下一波進攻(每次一波進攻的陣營被成為Scrum)的團隊核心!也就是說整個團隊是沒有一個類似固定的前鋒,後衛的概念的,每個隊員隨時都有可能成為整個比賽的焦點。

談到這裡我們應該了解道,其實「敏捷/Agile」的目標是實現像橄欖球運動那樣,高效,快速,小步伐的接近目標。而後面我們要提到的Scrum就是「敏捷/Agile」理論的一種實現方法(也有許多其他的實現方式,在此不做討論)。

準確的說,敏捷(Agile)是一種理論並非一種工程實現的方法,而後面的Scrum才是Agile的一種實現方法。敏捷(Agile)的核心理念是:將複雜的項目周期(主要是針對於瀑布模型的周期過長問題)進行切分,使之成為既不是太長也不太短的項目小周期(太長了就退縮回瀑布模型了;太短了會影響各個團隊的工作效率),稱為「迭代」周期(橄欖球中球保持在一個隊員手中,傳遞到下一個隊員之前的時間),每個迭代周期的邊界時間點(球傳到下一個人手中的時候),允許需求變更(其餘的時間點不允許需求變更)調整研發團隊的開發任務目標,同時開發過程中不強調過程,流程,文檔等傳統觀念的細節(規則比較自由),而是強調可用軟體的輸出(球的向前傳輸以及進球);即一切工作的重心都要以可用軟體的交付為最高目標,其餘的事情都是可以降低優先級。

一句話總結:敏捷的核心是圍繞交付客戶滿意的軟體為目標的,所有的活動都要圍繞著這個主題進行。

下面我們來看看Scrum的運作方式。首先不是所有的團隊以及項目都使用Scrum管理,Scrum不是「萬能藥」,它是有局限性的,這一點要有清晰的認識。我們在此只是針對軟體開發項目來進行介紹。

首先,Scrum認為團隊是整個項目的核心資產。對於傳統的團隊(團隊人數過多,比如超過10人以上的大團隊;團隊人員素質不均的)不適合使用Scrum來管理,需要做相應的培訓,改造,轉型才可以成功。

Scrum要求團隊內的成員都是精幹的多面手。即每位成員無論是在技術的紮實度,廣度以及自我管理(時間管理,態度以及責任心)方面都是非常優秀的!因為Scrum在運作過程中每位成員隨時都有可能成為整個team的核心,即資源的調度者。我們應該可以想像一位憋足的資源管理者可以產生的後果吧?所以Scrum要求的團隊是精英團隊!

其次,Scrum適合項目周期緊,項目交付任務有明確目標的項目。比如,一個項目評估下來可能持續幾年甚至幾十年,那麼Scrum不適合;抑或是科研單位那種沒有明確目標的探索性質的項目也不適合使用Scrum管理。用我的話來說「Scrum是一個鋒利的短刀,適合快速的披荊斬棘項目;對於愚公移山這種項目,不合適!」

Scrum中相關的角色:

1. 團隊(負責把產品做出來,承擔研發責任;其實所有的一切都是為了讓團隊更加高效的輸出而存在的)

2. Scrum Master(整個團隊的老保姆,大到會議的主持,需求的變更,Scrum流程的實踐管理;小到團隊的開發環境不舒適,成員的情緒問題,開發測試設備等雜七雜八的都由這位負責)

3. Product Owner(產品需求提出方,以Backlog的形式給出,並定義開發任務的優先級,與研發團隊一起評估複雜度,對整個產品的業務成功與否承擔責任即ROI)

4. 其他相關人員(QA,UIUX等)

Scrum中的一些術語:

1. Sprint(衝刺)就是團隊的一個開發周期,就是常說的「迭代」

2. Product Backlog,PO梳理出的具有一定業務價值的工作任務,通常比較大,整個項目會被切分成許多Backlog並形成研發團隊的原始工作任務池。它有一個非常重要的屬性:優先級,這直接決定了哪些任務先做,哪些後做。

3. User Story(故事,我一直認為這個主流翻譯非常low,但我也找不到比這個好的翻譯了)與Backlog相比較,是團隊從技術的角度對Backlog的一種細化與分解並確認需求細節可投入開發的產物。User Story詳細定義了開發人員能夠執行的需求細節,以及質量的標準,複雜度等信息。

4. Task 是比User Story粒度更小的任務,不是所有的User Story都要分解成Task,按照實際需求來處理。

5. Sprint Daily Standup Meeting 每日的工作會議,不是為了匯報任務,而是要清除昨天的開發過程中遇到的問題以及今天要做的任務中存在的問題。

6. Sprint Planning Meeting Sprint開始前的計劃會議,決定下一個Sprint需要做的Backlog並進行分解形成User Story以及Task,形成可執行的任務

7. Sprint Retrospective Meeting每個Sprint結束後的會議用於總結上一個Sprint做的好的與不好的地方並給出改進調整措施。

8. Story Points由於開發工作分類不同(前端跟後端開發,Java與C++複雜度各不相同),造成同一個User Story的複雜度評估無法標準化(傳統的做法是 人/日)這種評估方法不夠客觀。為了抽象出不同勞動的複雜度,方便評估任務複雜度,做好風險控制,使用point作為無差別的單位做任務複雜度評估。通常可以將 1point=1.5 人/日計算即可

9. Kanban就是一個可以寫字的白板,用於在展會中管理當前Sprint的Backlog,User Story,Task的狀態,進度等。大致如下圖所示。

10. Burning Down Chart 燃燒曲線,用於管理任務的進度,工作的剩餘量的一張圖

11. Scrum軟體,用於方便管理人員管理Backlog,User Story,Task等工具

Scrum的運作框架如下:

Scrum/Agile並不要求所有採用這種模式的團隊嚴格遵守每一個原則,只要能夠高效,高品質的輸出可用的產品即可。現在比較流行的XP,Test Driven等開發模式也都可以與Scrum結合,達到更好的團隊管理效果。

本文為鏞人隨筆原創作品,侵權必究。註:文中圖片為網絡獲取,如有侵犯版權請及時溝通。

相關焦點

  • 「項目管理英文」敏捷項目管理法之一-Scrum
    Tips:今天分享的是項目管理英文,主題是:敏捷項目管理法之一-Scrum-Agile Method #1: Scrum,英文據www.brighthubpm.com,中文為本公號創建人浦亮元翻譯,正文1516字,如覺得不錯,歡迎分享給你的朋友們!
  • Scrum團隊如何選擇Scrum看板工具?
    Scrum 是一個用於開發和維護複雜產品的框架 ,是一個增量的、迭代的開發過程。在這個框架中,整個開發過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周(網際網路產品研發可以使用1周的Sprint)。
  • 譯文|來自敏捷(Agile)從業者的10大UX成功技巧
    125個從業者分享了他們在Agile(敏捷)項目中提升用戶體驗的經驗和成功故事。今年早些時候,我們讓UX Conference上的敏捷從業者分享了他們在敏捷項目中運用到的的成功秘訣和技巧。這一發現並不令人驚訝;畢竟,在敏捷宣言裡,個體和交互的價值高於流程和工具。良好的溝通在任何軟體開發組織中都是必不可少的,無論其流程方法如何。但是在敏捷環境中,合作尤為重要,因為它的交付時間短,並且有固定的時間限制。一些機構選擇採用設計思維的技巧,例如用構思和頭腦風暴來鼓勵團隊討論,並且打破那些阻礙有效溝通和團隊合作的隔閡。「合作是至關重要的。」
  • Scrum master:項目成功的關鍵角色
    隨著敏捷迅速成為了大多數公司的標準實踐,對scrum master的需求量開始變得很大。以下是對scrum master的角色定位、相關證書、期望薪資和職業機會的介紹。 Scrum是一個在軟體開發和其他項目中實現敏捷過程的強大框架。
  • 自從用了敏捷,天天在開會?4大Scrum會議如何才能有意義?
    你看,小到情侶互動,大至軟體開發,企業管理,我們都會遇到以下幾個終極問題:對方到底需要什麼? 而我們的大方向解決方案是不是達到了要求? (例如:怎麼理解「你不用來了」這個需求)我們的溝通是不是有效,問題是不是被及時提出並找到解決方案。
  • Scrum Alliance國際Scrum中文認證和敏捷教練職業發展體系
    你將了解Scrum和動手編程技巧,參與強化的工作坊,學會作為一個軟體開發Scrum團隊成員創造出可工作的軟體。CEC通過Scrum與敏捷轉型的現實挑戰來成功的指導組織。他們深入地了解Scrum實踐和原則,並理解在現實的Scrum組織內的實際經驗。獲得CEC認證能夠讓您幫助企業駕馭成敏捷組織的艱難過程。
  • Agile Scrum Master 敏捷教練專業認證招生通知
    EXIN Agile Scrum是世界上第一個將敏捷項目管理與Scrum過程框架相結合的認證項目。超過70%的敏捷團隊正在使用Scrum方法,因此敏捷項目管理和Scrum框架的結合成為當前最理想的管理實踐。使用敏捷方法的優勢包括:提高生產力、提高可見性、用專業的方式處理不斷變化的優先級。這些好處使得敏捷已經被廣泛的學科和組織採用,而不僅僅局限於軟體開發領域。
  • 詳解Agile Coach vs Scrum Master
    Scrum Master了解並體現《敏捷宣言》中闡述的敏捷價值觀和原則。Scrum Master培訓課程以填補現有技能空白,建立共識。Scrum Master 為了確保整個團隊都經過充分培訓,並按照Scrum Framework and agile practices進行工作。
  • 應用軟體的「敏捷開發」模式:從小米MIUI談起
    小米CEO雷軍曾表示,MIUI採用了敏捷開發(agile develolment)的模式,因此可以在短時間內完成開發,實現軟體快速迭代。用戶對MIUI這一ROM的質量或許見仁見智,不過,什麼是「敏捷開發」?作為一種相對新穎的產品開發模式,敏捷開發這一概念提出於2001年2月。
  • Agile還是Scrum,這可真是個難題!
    它們是對看似運行良好的東西的概括,是對大多數公司環境中滲透在「瀑布式」軟體開發中的官僚、僵化和層級思維的反應。在這裡我不會對瀑布化問題做詳細說明。現在只需記住,瀑布式軟體開發同敏捷開發的每個價值觀和原則都大相逕庭,因此通常不是很有效。
  • 良心推薦:十大免費開源項目管理軟體!
    【IT168 評論】很多企業在項目開發過程中都會遇到時間、預算、人員配比等各種問題,如果你是項目經理或近期打算接手一些小項目的程式設計師,這十大免費開源的項目管理軟體,你一定用得到。
  • 盤點10 大開源免費的項目管理軟體
    很多企業在項目開發過程中都會遇到時間、預算、人員配比等各種問題,一款高效的、良好的項目管理軟體必須具備快速的、強大的且包含:調度、成本控制、資源分配、文檔、協作以及溝通等功能。以下 10 款免費且開源的項目管理軟體,希望對你有所幫助!1、項目管理和缺陷跟蹤工具 RedmineRedmine 是一個開源的、基於Web的項目管理和缺陷跟蹤工具。
  • 網絡直播 | 敏捷項目管理與PMI-ACP認證培訓【3月27日開課】
    PMI-ACP認證驗證了從業人士理解、應用敏捷原則及在項目上實踐的能力。它與別的認證不同在於它要求敏捷培訓、敏捷項目工作經驗以及包含敏捷實踐、工具、技巧考試的結合。它同樣也結合了其他敏捷方法,包括SCRUM(敏捷開發)、XP(極限編程)和Lean Development(精益敏捷)。
  • 8Manage:敏捷管理的優缺點有哪些?
    敏捷管理的缺點  ▪ 對於某些軟體可交付成果,特別是大型軟體可交付成果,在軟體開發生命周期的開始階段,很難對所需工作量進行評估。  ▪ 對必要的設計和文檔缺乏重視。  ▪ 如果客戶代表不清楚他們想要的最終結果是什麼,項目很容易偏離軌道。  ▪ 開發過程中,只有高級程式設計師能夠做出所需的決定。
  • 敏捷項目管理|敏捷項目管理的概念
    敏捷項目管理的概念Scrum是橄欖球比賽的一個術語,意為靈活應對,具有敏捷之意。如今,項目管理的步伐越來越快,項目管理需要更靈活、更積極地響應客戶的需求,敏捷項目管理方法應運而生。敏捷項目管理是規劃和指導項目流程的迭代方法。與敏捷軟體開發一樣,敏捷項目是在叫作迭代的小型部門中完成的。每個迭代都由項目團隊審查和評判;從迭代評判中獲得的信息用於決定項目的下一個步驟。每個項目迭代通常是安排在相對短的時間內完成。敏捷項目管理適用於需求難以預測的複雜商務應用產品的開發項目。
  • 敏捷項目管理軟體,迅速找到最適合你的敏捷開發的管理工具
    2020-12-28 14:22:31 來源: 小仙 舉報   敏捷開發的管理工具
  • Agile已死 Agility長存?
    【編者按】在13年前,Dave Thomas與16位軟體專家聚集在猶他州的Snowbird, 一起創建並籤署了現在眾所周知的敏捷宣言。然而,隨著時間的流逝,Dave Thomas發現,「敏捷(agile)"已落入某些顧問/商販幫他們出售產品的一種工具,並非是用來進行高效開發和保證產品質量的一種方法理念。
  • 什麼是敏捷項目管理
    這幾天看了一本書,「敏捷項目管理」, 覺得書中的一些敏捷方法挺適合現在快速迭代的產品,接下來會挑選一些我認為有價值的東西分享給大家。首先了解下什麼是敏捷項目管理敏捷技術萌芽的產生已經有很長一段時間,最早可以回溯至1930年代沃爾特·休哈特在項目質量方面的計劃-執行-學習-行動(PDSA)方法。2001年,一組軟體和項目專家聚在一起討論他們項目成功的相通之處。
  • UX設計師在Scrum敏捷團隊中工作面臨的六大挑戰
    譯者注釋:Scrum通常用于敏捷軟體開發,它同樣可以用於運行軟體維護團隊,或者作為計劃管理方法。有些人認為,把敏捷UX設計與敏捷發獨立開來或許會更好。並且敏捷UX設計應該在敏捷開發之前執行。也有一部分人認為敏捷UX設計應該與敏捷開發分成兩個Scrum並列進行。另外還有一部分人認為,UX設計師、開發和測試人員應當作為Scrum團隊的一個整體,所有工作同時進行。
  • Scrum:兼顧計劃與靈活的敏捷開發
    當天還會召開回顧會(Retrospective Meeting),對本次迭代的成功與失敗之處做出總結,並在以後迭代中進行改進。團隊成員包括產品經理、開發人員、測試人員、前端開發、UED等。團隊成員最好都是在項目的一個sprint中是全職的, 在一個Sprint中成員不容許更換。在項目範圍內有權利做任何事情已確保達到sprint的目標;向Product owner演示產品功能。