個人Scrum敏捷開發轉型中的技術實踐

Scrum無處不在,說起Scrum敏捷開發框架,也許大家並不陌生,表面理解它其實並不複雜,但是真正用得好的公司並不多,我自己曾經的工作環境也依然沒有體驗過敏捷開發非常成熟的實踐過程,但是我依然推薦這種開發方式,不論是對於企業發展還是生活中的任意角落。不過我今天並不是談論企業中的敏捷開發,自己近半年的空窗期間,在努力嘗試個人的Scrum轉型。

如果想深入理解Scrum敏捷軟件開發,可以閱讀一下Mike Cohn的書籍,也可以關注他的推特等社交賬號,都會有很多意外的收穫。我們先來簡單看一看敏捷開發的整個框架是個什麼樣的(下圖出自網絡)。

這篇文章首先需要了解Scrum軟件敏捷開發的整個過程,這個框架是什麼樣的,否則可能不能理解接下去我寫的那些文字:)

那麼爲什麼要轉型,因爲曾經我在工作中都是以瀑布式開發爲基準的,當然也有少量公司項目比較龐大, 嘗試使用敏捷開發方式增量迭代,效果有好有不好,也是一個積累吧。對於自己的一些項目來說,也有涉及少量敏捷方式的,比如一些在國外平臺銷售的插件或者一些工具包,都多多少少用了一點敏捷開發的思維。因爲我沒有預期結果,甚至作爲一枚新人來說,沒有什麼完美的方案,只能放手去做,一點點收穫效果,不斷改進和迭代。

但是光是這些還遠遠不顧的,我還需要從一些開發方式上(比如測試驅動開發),技術選型上(比如框架、跨平臺、WebGL中的數學原理、算法等),書籍選擇上(比如工具類、大學科班教材類、傳記類等),思想邏輯上(比如變化和實踐、優先權、技術集合、團隊與導師、教練與研究員等),擴展更多的空間。

(一)個人面對敏捷轉型的一些難點

如果從表面去理解,Scrum敏捷開發框架在企業中也許正在做這些事情:需求管理,迭代規劃,迭代開發,站立會議,進度跟蹤,持續交付,評審與回顧。雖然這個鏈有不同的角色,但是往往角色在執行的過程中,會對運營、銷售、人力資源、財務甚至客戶產生影響,這就是所謂的變化會來的很快,結束狀態不可預知。難,代表敏捷模式不單純只是一種工作流,一種理念,它甚至還是一種策略,一種訓練習慣養成的方式方法,一種實時可變的角色扮演。

其實很多時候企業面對的敏捷轉型困難,可以從大方向上映射到個人身上,我從幾個方面分析自己這段時間面對的一些困難。這些困難其實也是按照序號逐層排序和由淺入深的。

1.意識上

首先對於一個人來說,不論是在職期間還是空窗期間(靈活就業或者自由職業),都有無數天在和自己的心理做鬥陣。掙錢,學習,考試,看書,運動,調節生活,娛樂等等,這時候,又來一個敏捷轉型?豈不是火上澆油。對的,因爲任何的”轉型“,勢必會有陌生和持久性學習,這個過程是非常非常艱苦甚至是乏味的,再嚴重一點可能是迷茫的。

主觀意識上,人都會排斥一些新事物,新技術,可能會覺得需要花費太多時間,去得到一個不能預期的結果。特別是一種軟件開發方式從瀑布式開發(需求分析、設計、編碼、測試、維護)到敏捷開發,將面臨各種坑,第一戰線絕對是自己的主觀意識。

牴觸、糾結、效果不明顯、無意義、理想化、理論化、悲觀、害怕...也許可以用一千個詞來概括自己的內心所想。這些都是意識上會面臨的困難。

繼續往下說,我對這種工作方式,學習方式,想達到什麼樣的預期結果,渴望做些什麼?一連串的思緒將如雪崩一樣襲來。

2.時間上

