敏捷是什麼?這是我一直在思考的乙個問題,同時也在敏捷之旅2010成都站提出。這似乎是乙個不值得推敲的問題,敏捷就是「敏捷」。但為何某些實踐可以稱為敏捷實踐?方法學可以稱為敏捷方法學?是不是存在一根看不見的線把這一切關聯起來?
這讓我如此著迷,沒有什麼能夠比尋找答案更讓人著迷了。下面就是我的嘗試,肯定不完善,但即使是小小的幫助也是乙個進步。
「敏捷」是一種問題解決方式,是在問題本身或問題解決能力不能確定的情況下取得盡可能好的結果(近優解或更優解)的問題解決方式。
基本做法
1.
角色劃分
在敏捷問題解決方式中,問題提出者的作用得到強調。問題被按照問題提出者可理解、可檢驗的方式進行分解,問題提出者負責對分解後的單位問題進行檢驗。而問題解決者需要與問題提出者密切配合,共同進行問題分解和檢驗適應。
2.
迭代敏捷問題解決方式強調問題分解後的多次完成與反覆驗證。迭代是敏捷問題解決方式的基礎要素,也是對問題提出者合適的時間週期。在乙個迭代的單位時間內至少完成乙個由原問題分解而成的單位問題。
3.
問題分解與檢驗
敏捷問題解決方式是以問題分解與檢驗為中心進行推進的。在問題分解階段,以問題提出者為中心進行問題分解,包括優先順序設定,確保單位問題符合客戶理解與期望,不會破壞問題完整性。在單位時間末尾,問題提出者和問題解決者對問題完整性進行檢查,能夠得到問題反饋和問題解決能力反饋,雙方均可以在下乙個單位時間內進行改進。
4.
單位問題解決
敏捷問題解決方式重視單位時間內的「完成」。敏捷問題解決方式力圖保證將大部分時間用於解決單位問題。
複雜問題
敏捷問題解決方式針對複雜問題採用層層分解,逐級反饋。
1.
角色劃分
在面對複雜問題時,敏捷問題解決方式將角色劃分為多層次的問題提出者與問題解決者。這些多層次的問題提出者與問題解決者需緊密溝通與協作,共同解決問題。
2.
問題分解與檢驗
a)
在每一層次
依然是問題提出者與問題解決者的協作關係。依然是問題分解、問題解決和檢驗適應3個步驟。
b)
在層次之間
特點1.
人敏捷問題解決方式是以人為中心的問題解決方式。問題的解決與否依賴於人的檢驗。問題解決的過程依賴於人與人的溝通與協作。
2.
專注在單位時間內,作為問題解決者的個人是不可分解的最小單位。
3.
溝通與協作
問題的解決依賴於問題提出者與問題解決者的溝通與協作。
4.
行動派嚴格的時間盒控制,保證大部分時間應該放在問題解決上。
5.
檢驗適應
敏捷問題解決方式是以反饋為基礎的問題解決方式。在單位時間結束後,創造有效反饋。推進問題的解決,加深對問題的認識和增強問題解決能力。
軟體開發是問題本身和問題解決能力不確定的一種典型情況。而敏捷問題解決方式與敏捷宣言是相適應的,下面以敏捷問題解決方式來解讀敏捷宣言。
《敏捷宣言》中的4條價值觀:
1.
個體與互動 重於 過程和工具
在敏捷問題解決方式中,問題的解決取決於問題提出者和問題解決者的能力和他們之間的相互協作,過程和工具是相對次要的,只有在滿足前者的基礎上才有作用。
2.
可用的軟體 重於 完備的文件
問題解決的結果重於中間產物,敏捷問題解決方式不鼓勵將時間大量投入到文件的完備化,而應該投入到問題解決上。
3.
客戶協作重於 合同談判
軟體開發是客戶與軟體開發商共同解決問題的過程。客戶作為最關鍵的問題提出者,與問題解決者的協作是解決問題的關鍵。
4.
響應變化重於 遵循計畫
所有的**都僅僅是**,通過敏捷問題解決方式,我們可以適應變化並快速學習。
《敏捷宣言》背後的12準則:
1.
我們的最高目標是,通過盡早和持續地交付有價值的軟體來滿足客戶。
為客戶解決問題是軟體開發的最重要的目標。
2.
歡迎對需求提出變更——即使是在專案開發後期。要善於利用需求變更,幫助客戶獲得競爭優勢。
問題可能隨時會變化,軟體開發是以問題提出者為中心解決問題提出者的問題,因此重要的是解決問題而不是限制變化。
3.
要不斷交付可用的軟體,週期從幾周到幾個月不等,且越短越好。
檢驗適應是敏捷問題解決方式的核心方式,不斷以客戶可檢驗的方式交付可用的軟體。
4.
專案過程中,業務人員與開發人員必須在一起工作。
業務人員作為軟體開發的問題提出者,需要與軟體開發團隊(問題解決者)密切配合,促進問題解決。
5.
要善於激勵專案人員,給他們以所需要的環境和支援,並相信他們能夠完成任務。
問題解決取決於人的投入程度與狀態,激勵專案人員,為他們創造環境和條件,能夠有助於問題的解決。
6.
無論是團隊內還是團隊間,最有效的溝通方法是面對面的交談。
敏捷問題解決方式推薦進行面對面的溝通與交流,這是人與人合作解決問題的最好溝通方式。
7.
可用的軟體是衡量進度的主要指標。
只以單位問題的解決結果也就是完成作為進度衡量的指標。
8.
敏捷過程提倡可持續的開發。專案方、開發人員和使用者應該能夠保持恆久穩定的進展速度。
在敏捷問題解決方式中,良好設計的迭代與穩定的迭代進度是最有效的和最可**的問題解決方式。
9.
對技術的精益求精以及對設計的不斷完善將提公升敏捷性。
不斷追求更高效的解決問題,技術與設計是解決軟體問題的重要手段。
10.
要做到簡潔,即盡最大可能減少不必要的工作。這是一門藝術。
問題的解決不取決於解決方案的複雜性,而是源自於對問題提出者和問題本身的深刻理解。當然,問題解決方式本身也是重要的。
11.
最佳的架構、需求和設計出自於自組織的團隊。
問題提出者與問題解決者所組成的團隊是解決問題的最佳組合,發揮團隊的力量解決問題遠勝於不明情況的指手劃腳。
12.
團隊要定期反省如何能夠做到更有效,並相應地調整團隊的行為。
檢驗適應是敏捷問題解決方式的核心。
換個角度看敏捷2 敏捷軟體開發概述
如同前文所述,可以把敏捷看做一種問題解決方式。下面我們就從敏捷問題解決方式的角度解讀敏捷軟體開發。軟體開發是問題本身和問題解決能力不確定的一種典型情況。軟體專案起源於人的構想,隨著時間不斷變化。專案團隊對專案的認識隨時間不斷加深,成員能力不斷提公升,工作方式和過程改變導致團隊開發能力不斷變化。敏捷軟...
Django migrate報錯問題解決方案
python3 manage.py makemigrations 生成資料庫遷移檔案 python3 manage.py migrate 遷移資料庫 簡簡單單兩條命令就完成了django的資料庫遷移 但是今天一天的時間都耽誤在這了,一點都不誇張的那種,早上去公司討論需求之後,研究了一下需要更改一下資...
Powershell問題解決1
在powershell直接指令碼時會出現 無法載入檔案 ps1,因為在此系統中禁止執行指令碼。有關詳細資訊,請參閱 get help about signing 所在位置 行 1 字元 17 e test test.ps1 categoryinfo notspecified pssecurityex...