敏捷開發(fā)是一個(gè)可以改變軟件交付方式的框架且效果十分驚人,但鑒于需要反復(fù)不斷規(guī)劃、測試、集成以及其他進(jìn)行中的開發(fā)方式,敏捷開發(fā)在某些情況下行不通。下文將對常見的敏捷開發(fā)失靈以及相應(yīng)的解決方案展開講解。
敏捷開發(fā)是一種迭代型軟件交付方式
敏捷開發(fā)的目標(biāo)是根據(jù)反饋來逐步構(gòu)建和交付軟件,而不是一次性交付整個(gè)解決方案。標(biāo)準(zhǔn)軟件開發(fā)生命周期(SDLC)和瀑布式開發(fā)等傳統(tǒng)開發(fā)方法已經(jīng)無法快速、高效地交付解決方案。耗費(fèi)數(shù)年完成的瀑布式開發(fā)項(xiàng)目在結(jié)束時(shí)所交付的解決方案,也未必能完全滿足當(dāng)下的用戶需求。每個(gè)IT部門和軟件開發(fā)公司都會遇到這個(gè)問題,這就是為什么在需要靈活性的項(xiàng)目中,敏捷軟件開發(fā)正在成為新趨勢。
敏捷開發(fā)包含四種主要角色:產(chǎn)品負(fù)責(zé)人、敏捷教練(ScrumMaster)、開發(fā)人員和終端用戶或業(yè)務(wù)團(tuán)隊(duì)。
- 產(chǎn)品負(fù)責(zé)人的作用是推動(dòng)解決方案愿景的實(shí)現(xiàn),他們需要知道建立哪些核心流程。
- 敏捷教練的作用是排除開發(fā)團(tuán)隊(duì)所遇到的障礙,并通過各種可能的方式提供協(xié)助。
- 開發(fā)團(tuán)隊(duì)包括軟件工程師、質(zhì)保團(tuán)隊(duì)和任何其他參與解決方案構(gòu)建的人員。
- 終端用戶是使用最終敏捷應(yīng)用的人。
敏捷開發(fā)失敗的五個(gè)原因
根據(jù)我與醫(yī)療保健、金融、教育、政府等垂直行業(yè)公司的合作經(jīng)驗(yàn),每家公司都對敏捷開發(fā)有著不同的理解。雖然每家公司都會根據(jù)自己特有的用戶群體來自定義流程,但他們總會犯一些常見的錯(cuò)誤。以下是進(jìn)行敏捷開發(fā)時(shí)的五大常見錯(cuò)誤以及我的避免方法建議。
- 缺乏信任
缺乏信任會扼殺團(tuán)隊(duì)項(xiàng)目,對工作環(huán)境會產(chǎn)生巨大的不良影響。由于涉及到大量機(jī)動(dòng)的任務(wù)和人員,再加上每1-2周就要交付新功能的壓力,在敏捷開發(fā)流程中必然會出現(xiàn)溝通不暢的情況。
因此,保持開發(fā)過程中的透明性十分重要。也就是說,所承諾的最后期限和交付內(nèi)容必須合理,讓每個(gè)人都感到他們在為一個(gè)共同的目標(biāo)而努力。
- 溝通不暢和任務(wù)分配不合理
敏捷教練需要為團(tuán)隊(duì)服務(wù),包括排除開發(fā)團(tuán)隊(duì)可能遇到的障礙、為產(chǎn)品負(fù)責(zé)人和其他相關(guān)方提供建議與輔導(dǎo),以及防止開發(fā)團(tuán)隊(duì)受到其他因素的干擾。
在一些項(xiàng)目中,我見過試圖支配團(tuán)隊(duì)工作的敏捷教練,他們事無巨細(xì)地管理所有活動(dòng)。這種領(lǐng)導(dǎo)方式不僅損害了團(tuán)隊(duì)的士氣、表現(xiàn)出不信任,而且還妨礙團(tuán)隊(duì)實(shí)現(xiàn)目標(biāo)。我也見過相反的情況,也就是敏捷教練對工作不聞不問,可能只參加會議,對團(tuán)隊(duì)的工作毫無頭緒,甚至一無所知。
敏捷教練應(yīng)該平易近人、能夠快速地意識到問題并及時(shí)解決。他們應(yīng)該了解正在構(gòu)建的技術(shù)并盡自己所能提供幫助。下圖展示了敏捷教練應(yīng)該如何工作:
圖1 敏捷教練對于管理互動(dòng)和團(tuán)隊(duì)來說至關(guān)重要。
- 范圍蔓延和領(lǐng)導(dǎo)不力
產(chǎn)品負(fù)責(zé)人需要具備相關(guān)領(lǐng)域的專業(yè)知識、了解技術(shù)和業(yè)務(wù)需求并制定產(chǎn)品愿景,其作用是對用戶反饋進(jìn)行把關(guān)、提供明確的指導(dǎo)并管理期望。該角色需要與終端用戶和開發(fā)團(tuán)隊(duì)互動(dòng)交流,指導(dǎo)大家開發(fā)出所需要的業(yè)務(wù)解決方案。
圖2 ?理想的產(chǎn)品負(fù)責(zé)人
在我最初接觸的一個(gè)項(xiàng)目中,客戶需要在2-3周內(nèi)投產(chǎn),并在用戶驗(yàn)收階段幫助修復(fù)bug。我們迅速解決了出現(xiàn)的bug,但發(fā)現(xiàn)很多用戶的實(shí)際反饋是對功能的請求。用戶在投產(chǎn)最后期限前的2-3周提交功能要求并希望都能夠得到滿足。產(chǎn)品負(fù)責(zé)人沒能管理終端用戶的期望,也沒有明確功能與bug的區(qū)別,只是將信息傳遞給開發(fā)團(tuán)隊(duì),并指望他們搞定一切,該項(xiàng)目的最后期限自然越拖越長。
產(chǎn)品負(fù)責(zé)人必須理解業(yè)務(wù)目標(biāo)并推動(dòng)項(xiàng)目愿景的實(shí)現(xiàn),同時(shí)還需要保持堅(jiān)定并明確管理用戶的期望。否則就連項(xiàng)目的第一階段都有可能永遠(yuǎn)無法完成,這就是范圍蔓延所帶來的影響。
- 項(xiàng)目過度復(fù)雜
一個(gè)項(xiàng)目越復(fù)雜,花費(fèi)的時(shí)間就越長,出現(xiàn)的問題也就越多。在處理復(fù)雜的需求時(shí),開發(fā)團(tuán)隊(duì)和敏捷教練應(yīng)盡可能一起規(guī)劃和設(shè)計(jì)解決方案,將復(fù)雜的需求分解成更小的需求并逐漸進(jìn)行迭代。
如果團(tuán)隊(duì)遇到任何障礙,或者敏捷教練注意到任何可能在將來成為障礙的問題,應(yīng)該提前提出并制定解決方案。我們必須清楚在迭代過程中,對應(yīng)用作出的每一個(gè)改變都是有成本的。
- 使用錯(cuò)誤的工具
有些工具專為敏捷交付而生,比如西門子低代碼!有了西門子低代碼,就相當(dāng)于有了所有用于敏捷迭代規(guī)劃和項(xiàng)目交付的工具。團(tuán)隊(duì)開發(fā)服務(wù)器能夠處理所有用戶故事和迭代。下圖就是一個(gè)用戶故事和迭代開發(fā)的示例。
圖3 當(dāng)前迭代用戶故事截圖
?
圖4 用戶故事的流程和燃盡圖
使用西門子低代碼更好地發(fā)揮敏捷開發(fā)的作用
西門子低代碼可以解決所有上述常見問題,是一個(gè)可以不間斷提升敏捷開發(fā)流程、加強(qiáng)敏捷開發(fā)框架的工具。產(chǎn)品負(fù)責(zé)人、敏捷教練、開發(fā)人員和終端用戶或業(yè)務(wù)團(tuán)隊(duì)都可以從低代碼中受益。
您只需通過團(tuán)隊(duì)開發(fā)服務(wù)器的功能即可跟蹤項(xiàng)目進(jìn)展,無需再使用電子表格或白板。西門子低代碼不僅使開發(fā)流程變得更簡單、更快速,而且還提供實(shí)現(xiàn)有效、敏捷項(xiàng)目管理的正確工具。
敏捷開發(fā)是整個(gè)團(tuán)隊(duì)的事情
總之,如果團(tuán)隊(duì)存在信任、有“理想的”敏捷教練和產(chǎn)品負(fù)責(zé)人愿意共同努力解決問題,而且能夠組合式使用正確的工具和方法來簡化流程,那么敏捷開發(fā)就會非常有效。每家公司的情況不同,都有自己的文化和IT架構(gòu)。公司內(nèi)部和團(tuán)隊(duì)成員之間的信任以及必要時(shí)的培訓(xùn)與支持,對于項(xiàng)目的成功至關(guān)重要。