1. 程式人生 > >1.序言,敏捷不一樣的開發團隊管理方法

1.序言,敏捷不一樣的開發團隊管理方法

事情 快的 必須 功能設計 危機 你們 編程 寫代碼 評審

敏捷開發系列文章目錄

敏捷開發在國內是不是只是一個理想化的工作環境?

經常有人問,你們搞敏捷開發工作量是由開發人員自己估的,而不是由經驗豐富的技術主管估的,他們自己肯定會把工作量估得非常大,那什麽時候項目才做得完?你們每天開那麽多會,怎麽不把時間放在好好寫代碼上面?一個叠代這麽短的時間既要做設計、又要編碼、還要測試,這麽急著做出的東西質量肯定不高。系統設計肯定得經驗豐富的老手做更靠譜。每當我聽到有人說這些問題,我就知道他肯定沒有真正的認識敏捷開發,如果真的有實踐過,自然就會發現這些問題根本就不是問題,只是杞人憂天而已。

技術分享

敏捷開發也快搞了快一年了,覺得應該把這一過程中的理解與經驗得好好總結一下寫下來,還有就是又有一個新團隊由傳統方法正在向敏捷轉型,所以這些經驗也可以幫助大家學習一下。

采用敏捷最直接的結果就是,開發產品的效率確實提升了好多倍對比傳統模式,為什麽這麽說,我們團隊10個人花了8個月時間開發完成一個系統並完成上線使用,而這個系統在一個朋友公司也有在開發,他們早一點開始,20-30個人花了2年多的時間還沒有完全搞出來,當然他們用的是傳統的開發方式。

傳統開發方式以前工作多年也都是采用它,當初也沒覺得它哪裏不好,反正大家都這麽做的,有問題也覺得正常,你覺得他是瀑布模式又不像,我覺得應該就是作坊模式吧,一直待得也是這種不大的小公司,確實比較像東莞那邊的小廠子小作坊,不像大公司那樣有太多的制度和流程,目標就是把當前的項目做好做完。中間也在外包工作做過幾個月,非常不適用,第一感覺就是太不自由了,連網都不能上就是按照文檔碼代碼就行了,而且要碼得一絲不茍,當初就覺得這種開發模式肯定不適合國內的軟件公司的。

什麽機會接觸到敏捷了,就是去年去了新公司,上市公司,本身是不做軟件的,準備從設備生成轉到行業服務,需要更多的借助互聯網、IT數據,所以新成立的團隊來做,本來就是從零開始嘛,沒有歷史包袱,而且上市公司又多金認識高國際化,所以直接把國外敏捷開發的理念引進過來,就請了有名咨詢公司幫助團隊建立起敏捷開發,所以就有幸開始接觸了最先進與最原滋原味的Scrum,為什麽說是原滋原味,因為後來也接觸了一些國內其它的敏捷咨詢團隊,好多都是根據國內情況本地化了,所以不是原滋原味了,比如改良後的敏捷沒有了估點的過程,而是直接按工時進行估算。

剛開始接觸敏捷時候就覺得這種方式不靠譜,因為太理想化,比如說老板接了一個項目規定在固定時間必須完成,不然這個項目肯定就沒戲,按照項目的工作量的話在正常情況下肯定是完不成的,按照傳統的方式就是老板動員大家在這段時間大家拼一拼,多加加班還是有可能完成的,當然也有可能是完不成的,那就得繼續加班到完成為止。而按照敏捷的方式就不是這樣處理了,按照團隊的速率估算結果完不成,那就得必須告訴老板,要麽增加叠代周期,要麽減少功能,因為給我這麽多量,但我的飯量就只有這麽大,那麽開始之前就一定得說清楚,而且只能這麽做,不能加班,因為長期加班會破壞團隊的習慣。所以在當時想來哪個老板會跟你討價還價,直接就壓下來了,這真的是一種理想方法而已,在團隊中是行不通的。

自己也是一直都有參與一線編碼的工作,我一直認為開發程序是一種腦力智慧,應該是一種很有樂趣的事情,而且剛開始也是體會過這種樂趣,後來工作久了深陷一個又一個的坑中,爬都爬不出來哪來的樂趣可言,程序員變成了碼農。後來嘗試敏捷後,就是它會營造一種環境,讓你又重新回到之前對於編程的那種樂趣。所以敏捷與傳統最大的區別就是工作時的環境完全不一樣,傳統是讓你忍過了一個煎熬,接著又要迎接下一個煎熬,而敏捷就是讓你感受到編程的樂趣,回歸到讓你用編程智慧來解決問題,而不是頭痛各種項目帶來的坑。