如果你是在職期間,那麼根據公司的一些計劃和安排,也許會督促你進行一些敏捷開發的實踐工作,當然,也許公司策略也會各種調整,也許不會採用這種方式,因爲可能不適合。曾經雅虎、salesforce等等都是敏捷轉型的大型實踐者,並且也經歷了失敗和成功,當然他們目標是全面轉型而不是試點行爲,最後也有很好的ScrumMaster參與,最終完成了轉型。

對於個人而言,時間是一個頭等大事。離職空窗期,你會有大把的閒暇時間去做自己的事情,這些事情如何安排,需要不需要參與到敏捷轉型中來?會不會耽誤學習,找下一份工作,或者面試準備,考研,職業規劃等等。這些是我要面對的時間管理問題。

3.引進新技術實踐

這個話題對於開發和設計界來說就非常明顯了,設計方面,你要學習PS,AI,C4D等等,還有各種雲平臺協作工具,各種交互研究,用戶體驗研究,不斷地練習,熟悉軟件,不斷紮實美術繪畫、視覺理論基礎,太多太多的迭代學習。

對於開發而言,比如前端開發,由最初的掌握一定的HTML,CSS,jQuery,到現在的Webpack工程化,自動化,單元測試,TTD,Node,Vue,React,Threejs,D3等等,每一年技術更新,框架革新,工程化工具演變速度之快,大家有目共睹。再如一些擴展性試驗,比如小程序,Taro,uni-app,Electron等跨端需求越來越多,要求前端開發者的技術也在不斷變化,學習計劃也在不斷更新。

雖然底層的基本功(計算機科學、數據結構與算法、高數、離散數學、WebGL等)不變,也需要個人花大量時間去學習各種流行的框架,特別是思想和邏輯的學習。開發中涉及太多的邏輯演化。你看,一下子這麼多的新技術實踐,你不頭疼?你不卷?自然也有人卷。

如何使用引進的新技術,如何規劃學習時間,他們是否符合敏捷開發中的需求迭代,是否符合我未來預期的工作計劃和職業規劃?哇哇哇~~ 真的,這也是一個難點。

4.試點項目和ScrumMaster

好了,說完了意識、時間和技術,接下去要如何嘗試轉型呢?選擇一個合適的項目,那麼這個項目是作爲自己的業餘練習還是做外包商業項目呢?不論是哪一種,都需要投入一定的學習和時間成本,還有金錢成本。

項目實踐用敏捷的方式去實踐,如果是公司可能會有導師,有管理者,有CEO,作爲個人來說,沒有教練團隊,也許我的ScrumMaster可能是書籍,也可能是客戶,也可能是自己的思想。

選擇“通常也是一個非常非常頭疼的過程。就拿職業、興趣來說,選擇人生追求,足以讓你在迷惘和前行的路途中走個五年十年幾十年。我算幸運的,雖然沒有什麼驚天動地的成績,也算是跟着自己的初心走了那麼多年,設計和開發,都是我的產品依託,都是我的技術路線,這是一個持久連續的路線,要遇到無數的未知和不好的結果。這不正好?敏捷的方式,可以讓自己避免太大的損失,逐漸讓自己的目標浮出水面,逐漸讓自己擅長的東西浮出水面。

(二)作爲個體的實施模式

實施之前,我們會根據ADAPT模型分析自己具備哪些條件。

ADAPT模型構成:意識(Awareness),渴望(Desire),能力(Ability),推廣(Promotion),傳遞(Transfer)

對於我個人而言,有幾個很明顯的瓶頸和自身條件,綜合歸納如下:

 

  • 科班的基本功(我的專業是旅遊管理,只不過不太喜歡做實體服務行業,曾經和現在,多次自修了原版譯本大學科班教材:計算機科學、數據結構與算法、設計模式、離散數學、美術專業基礎、透視學等)
  • 目前具備的能力(UI設計和用戶體驗研究、前端開發相關、流行框架偏React、後端比如PHP、健康管理等)
  • 時間(離職空窗期半年以上,這段時間會合理分配,當然我的自律能力也不算很強,但是也不差)
  • 生活成本(沒有工作期間,勢必要保證足量的超過1年的生活成本,否則也許一個小小的實驗,也會導致生活困難而亂了腳步)
  • 實戰空間(自己的居住地,學習地,辦公地,需要在自己的老家和其它城市之間做一個良好的調劑)
  • 目標規劃(整體我自己都是跟着初心走,也許是興趣做成了職業,也許是職業做成了興趣,都無妨,我有那個意識和自信去嘗試新事物)

 

