posts - 262,  comments - 221,  trackbacks - 0

          最近部門為了提高工作效率,決定推行一系列規范化管理。其中之一就是版本控制。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 閱讀(2292) 評論(3)  編輯  收藏 所屬分類: 項目管理


          FeedBack:
          # re: 【版本控制之路】扛起SVN的大旗
          2008-12-25 20:02 | robertlyc
          新一代...lz你太火星了
          新一代版本控制是git了...  回復  更多評論
            
          # re: 【版本控制之路】扛起SVN的大旗[未登錄]
          2008-12-25 20:41 | Paul Lin
          @robertlyc

          學習了,呵呵。不過從使用程度來看。SVN還是保險一點  回復  更多評論
            
          # re: 【版本控制之路】扛起SVN的大旗
          2008-12-26 19:57 | reeze
          git 還是不錯的。就是缺乏GUI的支持
          不過很快應該就有了~  回復  更多評論
            
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 铜陵市| 乐山市| 郑州市| 麟游县| 丹棱县| 闻喜县| 务川| 广元市| 长春市| 邹平县| 霍城县| 贵溪市| 章丘市| 牟定县| 天水市| 东台市| 汪清县| 石景山区| 宣武区| 永登县| 新龙县| 太和县| 长兴县| 濉溪县| 青河县| 江陵县| 出国| 崇州市| 突泉县| 正宁县| 乐陵市| 石柱| 会理县| 隆德县| 镇江市| 新丰县| 合阳县| 图木舒克市| 吉安市| 金山区| 梅河口市|