最近更新: 2006-11-12

為什麼程序員不用版本控制工具?

自從我到某資訊軟體公司做過一陣子程式工程師後 (過去式) ,我就一直在感慨為何國內的多數程序員不用版本控制工具 (Version control system) 。這個問題不久前得到了解答。

前幾天 (11/9) 我去參加微軟舉辦的「微軟應用平台架構優化」技術發表會,下午第二場議程正好介紹 Visual Studio Team System (介稱 VSTS) ,那時我第一時間想到「微軟現在才出這種工具啊」,接著靈光一閃,我想到國內程序員為何不用版本控制工具這個問題的答案了,答案是「因為微軟的 Visual Studio IDE 工具中沒有整合版本控制工具啊」。現在微軟終於整合了,以正規教育的內容和微軟的工具「同步化」程度來看,想來日後學校應該會開始教這些概念了。

或許有人還不太清楚版本控制工具 (Version control system) 和 Team System 之間有什麼關係。簡言之,版本控制工具是 Team System 的基礎系統, Team System 建構在版本控制工具所提供的文件版本管理及協作機制之上。近代軟體工程的主流,強調迭代式、往覆式開發,此一開發過程勢必帶來龐大的文件版本資訊管理作業,「沒有 CVS/SVN 這類版本控制工具,任何修改程式碼的動作都會增加程序員大腦記憶體的負擔,程序員將會浪費許多時間在搜尋與比對程式碼的工作之上。」(Programming with Subversion Quickstart - 安裝 Subversion 服務) 。事實上,版本控制工具能為程序員做的事,不僅止於此。

微軟其實有一套稱為 Visual Source Safe 的版本控制工具,但它的協作機制採互斥式、鎖定式 (即一人 checkout 某個 source file 後,其他人就不能再 checkout) ,對 Team-work 而言其實不好用,應付兩、三個人在同一間辦公室裡作業的情形還好,要應付一般 open source projects 那樣幾十個人散佈世界各地的情形就顯得綁手綁腳。而更重要的一點是,它並未整合在 Visual Studio 之中,所以國內多數程序員不會用是很合理也很正常的,因為學校沒教。所謂「役物,而不役於物」,被工具綁得牢牢的程序員,其思考格局大概也會被侷限吧。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/2465816.html