說道編程樂趣得好好說一下,從畢業實習出來到公司上班,一直從事醫療軟件開發至今已經10來年了,所以除了這份工作能夠養家糊口之外,自己對於編程也是出於熱愛,不然也堅持不到現在。這麽多年來,半路轉行的同學同事大把。剛從學校出來就馬上投入一線編碼,讓自己開發的功能客戶馬上就能用到是很興奮的事情,自己編寫的代碼能夠賣錢,系統商業化,覺得自己太牛逼了。能夠加入公司一開始就能參與核心功能的開發也是進入公司的時機巧,我們一起8個同事入職是由於公司遇到分拆的危機,雖然公司只有幾十個人,但是技術老總帶著一批骨幹跑出去單幹了,導致公司一下子空缺一批開發人員,然後就把我們招了進來,進來後就每人分配一個子系統,半個月來熟悉系統,然後去醫院支持上線,記得當初接觸第一子系統就是門診醫生站。那時候的人還是單純些,我們8個新入職的同事一起研究代碼、討論代碼、修改代碼,基本那段時間都是很晚才回家,但是沒有覺得很辛苦或不值得。因為大家都是新來的,所以沒有什麽新老員工的隔閡,交流起來沒什麽顧慮,玩玩一些問題可以討論半天,自己弄懂了一個什麽控件、什麽功能馬上分享給大家,所以在很短時間內大家的進步都很快。現在招聘一個新人培養半年都不一定能夠承擔起系統,但是不到一個月的時間各自都能鎮守一方。有時候想想到底什麽原因,是現在的小朋友太笨?肯定不是,人家比我們當前可靈泛多了。我覺得一是樂趣主導那種學習環境,再就是剛好遇到大量老員工出走的情形。現在的新人來到公司,確實感覺不到一點編程的樂趣,沒有學習的樂趣那麽他進步慢那就必然了。為什麽環境會變成這樣,就是因為原來的老人們覺得自己走來遇到的問題太多,然後就制定一堆制度來解決這些問題,慢慢的這些制度原來越多就形成了一種呆板壞境,而失去原來本該有的樂趣。比如現在新人進來一般都不會直接把新功能分配給他,因為沒有經驗擔心寫的代碼不行,到時候還是得重寫。甚至碰到極端公司,把開發任務像工廠流水線做鞋一樣,拆分成很多個部分,然後讓新手對著填空,而且每個任務都精確到小時,這樣按小時來核算你的工作量,月底工資績效跟這個工作量掛鉤,你說你在這種環境下工作還有什麽樂趣而言。而站在公司的角度確實控制了項目風險、控制了人力成本,但這家公司也就變得沒有創意、沒有沖勁,也不可能做得更大。後來加入的所有公司基本上都走入了這個怪圈,直到嘗試了敏捷開發一段時間後,才感覺到大家才有了一些編程的樂趣。敏捷這種思想不是一下子就改變了你認識,而是慢慢的慢慢的改變了你的習慣,讓你沖破之前的枷鎖,一點一滴的體會到編程的真正樂趣,從而讓團隊進入一種狀態、建立一種默契。說得確實有點玄,做到確實也不容易,而且我的這條路徑也不一定適合你,所以我就只是把我的故事講出來,作為一個引線讓你思考,從而找到你自己的方法。

技術分享

說到公司對待新人的方式,傳統團隊和敏捷團隊確實有很大的差別,傳統模式為了讓新人更快的上手,一般會給新人安排一個師傅帶著,讓師傅給新人制定學習計劃指導人家,由於師傅手上本來就有做不完的工作,一般頭個把月都是丟一堆文檔代碼讓新人看,然後試著給他安排幾個簡單的功能做做,最後發現新人做出來的東西不行,還得自己重新修改一遍,師傅就覺得帶人太麻煩了沒有幫到自己的忙,反而占用自己更多的時間,所以就搞得老人一般都不太願意帶新人,就算公司出政策給帶新人的師傅額外的補貼,但這種方式也是解決不了根本問題,新人的學習周期還是很長,基本上一年半載都難獨立承擔開發任務。而敏捷團隊不會這樣,沒有師傅徒弟,也不講究新人老人,大家在團隊中都是平等的,新人剛加入團隊就會跟大家一起進入叠代開發,根本沒有說先熟悉一段時間,只是說在領用故事的時候,新人只算一半的點數用來降低這個叠代失敗的風險。這樣新人一進來就有開發任務,一下子就進入一個主動學習的狀態,會主動向團隊成員的學習,團隊成員也會主動幫助他,因為他完不成,那就是整個團隊的叠代失敗,因為敏捷只考核團隊不會針對個人進行考核。這樣新人在這種環境下,一般經過2,3個叠代就會成長起來,適用團隊的開發節奏,如果3個叠代還沒有適用的話,那就是這個人可能不適合這個團隊。還有一個問題就是怎樣保證新人開發的功能不會出現質量問題,導致返工,比如新人不熟悉業務功能設計考慮不夠周全,不太熟悉開發框架代碼編寫不夠規範等,這些問題都會影響產品的質量,而敏捷開發最重要的目標就是保證產品質量,所以這些問題在敏捷過程中都有對應的解決辦法,比如設計問題會有設計評審,代碼問題有代碼評審,團隊裏的成員會在這些環節裏幫助你把關,總之你在團隊產生的東西都不是一個人的東西,都是整個團隊的東西,人人都會關心。

敏捷開發系列文章目錄

1.序言,敏捷不一樣的開發團隊管理方法