為什麼程序員不用版本控制工具?
自從我到某資訊軟體公司做過一陣子程式工程師後 (過去式) ,我就一直在感慨為何國內的多數程序員不用版本控制工具 (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 之中,所以國內多數程序員不會用是很合理也很正常的,因為學校沒教。所謂「役物,而不役於物」,被工具綁得牢牢的程序員,其思考格局大概也會被侷限吧。
樂多舊回應