最近部門為了提高工作效率,決定推行一系列規范化管理。其中之一就是版本控制。SVN作為近年逐漸興起的新一代版本控制管理工具,加上開源的特點,當仁不讓地成為我們的第一選擇。
如何開展版本控制呢?剛開始的時候想得很簡單。心想“我們只要搭建個SVN服務器,配置好權限。然后發一封郵件,大家肯定會一呼百應。畢竟這是會上領導重點提出的要求,再加上對他們有好處,可以提高工作效率,推廣起來肯定是不費吹灰之力的”。可是做的往往沒有想的那么容易。
挑戰1:歷史原因
客戶的現有平臺是90年代搭建起來的,使用的都是古老的技術,當時沒有版本控制的概念。現在要重拾版本控制,談何容易!光是上百個日常應用累都累死你,更不要說那些躺在角落九千年沒人用的應用,有些連源代碼都沒有了!只有class文件。真想殺人!
挑戰2:工作習慣
前面提到的客戶的現有平臺如此混亂,其中一個最大的原因就是平時沒有養成版本控制的習慣。對程序的版本控制就是簡單的拷貝-->復制-->加上日期重命名。所以在一個項目下可以看到幾十個帶時間的備份文件,或者諸如bak1,bak2之類慘不忍睹的文件名。
這些人由于平時松散慣了,你現在突然要改變他們的工作習慣和方式,他們會不自主地產生一種“消極對待或抵抗”的情緒。之前沒有版本控制不也是過來了,搞什么版本控制嘛?所以說項目管理中最大的成本是什么:是人;最耗時的改變是什么:改變人的工作方式和習慣。要強行推行一種技術不難,但要改變一個人的習慣很難。
由于這種潛意識里的抵抗情緒,所以客戶同事會用各種理由來阻止使用版本控制。比如說IDE不兼容啊,操作麻煩啊。
挑戰3:誤解
在當初部門會議上提出推行版本控制的時候,我就知道肯定會有些人事會對我們有意見,認為我們是為了出風頭或控制大權而故意推行的。果不其然過幾天后就開始有些同事說一些酸溜溜的話。如果沒有足夠的心里的準備,這個時候的打擊是很大的。
挑戰4:經驗
由于整個部門之前沒有任何版本控制的正規經驗,所以我和另外一個同事都是摸著石頭過河,不能拿生產環境下手,什么事情都得在自己技巧上,測試機器上測試通過,確保萬無一失才敢部署上服務器。期間我們遇到了很多瑣碎的問題,有些雖然小卻足以浪費你一個下午的時間。
一個負責SVN同事面對這種情況,一開始有點落差,顯得有點恨鐵不成鋼的感覺。我向他解析:別看現在我們是裝個工具,配置下權限。其實事件的深層次是我們要改變他們熟悉的工作方式和習慣。讓他們有了一種受威脅的感覺,從而產生抗拒感。這是人的一種本能,是對事不對人的。我們只能一步步來,慢慢地過渡。
方法1:加大宣傳
針對部門平時的工作情況,我們找出了由于不使用版本控制而帶來的一系列麻煩。因為這些麻煩多數人都遇到,所以在談到這些問題時首先已經擊中他們的要害。通過培訓,交談等方式重點宣傳使用SVN的好處,只有讓客戶感到有好處我們才能繼續開展下去。
方法2:主動出擊
剛開始我們幾個同事部署好了SVN,卻沒有人愿意使用,這確實很打擊我們的士氣。于是我們決定主動出擊,主動發郵件通知大家,邀請大家以嘗試的方式先把項目放到我們的版本庫進行控制,并承諾對出現的問題,在力所能及的范圍內我們都會盡快解決,這樣很快有了“第一個客戶”。
方法3:曲線救國
很多同事一開始對版本控制并不感冒,好既然我正面說不動你,那我就來個曲線救國,釜底抽薪:我先說服客戶,讓客戶同意從SVN中check out/in代碼,而不從其它途徑獲取代碼;或者我直接找上級領導,以行政命令的方式代替日常的說服,這樣就斷了他們的后路,你不用版本控制也不行了。
不過我不喜歡這種方式,至今也沒有使用這種方式。因為這是一種半強迫式的做法。是失敗的管理者采用的粗暴簡單手段。俗話說:攻城為下,攻心為上。不讓同事客戶明白使用SVN的好處,他們是不會真正配合的。我還是會堅持上面的兩種方法的。
方法4:操作便利
任何一項工具或服務,假如沒有提供便利的操作,哪怕好處說破天也不會有人用。沒人會因為技術而技術。所以我們在推廣SVN的時候,除了注意強調SVN的好處,還必須注意如何為同事,客戶提供最便利的操作服務。因為我們開發小組和客戶一個處于廣州,一個處于香港,網絡不同。客戶出于安全考慮不愿通過普通公網訪問我們版本庫,但如果版本庫建在客戶處,我們又經常需要以VPN的方式登陸然后check in/out,這在大數據量的check in/out時非常緩慢而且會斷開原來的網絡連接,用戶體驗很差。
針對這種情況我們將會采用Apache + SVN構建SSL的方式,提供加密方式的SVN連接。即免去客戶的顧慮,也免除我們同事使用的麻煩。更可以脫離公司內網的限制隨時隨地進行版本控制。
通過最近這些日子的工作,我深深地體會到項目管理的難處,這種難處很多時候比寫不出程序更打擊人,但更有挑戰性和學習意義。版本控制之路,路漫漫其修遠兮,吾將上下而求索。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2008-12-25 18:00
Paul Lin 閱讀(2291)
評論(3) 編輯 收藏 所屬分類:
項目管理