樂多舊回應
未留名 (#comment-3873104)
Tue, 23 Jan 2007 10:13:49 +0800
Visual SourceSafe 出好久了,至少我 1999/2000 年的時候就有用了。而且的確也有整合到 Visual studio 裏面,我是用 VFP,那時候VFP 還在 Visual studio 裏面。
不過國內用的人真的很少,那時候微軟官方對這方面的資訊也很缺乏,我跟另一位同事幾乎是摸索著把 VSS 架起來,然後讓公司幾個人開始有版本控制的概念。
未留名 (#comment-3873409)
Tue, 23 Jan 2007 12:13:11 +0800
Visual SourceSafe 是舊玩意, VSTS 則是新玩意。

印象中, Visual Studio 標準版/教育版 中沒有 Visual SourceSafe ,所以學校學生沒機會學到。而且, Visual SourceSafe 的共用機制不方便,比不上 CVS/SVN 。

我以前在某公司時,公司內也有架 VSS server ,但根本沒人用,只是以前為了取得 CMMI level 2 做個樣子。我反而自己架 SVN + TotoriseSVN 管理自己負責的工作,用得很高興,連同事都找我學。
sevenwang777@yahoo.com.tw(王明輝) (#comment-16209901)
Sat, 12 Apr 2008 23:19:10 +0800
看完您的內文,小弟心有戚戚焉!
以前在公司想推cvs卻被公司譏為沒事找事做。
未留名 (#comment-17844341)
Thu, 30 Oct 2008 14:21:28 +0800
SVN我們這裡也有用,不過老實講很多人只是把他當成備份工具,甚至還有人把自己的code蓋掉救不回來。

所以我還比較喜歡SourceSafe,雖然功能陽春了一點但是容易上手多了,而且假如不是要共同開發一個軟體也不見得SVN會比較好用(像我們AP跟firmware都是不同人獨立開發,不會共用code)

選用工具不能不考慮人性的弱點,還有教育訓練的問題...
未留名 (#comment-17888221)
Thu, 06 Nov 2008 02:48:28 +0800
把自己的code蓋掉救不回來?這件事很有趣,因為 SVN 的設計概念就是「凡走過必留下痕跡」,這個原則,它比 CVS 執行的更徹底。

我到目前為止,還沒有碰過追不回來的文件。

至於教育訓練的事,VSS, CVS, SVN 都不可避免,我就不評斷優劣了。
未留名 (#comment-22478796)
Thu, 07 Jun 2012 23:52:30 +0800
的確是這樣。
之前去輔導客戶資訊安全時,某公司的IT 協理--程式設計師背景的人。
竟然說版次管理不切實際。
他手下的程式設計師說:版次管理的工具要花錢買才有,所以他們沒做、也沒想過版次管理有什麼必要性?
無法溝通,一整個就是"我都寫程式這麼久了,還會不懂實務需要嗎?"

一整個team 的年紀都40有餘了,開發方法和觀念還停留在原地。
但真的不少人是那種,微軟沒有配套銷售,就沒想過"怎麼做會更好、其實我需要什麼" 的"程式設計師。
未留名 (#comment-22479164)
Fri, 08 Jun 2012 11:29:41 +0800
一群人在同一間辦公室,開發同一個專案,就是一組TEAM了嗎?
錯。說難聽些,你碰到的那根本就不叫「TEAM」,只是一群烏合之眾。

1. 雖然微軟的 Visual Studio 已經開始配套銷售版本管理工具,但我記得要企業版或伺服器版本才會整合版本管理功能。專業版仍然沒有。
不幸的是,國內的軟體開發公司,為了省錢,大多只會買專業版,也就是個人版。
瞧,就連選擇工具時,都是抱著個人單打的想法,而不會想到團隊協作的情形。

1. 現在連作業系統都開始將版本管理當作內建功能,例如:
Apple OS X (http://www.apple.com/tw/macosx/whats-new/auto-save.html)

我順手貼一段 Apple 的廣告詞:
----
如果你不想保留之前所作的修改,回復功能可以將你的文件回復到你上次開啓時的狀態,所以你可以隨心所欲地嘗試,因為你知道自己可以隨時從頭來過。
----

看,多美好。認為版本管理不重要的人,只會繼續浪費自己短暫的人生。
none@example.com(阿伯) (#comment-22482752)
Mon, 11 Jun 2012 16:43:00 +0800
微軟的工具都是工程上的菁英開發出來的.. 不提要不要收錢.. 光是要工程師在講求時效的環境下吸收與習慣那些操作邏輯才有鬼..
none@example.com(阿伯) (#comment-22482772)
Mon, 11 Jun 2012 16:51:10 +0800
至於 OSX 上的 Auto-Save 做非常好,也非常貼近一般使用者

不過這方面也要歸功於現在的環境比以前幸福多了,Git Repo 到處開花..

有版本控制的軟體大多都要收錢,就算自己硬幹也不好實作

沒有技術上的狂熱或金主支援實在是很少會有工程師把這玩意做好

尤其是當別人的被你工具/軟體搞壞了,那要背負的責任又是未知數
未留名 (#comment-22483294)
Tue, 12 Jun 2012 09:14:59 +0800
以 Subversin 這套目前最常見的開源碼版本管理工具為例,足以應付大部份的國內軟體專案所需,而且也有配合 VisualStudio 的插件。實際上並無花大錢或自行實作之必要。

話說版本管理軟體有些確實存有學習曲線。不過 subversion 幾乎是最易上手的一套。我接觸過的同事中,一但用了 subversion ,就沒有再回頭自己手動分版的了。
noemail@example.com(阿伯) (#comment-22483632)
Tue, 12 Jun 2012 17:18:34 +0800
以前有用過 Subversion,但後來經朋友介紹 Git 用起來不錯

目前個人重心偏向 Git,OSX 上有一個不錯的付費 GUI 叫做 Tower 您也可以參考玩玩~