一切皆可復用

作者: 張傳波  來源: UML Online  發布時間: 2014-10-07 18:10  閱讀: 5107 次  推薦: 28   原文鏈接   [收藏]  
摘要:人類文明不斷地進步,并不是現在的人比古代的人要聰明,而是我們能不斷地“復用”前人的知識、經驗。你能不能成為優秀的軟件人才,也視乎你能不能不斷地“復制”你的成功。一流的軟件公司,關注的不止是在技術方面的復用,實際上軟件開發過程中幾乎所有的東西都可以復用!

  你有復用習慣嗎?

  你是程序員嗎?我們經常要寫數據庫連接的代碼,這些代碼都類似,無非是new一個connection,然后配置connection的參數,然后open。很多編碼新手,常常會在不同的地方編寫這段類似的代碼。其實很簡單,這段代碼應該抽取出來供每個地方調用。如果你編寫的代碼中發現很多類似的甚至相同的代碼到處都是,應該好好考慮重構一下了。

  讀小學的時候,老師要求我們寫日記,當時覺得很難寫,也不想寫。后來讀高中的時候,我的思想來了個大轉變,突然寫起日記來,一寫就是幾年。寫日記并不是記下每天干了啥,而是每天都總結一下當天的得失,看看有什么東西是可以“復用”的。現在寫文章對我來說并不是什么很難的事情,我也比較容易觀察出周圍一些事物的閃光點,并學習它,供自己“復用”。

  復用其實不復雜,從小處做起,養成一種習慣,這種好的習慣會讓你的成功速度加倍!

  你的企業有復用習慣嗎?

  你們公司有組件庫、類庫或者是共享代碼庫嗎?每次你們做項目,有沒有之前的一些東西可直接供本項目使用的,還是需要全部重新開發的?

  A項目遇到一個問題,而這個問題B項目已經解決了,但A項目的人還不知道,這種情況多見嗎?

  你們做項目,是不是時間壓力非常大,公司有沒有要求你們完成項目的時候要提交一些可復用的組件出來?項目能按期完成就阿彌陀佛了,還管什么復用呢L

  很多公司可能不太注意“復制成功”,每天都在干救火的事情,老員工陸續離職,新員工陸續入職,公司一直沒有什么積累。一流的軟件企業,都有一套“復用”機制,能不斷地積累知識和成功經驗,不斷地保持公司的競爭優勢。

  一切皆可復用!

  一說到軟件復用,很多人可能只想到技術方面的復用,我們應該把復用的范圍再擴大。我們為什么要復用呢?因為我們想利用別人或者自己之前的成果,加快進步的步伐。正是因為我們這個目的,所以只要有利于進步的東西,都可以復用。

  軟件企業之間的競爭說到底是人才的競爭、智力的競爭和知識的競爭,每個公司都想網羅最優秀的人才。但千軍易得,良將難求,企業有什么辦法把優秀人才的優秀做法“固化”下來,讓整個企業都具備優秀人才的特點呢?優秀的人才包括很多方面的人才,技術人才、管理人才、行業知識專家等等,通過一套“復用管理辦法”,可以讓這些專家的先進的做法,貫徹到整個企業中去。這樣就相當于企業復制了很多個這樣的優秀人才,企業的戰斗力就會達到超強的境界。

  技術復用

  我們公司的某個項目,要通過網頁的方式展示一些列表,并且要把列表的內容導出成Excel。開發人員經常抱怨客戶的需求在變,列表及導出成Excel的表格,客戶經常修改對列的要求,什么列要顯示什么列不需要不顯示,列的順序、寬度、列標題等經常要修改。很多時候客戶確實不是無理取鬧的,業務是發生變化的,人的認識也是不斷加深的,這是一種合理的變化要求,軟件應該滿足這樣的要求,只是我們的技術能力還不過關,每次這樣的修改都需要去改代碼,修改成本高,開發人員不高興,客戶也不高興,因為每次修改我們都要跟他討價還價。

  當時我就問開發人員,能不能把這部分的做成可定制的呢?客戶想顯示什么列就讓自己去配制,我們不需要改代碼,客戶也不會來“騷擾”我們。但開發人員就以難度大,時間緊為由而不同意。

  很多公司都會出現類似這樣的情形,一般情況下指望項目組內能解決這些問題是不太可能的,原因有二:一是項目所有人基本都是進度優先的,基本上對于這樣的改進都是聽不進去的;二是項目中的人沒有能力去做這個技術改進,或者是項目中利害的人沒有時間來處理這個問題。

  如果我告訴開發人員,公司組件庫中有這樣的一個組件,能做到可定制的,能完滿滿足要求,我想項目組會毫不猶豫地使用這個組件。項目組其實并不否認這樣的做法的好處,只是沒有時間做或者是自己做不出來。

  公司應成立專門的部門,管理整個公司的技術復用,技術復用包括設計復用、組件復用、類庫復用、代碼復用等。該部門有兩大任務:一、不斷地研究能為公司使用的先進技術;二、關注每個項目,提取項目中可重用的內容,并為項目提供可重用的組件,為項目解決技術難題,從技術上加快項目的進度和保證質量。這個部門是很重要的,優秀的技術人才放到這里,會使他的作用成倍地放大。

  關于技術復用,請看我的另外一篇文章《超越競爭對手的秘密武器——技術重用》,這里僅做簡單介紹。

  項目管理復用

  為什么有項目經理管項目就比較好,有些項目經理就做得不太好了?優秀項目經理的管理經驗能不能重用呢?

  微軟總結了很多項目的成功經驗,總結出MSF(Microsoft Solution Framework),并向整個微軟甚至是全世界的軟件公司推薦MSF。MSF的八大原理以及MSF的團隊模型,對提高業界項目管理水平發揮了不可估量的作用。除了MSF,業界還有RUP、敏捷、XP等各種方法供大家參考,這些東西都不妨“拿來主義”,為我所用。

  除了復用別人成功的管理經驗,更重要的是要復用具有自己企業特色的項目管理經驗。把優秀的做法寫成過程,“固化”下來,讓全部的項目遵照執行,并不斷地完善此過程。

  過程必須是經過公司實踐的提煉出來的,而不要“照搬”外部的一套過程來實施。我們公司剛建立過程的時候,是通過兩個試點項目各自的實踐摸索出來的,我們總結了這兩個項目的成功經驗,建立了過程的初稿。以后所有過程的修改,都不是憑空構思,而是“復用”了實踐中的成功經驗。

  管理這東西是有點虛的,不能照搬理論,一定要通過實踐來總結經驗,把最佳實踐寫成過程,讓整個公司學習和執行這個過程,這樣優秀項目管理者的成功經驗就會被“復用”到每個項目中去。

  行業知識復用

  你們做行業軟件嗎?比方說財務軟件、房地產、股票交易軟件、建筑預算軟件、醫院系統。有位項目經理負責一個醫院的管理系統,做完后他頗有感觸地說,現在就連那個醫院的院長也不比我對醫院的業務熟悉了!

  行業知識不精,最直接后果就是難以把握好需求,被動地響應客戶的變化,難以做出客戶真正想要的東西。如果你們公司是專注于某個行業的軟件的,如果行業知識不精,很容易被競爭對手超越。

  作為客戶,他們除了關注軟件公司技術水平,可能更關注軟件公司能不能幫助他們重整業務流程,實現更大的業務價值。很多大型的ERP系統、MIS系統實施不成功,很可能是因為對業務的理解不夠,難以推動客戶重整業務流程。

  為了保證在行業知識方面的優勢,很多公司會招聘熟悉該行業的人士,甚至用即懂該行業又懂軟件開發的人來負責項目。除此以外,我們應該關注行業知識的復用,公司只有少數幾個業務精英是不夠的,我們希望每個人都是業務精英。要做到業務知識復用并不復雜,關鍵做好以下的事情:

  1. 安排業務高手講業務知識文檔化,如寫出產品的需求規格說明書、使用手冊等。

  2. 由業務高手安排一些培訓,讓負責該行業軟件的項目經理、開發、測試、實施都接受培訓和考核,保證項目組全部成員都具備相應的知識。

  3. 持續地更新業務知識文檔,并持續地進行培訓。

  軟件公司除了要關注技術積累,也要注重行業知識積累,其實應該首先關注行業知識積累,行業知識就是需求的根源,而技術是為實現需求服務的。

  估算復用

  要做準確的估算,對估算者的要求很高,要考慮的問題很全面和深入。

  以前我們公司做項目估算很不準,一個開始估計是10萬的項目,最后可能要20萬。如果每次估算,都有一些資深的項目高手來估算就好了,這樣能比較全面充分地考慮問題,于是我們想到了這樣的一個辦法:

  我們集中全公司的資深項目經理,一起來對項目估算進行總結,一起列出做估算需要考慮的內容,并加上詳細的說明。最后做出了一個估算用的模板,這既是一個模板也是一個指南,列出了項目整個周期需要考慮的工作,并給出詳細的說明。這個模板“固化”很多人的智慧,項目組使用這個模板進行估算,就相當于“復用”了大家的智慧。采用此模板后,估算準確率提高了很多,估算的偏差由原來50%以上,控制在20%以內。

  業界有很多估算辦法,如功能點法、代碼行數法,倒不是說這些方法不好,不過很多公司都沒有辦法很好地掌握這些方法,也沒有讓這些方法發揮作用。估算這個事情也不是什么方法就能搞定的,是很依賴于估算人的智慧、經驗、判斷能力的,想辦法“復用”他們的智慧,這可能才是解決估算問題的有效辦法。

  測試復用

  發現了一個缺陷,如何保證以后測試不會遺漏?

  軟件發布了新功能,進行測試的時候如何保證老功能不會有問題?

  測試復用對于提高測試質量、保證軟件質量和降低測試工作量太重要了。凡發現缺陷的測試用例都需要重視,這個測試用例以后要復用!進行新功能測試的時候,我們還需要跑一下測試老功能的測試用例,檢驗做新功能有沒有導致老功能出問題。測試中其實是非常關注復用的,也有很多公司在研究自動化測試工具,特別是功能自動化測試工具,以便更好地復用。

  但實際上很多公司并沒有做得那么理想,測試時間經常被壓縮,測試人員得不到重視,測試自動化工具一直也沒辦法用上,測試工程師們周而復始地進行原始的手工測試,軟件還是持續地遺留大量的缺陷發布給客戶。

  要做好測試復用,可以先從簡單做起:

  1. 規范測試的過程,保證缺陷都被準確地記錄下來,并且詳細地記錄發現缺陷的測試步驟。

  2. 每次測試都需要總結經驗教訓供以后使用。

  我們公司為了讓測試的水平能持續地提高,我們針對我們的產品編寫了功能樹,列出了全部的測試點,以及測試時的注意事項,測試時要按照此樹進行測試,要覆蓋全部的點。如果發現測試有遺漏,或者軟件功能調整,我們馬上更新功能樹。這樣即使我們安排不同的人去測試,都基本能保證測試的效果,我們的測試工程師通過功能樹“復用”了前人的經驗教訓,避免了重犯。

  持續培訓,把復用發揮到極致!

  說到底,復用就是一個實踐、總結、學習、應用的過程,我們公司的“每日培訓”把復用發揮到極致。每個公司都應該有持續培訓的制度,把公司各方面的復用推向極致!

  培養知識共享、樂于交流、追求進步的企業文化

  不少軟件公司的技術人員,都或多或少的有一些技術保留的想法。但持續培訓機制,讓每個人都很熱衷把自己研究的成果與大家分享,樂于解答別人在工作上遇到的困難和問題,樂于與大家爭論技術問題,每個人都急于吸收新知識、新技術,每個人每天都會覺得自己有很多東西要學、想學。

  員工與公司共同進步

  公司是由每位員工組成了,每位員工進步了,公司也就進步了。持續培訓機制是每位員工個人發展的加速器,員工通過不斷的學習,甚至是自己親自做講師,個人水平得到了全面地提高。伴隨著員工水平的提高,公司的生產力也不斷地提升。

  打破部門界限、項目組界限

  持續培訓制度,徹底打碎部門界限、項目界限,所有人不分部門、不分項目組地坐在一起上課、討論,不同部門的人、不同項目的人輪流上臺講課,講授各自的經驗和知識。不同部門、不同項目組之間的員工關系將非常融洽,彼此了解對方正在什么工作,也非常樂意提供跨部門、跨項目的幫助。

  新技術、新過程迅速轉化成生產力

  采用新技術,實施新過程是公司不斷革新的重要方法。新技術、新過程的順利實施并轉化成生產力的周期越短越好,持續培訓制度,大大縮短了這個周期。所有新技術、新過程將會很快地被“復制”,大家會在培訓上熱烈討論,加深了對新技術、新過程的理解,從而加速了新技術、新過程的實施。

  新制度迅速落實

  一個管理嚴格的公司一定會有嚴格的日常管理制度,而日常管理制度應該根據實際情況及時調整,持續培訓制度對新的制度的迅速順利落實起到了很大的作用。

  成功迅速復制,錯誤不會重犯

  持續培訓制度,可以讓每一個人的成功經驗迅速“復制”給每一個人,而任何一個人的失敗教訓,可以迅速讓每一個人體會,避免錯誤重現。

  打造金牌講師

  每位講師,由準備講課到經歷講課,是對自己各方面能力的考驗,每一次講課就是一次能力提升的過程。持續培訓制度,“復制”了大量的金牌講師。

  打造品牌課程

  持續培訓制度積累了大量的課程,所有的課程的資料全部保存到培訓網站,可供所有后來的員工查閱和學習。而不少系列課程,經過多次的改版以及重講,慢慢了形成了公司的經典課程,這些經典課程被不斷地“復用”,教育著一批又一批的新員工。

  打造卓越團隊

  持續培訓制度,鍛煉了大量的項目經理、部門經理,他們成為了公司的中堅力量,“復制”出一個又一個的卓越團隊。

  關于培訓,請參考我的系列文章《不可思議的每日培訓》。

  打造企業的復用庫!

  能復用的東西非常,如:風險識別辦法和緩解辦法、設計方案的復用、缺陷的解決辦法等等,復用思想的本質其實就是要不斷地總結經驗教訓為今后所用。要做到這點,除了在公司倡導總結和學習的企業文化外,需要制度化地管理復用工作。

  CMMI中提到資產庫,資產庫的重要組成部分就是復用庫,復用庫可以包含組件、代碼、設計方案、各種工作模板、工作指導書等等,然實有利于以后更好地工作的,這些內容都可以納入復用庫中。每個公司都應該好好規劃自己的復用庫,持續地更新這個庫,持續地推動項目使用復用庫中的知識。

  試想一下,如果每個項目開展之前,能在復用庫中得到大量的幫助,對于提高項目速度、保證質量是有多么重大的意義。一個公司也只有通過這樣的方式,才能讓公司具備越來越強的競爭力。

  每個公司都不可能網羅全部的精英,精英也不可能一直都呆在同一個公司,公司除了要關注招聘和留住優秀人才外,也需要打造自己的復用庫,復用是每個公司成功的加速器!

  一切可以復用,需要通過良好的持續培訓制度,以及優秀的企業復用庫來支撐,會復用的人才是最聰明的人,會復用的企業才是最厲害的企業!

28
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()