敏捷方法將項(xiàng)目分解為多個(gè)階段,在團(tuán)隊(duì)之間分配工作量。我們優(yōu)先考慮每個(gè)階段的持續(xù)改進(jìn),而不是完全在部署階段進(jìn)行更改。在每日scrum會(huì)議期間,團(tuán)隊(duì)成員不斷通報(bào)進(jìn)度。幾種典型的敏捷開發(fā)方法包括:Scrum、極限編程(XP)、功能驅(qū)動(dòng)開發(fā)(FDD)、自適應(yīng)軟件開發(fā)(ADD)、Crystal、動(dòng)態(tài)系統(tǒng)開發(fā)(DSD)和精益軟件開發(fā)等。根據(jù)要開發(fā)的產(chǎn)品/服務(wù)的類型來選擇方法。所有這些敏捷方法遵循一套專門的原則。本文著重介紹敏捷方法的五大原則。
1.對挑戰(zhàn)和變化持開放態(tài)度
敏捷方法側(cè)重于對軟件開發(fā)所有階段的變化迅即響應(yīng)。我們的團(tuán)隊(duì)必須了解項(xiàng)目在任何開發(fā)階段的情況。敏捷方法將任務(wù)和可交付成果分步迭代(iteration),以獲得這種高度清晰性。迭代須在較短的時(shí)間內(nèi)完成,通常是一到四周。確保時(shí)間表與分配給項(xiàng)目的總時(shí)間一致。
JIRA是一種能夠創(chuàng)建快速過濾器以幫助改進(jìn)代碼的工具。JIRA通過報(bào)告功能和自定義工作流程,讓用戶可以清晰地洞察敏捷流程。我們可以使用該工具來構(gòu)建、測試和發(fā)布軟件。
2.擁抱用戶意見
由于敏捷軟件開發(fā)方法采用倡導(dǎo)交流和響應(yīng)的方法,客戶放在優(yōu)先位置。每次迭代后應(yīng)經(jīng)常收集客戶的反饋意見,在此基礎(chǔ)上改進(jìn)產(chǎn)品。從用戶的角度來思考而不是預(yù)先假設(shè),可幫助我們開發(fā)更好的產(chǎn)品??蛻籼岢龅囊豁?xiàng)新功能可能會(huì)成為貴公司產(chǎn)品的突破點(diǎn)!
Sprints by Zoho是一款有助于該過程的工具。它使團(tuán)隊(duì)能夠輕松地評論代碼更改。我們還可以使用該工具收集產(chǎn)品反饋,并在開發(fā)的早期階段進(jìn)行更改。
3.促進(jìn)與可操作軟件的實(shí)時(shí)交互,以獲得更好的可視化和反饋
我們需要?jiǎng)?chuàng)建可用可操作的軟件,而不是理論表示。文檔確實(shí)在軟件開發(fā)中發(fā)揮了作用,但它僅用于記錄。如果您想從客戶和利益相關(guān)者處獲得洞察力,應(yīng)創(chuàng)建產(chǎn)品的小型工件。我們可能會(huì)質(zhì)疑某個(gè)方面,表明需要文檔來支持我們的主張,并向客戶給予保證。為了證明有必要將您在文檔中提出的想法得到實(shí)施,沒有比提供可操作產(chǎn)品更好的方法了!用戶與軟件進(jìn)行實(shí)時(shí)交互時(shí),用戶的理解和感知會(huì)發(fā)生變化。它提供了改進(jìn)的余地,并確保我們與客戶步調(diào)一致。比如說,您聲明用戶注冊時(shí)輸入弱密碼時(shí),您使用JavaScript在網(wǎng)頁上觸發(fā)警告。該功能在原型呈現(xiàn)中時(shí),可以幫助客戶直觀地顯示,并支持我們的主張。記住,文檔應(yīng)簡短準(zhǔn)確。
我們可以使用AdobeXd、InVision、Webflow和Framer等工具,在進(jìn)行后端編程之前創(chuàng)建原型。
4.有效溝通,以加快軟件開發(fā)
向團(tuán)隊(duì)成員宣傳有效的溝通做法可能比采用高端技術(shù)堆棧更有利于項(xiàng)目。敏捷軟件開發(fā)方法通過每日Scrum會(huì)議和結(jié)對編程等原則,確保團(tuán)隊(duì)成員積極參與工作。
每日Scrum會(huì)議用于從每個(gè)團(tuán)隊(duì)成員的角度通報(bào)項(xiàng)目狀態(tài)。它幫助我們?yōu)閳F(tuán)隊(duì)成員可能面臨的問題提出解決方案。比如說,如果測試人員沒有從開發(fā)團(tuán)隊(duì)收到可部署的代碼,測試過程就會(huì)滯后。對于測試團(tuán)隊(duì)來說,這是高優(yōu)先級任務(wù),因此必須制定計(jì)劃以彌補(bǔ)這一點(diǎn)。團(tuán)隊(duì)可以相互聯(lián)系和協(xié)商,以提出有效的解決方案。如果團(tuán)隊(duì)之間的溝通到位,可以更好地管理風(fēng)險(xiǎn)。我們可以幫助可能誤入歧途的團(tuán)隊(duì)成員!
結(jié)對編程是一種技術(shù),兩名程序員在同一個(gè)工作站上遠(yuǎn)程或面對面協(xié)同工作。一人扮演主角,另一個(gè)扮演配角。主角編寫代碼,配角在每一行代碼輸入時(shí)負(fù)責(zé)檢查。程序員須經(jīng)?;Q角色,以確保工作量均等。
Teams、Slack和Trello等項(xiàng)目溝通工具可以幫助團(tuán)隊(duì)之間或內(nèi)部的溝通。頻道創(chuàng)建、任務(wù)分配、消息傳遞和會(huì)議工具等功能提升了敏捷團(tuán)隊(duì)的協(xié)作體驗(yàn)。
5.注重質(zhì)量而非數(shù)量
雖然我們致力于按時(shí)完成任務(wù),但可能會(huì)在開發(fā)過程中忽視項(xiàng)目的質(zhì)量方面。我們可以提供符合行業(yè)安全性和穩(wěn)定性標(biāo)準(zhǔn)的軟件部分,以后可以進(jìn)一步更新和即興改寫軟件。比如說,如果您的登錄系統(tǒng)在2分鐘內(nèi)使用戶完成登錄,試著縮短服務(wù)器的延遲,從而縮短登錄時(shí)間。記住要保持切合實(shí)際的質(zhì)量目標(biāo)和標(biāo)準(zhǔn),那樣不會(huì)在緊迫的情況下浪費(fèi)時(shí)間、試圖實(shí)現(xiàn)過高的目標(biāo)。
Selenium、Soap UI和Apache JMeter等性能測試工具有助于根據(jù)測試用例來評估我們的工作,以確保符合質(zhì)量標(biāo)準(zhǔn)。
上述敏捷原則是根據(jù)我們選擇的具體方法、項(xiàng)目類型和業(yè)務(wù)需求來度身定制的。我們可以結(jié)合DevOps 實(shí)踐,進(jìn)一步改進(jìn)敏捷軟件開發(fā)方法。
原文標(biāo)題:The 5 Principles of Agile Software Development,作者:Fibonalabs