軟件研發模式演變

 

 

太陽底下無新鮮事,今天是歷史的沿襲,沿襲之後的變革。

 

軟件的發展經歷了幾個歷史階段:

 

第一個階段:個人英雄主義

 

這是pc的時代,一個求伯君就可以完成wps,紅透半邊天,這個時代是技術強人的時代,是老虎的時代。這個時代的軟件代碼量小,開發成本也低,幾個人拿上槍就能上山打游擊。用戶最迫切的需求是從紙質進入計算機。

 

 

第二個階段:大魚吃小魚

 

這個階段的特點是小項目都紛紛向產品積極演化,初期的項目簡單針對某個功能實現,這個階段推出功能更全的版本,試圖通過更多的功能提供佔領市場。此時研發團隊也開始走向分工,需求/研發/測試等角色開始誕生。各類小公司被大點的公司整合或者自行滅亡。

 

 

第三個階段A:大項目時代

 

煙囪式發展的衆多項目問題非常明顯,各個項目很多功能重複,比如用戶管理,這個階段開始將煙囪打破,重新整合,一個項目就做好一塊功能。以我們公司的163項目爲例,早期的163是由業務受理,系統管理,認證,計費,webservice後臺等組成,後來就負責最核心的認證,計費剝離給了計費團隊做,業務受理剝離給了CRM做。

 

此時的研發已經和以前的研發完全不同,團隊人數衆多,不是一個兩個,也不是十個八個,各個項目融合爲一個超大的團隊,技術分類繁複,架構衆多,代碼規模也是百萬行單位了。

 

繞回來說說軟件危機,一個項目開工,隨着代碼越寫越多和人員流動,不被人瞭解和控制的代碼越來越多,產品的質量如何保證,困惑。

 

沿襲大工業時代的經驗,精細分工,重視頂層設計,貫徹執行力度。

 

用什麼來保證軟件質量呢?過程改進。

什麼是過程改進呢?將人員細分爲九大類角色:項目經理/系統架構/開發/測試/集成/數據庫管理員/需求/質量管控/配置管理,定義好每個人在項目的不同階段做不同的事情,完成提前計劃好的任務,併產出相應的工件,也就是產品,這裏的工件主要是代碼和文檔。

 

大型軟件的模型主要是迭代開發,每個迭代週期都一樣的經歷需求蒐集與分析,目標制定,設計,開發,測試等過程,並對整個過程進行監控和度量,提出改進方案,否則老是犯同樣的錯誤,那不就完蛋了。

 

CMMI最受人詬病的是狂多的文檔,以測試爲例,根據項目計劃編寫測試計劃,根據需求編寫方案,細化測試用例,需要寫清楚輸入數據(需要實際數據的例子),步驟和期望值,然後測試完成要有測試報告,對bug的數量,等級分佈等進行統計,提供給質量管控分析。

 

爲什麼要這麼做?一個人最多可以同時關注七件事,這裏的一個人是指的那種編寫vi的狂人,普通人最多可以同時關注四五件事,一個團隊十個八個人的話,每個人跟你說一下他在做什麼,因爲你並不需要關心所有人在做什麼,所以大致你聽一遍之後會有印象,但是如果一個團隊超過十個人以後,每個人都說一遍在做什麼,直接和你相關的可能就會超過四五項了,團隊成員的增長會導致溝通成本成指數級上升。如此衆多成員的團隊,爲了儘可能的避免歧義,只能通過技術文檔爲主,郵件,面談等方式爲輔的溝通方式。可以說,項目的成敗取決於溝通。

 

CMMI狂多的文檔是爲了解決幾個問題:

一是團隊的專業溝通,二是強化過程管控,三是爲了度量。

 

如果經歷過大項目時代,就會深深的覺得,地球離了誰都會轉,我是祖國一塊磚,哪裏需要哪裏搬,跟瘋狂旋轉的陀螺一樣,不停忙碌卻是在原地打轉而已。因爲過程是第一的,人只是一顆螺絲釘,大兵團作戰,你能力再強也就只能做好你本職崗位的事情。

 

 

第三個階段B:互聯網時代

 

我個人覺得互聯網時代和大項目時代是並存的,同處一個時代,但是大項目針對的是大客戶,而互聯網更多針對公衆客戶。

 

以前你可以想象到會在網上購物嗎,以前你可以想象網上相親嗎,現在有電腦有網絡就可以。

 

這個時代的研發體系,和大項目時代互相借鑑,大的規劃,大的頂層設計。但是已經有了太多的不一樣。互聯網時代更多的是公衆客戶,而不是傳統的大客戶,對於用戶體驗更加重視,以前迭代計劃確定後,一個月內如果沒有重大變故,都會封閉開發完成再發版,而在互聯網時代,這樣的迭代密度是不能滿足用戶要求的。

 

在這裏CMMI理論是否過時了?其實也不完全是,在這個階段,剪裁了過程控制,對於文檔工件的要求降低,對迭代頻度要求增加,大體上還是自頂向下的設計,只不過效率更高,速度更快了。團隊也拆的更小了,角色的劃分,不能再那麼細緻,但是大體角色的職能還在,只是有剪裁,各個成員要求儘可能一專多能,每個團隊都儘可能專注做好一件事。

 

 

第四個階段:移動互聯網時代

 

移動互聯網的精髓是什麼?我以爲是個人價值的凸顯,無論是用戶還是研發。

 

需求來講,以前是二八模式,80%的錢都是從20%的用戶身上賺取的,而現在更加重視沉默的大多數的需求,用戶羣定位更加精確,而且不是模糊的一羣人,是一個個具體的人的需求。小米爲例,成功的最重要的因素是,最大限度的與用戶零距離交互,重視每個人的想法和需求。衆多的米粉是小米最堅定的後盾和同盟。

 

研發體系也發生了徹底的顛覆,敏捷開發幾乎一夜就爛大街,雖然大家都未必清楚。但是有件事大家都知道,必須要儘快推出用戶需要的產品,速度比質量更加重要。

 

移動互聯網是草根生產力的解放,不再是上面說啥我就做啥,而是要徹底解放每個個體的生產力和創造力,要發出小嘍囉自己的聲音。

 

 

 

發佈了87 篇原創文章 · 獲贊 23 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章