代碼寫得好,但是不會(不願)使用 Git 之類的代碼管理工具能稱得上是優秀程序員嗎?

某個程序員(不是樓主),在公司里coding能力算很強,但是不會使用git,或者說懶得去使用git,覺得使用代碼提交,合併等等的各種框框條條會浪費時間,這種時間的浪費和coding的交換不合算

===============補充下場景==========

首先先謝謝各位的回答,可能是小弟我表達不夠清楚,我再補充下場景吧。

一個多人參與的公司項目,一個NB的程序員一直特立獨行的以自己喜歡的方式提交代碼到git倉庫(其實只需要把assign to A改為assign to B就行),反映後得到的回答的意思大概是「他是NB的程序員,讓他去吧,他的時間寶貴,A to B這種改動是浪費他的時間」


問題不是不會用「git",而是不會或不願意用」git之類的代碼管理工具「

這樣的程序員我認為是缺乏職業素養的。


謝腰。想了半天應該怎樣一針見血的指出這哥們兒其實很水,但總覺得有哪兒不對勁,後來終於想明白了,噗呲,他都不提交代碼,你們從哪兒看出他優秀的啊?


認識一些還算優秀的程序員,Git工作流用的不多,Github上項目也不多。工具永遠都是用來解決問題的,沒必要為了工具而工具。

但是題主你是用svn,還是打zip包管理版本的么,抑或是用傳說中的時光機!

什麼叫好的代碼?

易讀性好、性能好、設計模式合理......

什麼叫優秀的程序員?

你連Git都不會用還好意思說自己優秀!

你不懂Git,懂SVN也行。

你不用Vim、Emacs用個Xcode、sublime也行呀。

......

工具用什麼不重要,重要的是要有一套適合自己的工具來提高工作效率。就算只做演算法,偶爾也需要寫幾個腳本,找幾個開源項目看看吧。會的多總沒壞處。

順便也問個問題,我搜問題一般都先百度後stackoverflow,我還是一個優秀的程序員么


一直到 linux 開源社區鬧出反編譯人家收費的版本控制軟體(只是免費給 linus 用而已)之前,Linus 都不知道什麼是 git(這不廢話)麽……

但是比較有意思的是,Linus 非常討厭 svn;於是 Linux 的代碼在很長一段時間都是 Linus 用 diff 比較之後自己讀一遍手動 copy paste 的。

換句話說我們之所以用 git 或者 svn,只是因為我們太弱而已。如果兩個代碼文件不一樣,diff,然後讀一遍咯。至於樹啊什麼的管理,就連 linux 沒那玩意也可以造出來,我們造不出來只是自己弱而已……你要是一小時讀三千行代碼,需要什麼 git。

說到底,用 git 只是雇了一個倉庫管理員而已。(哈哈哈,你看 @vczh 就不用 git 吧。工具多著呢)

註:

bitkeeper商業化後,linux社群用的是tar文件作為補丁的方式來管理,至少不同版本的補丁是自動打的,還不至於手工diff在copy/paste


雖然說會不會用工具和是不是好程序員沒什麼本質關係。

但是我覺得如果是我,和這樣的人合作一定不會舒服。

整個項目團隊都用相同的工具鏈,其中一個人不用。這就需要我額外做很多工作來專門對待那個人。

另外。

git基本操作實在太簡單了。我覺得牛逼的程序員覺得git的那些提交啊,merge啊這些操作是條條框框,懶得學習才是有問題的。


是不是優秀的程序員我覺得待商榷,但肯定不是優秀的工程師。


不算

在現在這個時代,不用git或者svn的不算好程序員

最基本的管理工具,就像拿文件夾管理文件一樣


代碼寫得再好,不配合團隊,有個毛用!讓他自己寫一整個項目?


不用版本控制工具怎麼teamwork?難道一直是一個人在戰鬥嗎?

teamwork時1+1永遠不可能等於2。這個損失就在溝通上,版本控制工具可以有效的降低這個溝通的損失。對一個程序員的評價不能只看coding的能力。