總體衡量了自己的情況,我覺得嘗試一次更加全面的敏捷轉型,從自身做起,是沒有大問題的。經過以上分析,我覺得我自己應該全面轉型,而不是臨時的針對某一個小方面試點。

其實一定程度,我已經公開實施了一些敏捷轉型,自己嘗試使用一些沒有使用的技術,學習一些有趣的東西,加以實驗,比如製作一些跨平臺的軟件,使用一些新技術和框架嘗試提高性能和用戶友好程度。因爲我花了很多時間和成本,去做這些東西,面對漸進式的轉型過程,肯定會遇到一些困難,但是這已經是我長期的研究方向。

另外,我也不斷地提升自己的基礎能力,自學感興趣的大學教材(包括英文原版翻譯版教材),因爲這有不斷訓練自己的思維,產生肌肉記憶,才能對未來的風險做更好的評估,才能減少一些試錯成本。

 

(三)組織預期結果

 

做任何事都需要一個結果,當然一次比較困難的敏捷轉型也是一樣的,需要有一個度量方式去衡量自己的成果。但是這個度量方式並不是標準,也不會有一個所謂嚴格的標準。因爲本身敏捷過程就是持續化的,是長期的。

我把我的結果主要歸於一些軟件組織的審查,比如提交一個軟件,完成一個商業項目提交到市場售賣,按照國外的標準來說,我會從失敗多次到成功一次,然後成功兩次。因爲只有這樣,我才能知道我自己是否能在某個時間段內有能力去做到它。做不到怎麼辦呢?沒關係,我可以學習,經歷着無數年的探索,摸索到了適合自己的學習方式,這是我的一個很重要的信心來源。

也許你會非常看重最終結果,但是本身敏捷開發就不存在最終結果。它將是一個一直迭代的循環。是的,我也許是在推廣自己的一些學習和工作方式,雖然它並不成熟,但是我確實自己去做了,花了至少半年去訓練成一個“習慣”。

有些方面我達不到標準,沒關係,我通過不斷地漸進式學習方法,彌補一些缺陷,慢慢去適應這種改變。

願意改變是一種優勢,即使這意味着某段時間會使公司的某個部分陷入混亂。
——傑克 • 韋爾奇

這種改變對於個體而言,其實也可以映射出來。這對我而言可能要犧牲大量的時間和金錢成本,犧牲大量的就業機會,我必須面對這種風險,它對於我未來長期的研究方向和發展方向是至關重要的,它很值得

在不同的階段,要審閱自己給自己的交付,也可以說,其實每次commit都算作是對自己的一次交付,同時它也提高了自己在整個項目環節的維護熱情,開發熱情。同時,敏捷開發的觀念,要求很多環節都是“我的事情”,而並不是大家隔開悶頭自己做自己的事情,做完再交互,實際上可能項目的每一個方面,都是我的任務。面對Sprint,還需要考慮環境因素對自己的影響,如何審閱自己,評估自己的成果,如何改良,我想這些纔是最重要的敏捷提現。一個運用敏捷開發很好地企業,加班其實是很少的,對員工的體驗也是很好的,質量和效率也許還會大大高於非敏捷手段。

結語

雖然我並沒有參與過一個非常成熟的敏捷開發團隊,但是我覺得大家都有在嘗試,溝通,尋找問題,解決問題,而且這個過程不斷改良方法,改良標準,這是一個進步,持續的進步,我相信未來會慢慢熟悉它。

經過這一些思考,我將會再下一次Scrum探索中,寫出某一個階段某一個試點空間的方法論。也由此訓練自己的邏輯思維和提升學習的把控力,資料的查閱能力。我相信,每一次探索,都是值得的,每一篇文字,都是值得花時間去整理去分享的。我是ChuckieChang,我爲自己帶鹽:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章