舉個例子吧,如果一個3個人的團隊,工作效率是一個人平均工作效率的200%(損失的100%是溝通上);而另一個3個人的團隊,其中兩個人能力底下,只能幫倒忙,而一個是大牛一個人就能幹200%,那麼要不要VCS也就無所謂了。

雖然這種情況不少見,但是大家都想盡量避免,也就是剔除掉那兩隻豬隊友。而正常情況下,如果一個3人的隊伍工作效率是200%,現在又來了一個coding的大牛,但是因為他不用VCS導致團隊效率下降到150%,那麼應該被剔除的就是這個所謂「大牛」的人了。


最近在用 git 感覺 有些地方設計得不是很合理吧。。。。

比如 我本地修改了一個文件 但是不讓推送。。。。

說是本地落後。

mmp,本地版本落後怎麼了,我提交得那個單個文件又沒有落後。fuck!

而且解決也挺麻煩的。


如果規則給人帶來了困擾,重複勞動,是不是可以找尋一些工具,去解決這個重複勞動呢?

如果一時的麻煩,會帶來很大的收益,比如說寫測試,那不做是不是就是在給別人挖坑呢?

如果不能帶來很大的收益,那是不是可以不要這個規則呢?


沒必要以使用的工具來衡量一隻碼農是否優秀吧。。。

這種工具上的東西,真正需要的時候學起來又不難。。。

某程序員沒有使用,我覺得只是說明對於當前project來說git對他不是必須的。。。

(工具是為了提高生產力的,沒必要有了一把鎚子,就無論什麼都想敲敲吧。。。)

我覺得本問題,與以下問題沒有本質區別:

代碼寫得好,但是不會用emacs操作系統是優秀程序員嗎?

代碼寫得好,但是不會用gdb是優秀程序員么?

代碼寫得好,但是不會用shadowsocks是優秀程序員么?

我覺得答案只有一個,只要代碼真的寫得好,就是優秀程序員。


看來Github出來之前,這個星球就沒有優秀的程序員啊……


git 誕生之前,有沒有優秀的程序員?


是不是個好程序員光憑編程能力強和是否用git沒法直接判定,但好程序員一定編程能力強(是否用git根本沒關係)!但可以說你那個同事肯定不是個好員工和好隊友!svn,git是團隊協作的基本技能,甚至有時候codestyle都是!我團隊中如果有這樣的人,我鐵定不要他了!


說明他不會看別人的代碼,也就說明能力並不強。

git雖然不怎麼好用,但基本操作5分鐘就會了,這都不願意學又是何必呢。


前提是,你有一個好的、高效的版本控制的機制。

以下是我剛剛的慘痛教訓:改一個基於Magento的線上電商項目,測試網站調試成功,正式網站的付款界面死活無法saveorder。詭異就詭異在,付款頁面甚至沒有報錯。

因為用的是傳統的FTP方法,開始了大海撈針似的錯誤查找,也不知道花了多少時間,向上找了多少層級,才在一個Saleslist.php文件里發現了一個unexpected T_VARIABLE ERROR。錯誤原因在於和測試環境相比,這個文件里的某一行後莫名其妙地多了個「intval」,想來想去,大概是我在做搜索時不小心把intval直接輸到了文件里。

因為其他項目用的是Git去做版本控制,我就在想,相同的錯誤如果在SourceTree里,也就5秒鐘的時間就能把這個錯誤找出來。

明天老老實實去建個倉庫。


不會和不願意分開說,不願意用git 因素很多,比如新老項目遷移等,這些因素一般都是領導層決定,但不能否認他是優秀程序員。不會git,我覺得是個主動性問題,不會但不精通又是主動問題,從這方面講不算是優秀,或是很難突破優秀二字


不算


代碼寫了不提交 難道讓他爛在自己手上?


推薦閱讀:

Github上都有哪些有用但不為大家熟知的小功能?
git clone一個github上的倉庫,太慢,經常連接失敗,但是github官網流暢訪問,為什麼?
一個人寫程序,版本控制用svn還是git?
用 Git 一定要用命令行嗎?用命令行一定高貴嗎?
git合併分支,為什麼會比svn容易?

TAG:程序員 | Git | 代碼管理 |