摘要:很多人尤其是在校學(xué)生問(wèn)我GitHub的用途, 大家都覺(jué)得那不就是一個(gè)版本管理的工具嗎句旱? 我也不厭其煩的給大家講GitHub的各種好處, 還特別寫(xiě)了一篇文章《小李的版本管理系統(tǒng)》晰奖, 但估計(jì)很多人看了以后記得住一時(shí)谈撒,很快就忘了。
最近在知乎上看到劉佳亮的回答匾南, 覺(jué)得要比我干巴巴的講GitHub 不知道要好到哪里去了啃匿,更有說(shuō)服力, 趕緊申請(qǐng)授權(quán)轉(zhuǎn)載過(guò)來(lái)蛆楞,原文鏈接:GitHub 是怎樣的一個(gè)存在溯乒? 我今年大三,刷 Github 刷了不到一年豹爹,有了幾個(gè)看起來(lái)還行的項(xiàng)目裆悄,一年公開(kāi)的 Commit 數(shù)也過(guò) 1000 了。雖然我之前聽(tīng)說(shuō)過(guò)一個(gè)有內(nèi)容的 Github 賬號(hào)會(huì)對(duì)面試有幫助帅戒,但是我沒(méi)想到幫助會(huì)這么大灯帮。
參加今年阿里面試的過(guò)程中,面試官對(duì)我的 Github 上的項(xiàng)目很感興趣逻住,跟我討論了很長(zhǎng)時(shí)間。同時(shí)也無(wú)意中談到 StackOverflow迎献,我說(shuō)我在 StackOverflow 上回答過(guò)問(wèn)題瞎访,現(xiàn)在 Reputation 有好幾百,面試官直接就跟我要賬號(hào)吁恍,針對(duì)我在上面回答的問(wèn)題也談了很久扒秸,并且推薦我把 SO 賬號(hào)也寫(xiě)在簡(jiǎn)歷里播演。面試官最后說(shuō)了一句話讓我印象特別深刻,大體意思是伴奥,面試官希望看到這種能夠真正展示你解決問(wèn)題能力的東西写烤,而不是只是在簡(jiǎn)歷上寫(xiě)會(huì)什么什么。不管是 Github 還是 StackOverflow 記錄的都是沒(méi)辦法造假的拾徙,實(shí)實(shí)在在的努力洲炊。這也是為什么面試官希望看你的 Github 賬號(hào)的原因,就是希望能看到你能力的實(shí)際體現(xiàn)尼啡。
所以暂衡,如果題主要走技術(shù)路線的話,最好讓在簡(jiǎn)歷里加上那些能夠體現(xiàn)你能力的東西崖瞭,不管是上架的 App狂巢,上線的網(wǎng)站,還是一個(gè)綠點(diǎn)滿滿的 Github 賬號(hào)书聚,Reputation 爆表的 StackOverflow 賬號(hào)唧领。它們的作用就是為了增加簡(jiǎn)歷的”可信程度“,讓你的能力不僅體現(xiàn)在簡(jiǎn)歷這張紙上雌续,而是變得更加鮮活立體疹吃。
PS:Github 刷多了真的會(huì)引來(lái)一些關(guān)注,我已經(jīng)收到好幾封國(guó)外的創(chuàng)業(yè)公司的郵件了西雀,可惜我還沒(méi)畢業(yè)萨驶。
下面是碼農(nóng)翻身對(duì)劉佳亮的一個(gè)簡(jiǎn)短采訪:
Q : 請(qǐng)問(wèn)你是什么時(shí)候開(kāi)始和GitHub/stackoverflow 親密接觸的?
A : 我是從大二的時(shí)候開(kāi)始接觸 Github 和 StackOverflow。不過(guò)由于當(dāng)時(shí)什么都不懂艇肴,兩個(gè)賬號(hào)基本都屬于掛機(jī)的狀態(tài)腔呜。我從大三才真正花時(shí)間去深入了解和參與到這兩個(gè)社區(qū)當(dāng)中。
Q: 你是如何在GitHub上找到自己想?yún)⑴c的項(xiàng)目的再悼?
A: Github 上幾乎能找到所有語(yǔ)言所有方向的項(xiàng)目核畴。當(dāng)時(shí)我在 Github 上找開(kāi)源項(xiàng)目主要是從我自己的開(kāi)發(fā)方向下手的。最開(kāi)始我主要是在做 Python 開(kāi)發(fā)冲九,就接觸了很多 Python 開(kāi)源項(xiàng)目谤草。后來(lái)重心放到 iOS 開(kāi)發(fā)上,就逐漸開(kāi)始接觸 iOS 的開(kāi)源項(xiàng)目莺奸。我接觸開(kāi)源項(xiàng)目主要是為了學(xué)習(xí)丑孩。Github 上也有很多很好玩的項(xiàng)目,例如 Code Combat灭贷,這種項(xiàng)目參與起來(lái)也會(huì)很有意思温学。如果它使用的語(yǔ)言又正好是你想研究的方向就再好不過(guò)了。所以“自己想?yún)⑴c”其實(shí)一個(gè)很主觀的東西甚疟。
Q:需要完全讀懂一個(gè)項(xiàng)目的源碼才能參與嗎仗岖?
A:并不是逃延。實(shí)際上很多大型開(kāi)源項(xiàng)目的維護(hù)者都不能“完全讀懂”一個(gè)項(xiàng)目的源碼,畢竟現(xiàn)在的大型開(kāi)源項(xiàng)目的規(guī)模越來(lái)越大轧拄,維護(hù)者通常也只是對(duì)自己維護(hù)的那部分代碼做改動(dòng)揽祥。除了作者之外,很少有人敢說(shuō)自己對(duì)所有的代碼都熟悉檩电。還好開(kāi)源項(xiàng)目并不都是成千上萬(wàn)行的大型項(xiàng)目拄丰,有很多小而精的項(xiàng)目也值得我們學(xué)習(xí),例如 howdoi (https://github.com/gleitz/howdoi)是嗜。很多個(gè)人的小項(xiàng)目也是水平很高的愈案。因此我建議還是從小一些的項(xiàng)目入手,小項(xiàng)目的代碼通讀一遍也不會(huì)花太長(zhǎng)時(shí)間鹅搪,等熟悉了整個(gè)社區(qū)的運(yùn)作規(guī)則之后站绪,再試著接觸一下大型項(xiàng)目,可以先幫他們解決小 bug丽柿,或者參與 feature 的討論等等恢准。
Q: 大學(xué)期間,我沒(méi)有實(shí)戰(zhàn)的項(xiàng)目可做甫题, 能不能參加GitHub上的開(kāi)源項(xiàng)目馁筐? 怎么找到切入點(diǎn)?
A:Github 上并不一定需要是實(shí)戰(zhàn)的項(xiàng)目坠非,好多學(xué)弟現(xiàn)在把平時(shí)的作業(yè)敏沉,實(shí)驗(yàn)都放到 Github 上去了,也是一種很好的實(shí)踐(不過(guò)老師可能不這么想...)炎码。參與別人的項(xiàng)目盟迟,從某種程度上說(shuō)比自己從頭寫(xiě)還要難一些,因?yàn)橐攘私鈩e人的思路潦闲,之后才能貢獻(xiàn)代碼攒菠。因此我建議還是從自己做項(xiàng)目開(kāi)始,不要一開(kāi)始就想著“參與別人的項(xiàng)目”歉闰。一屋不掃何以掃天下辖众?自己連一個(gè)項(xiàng)目都維護(hù)不了,何談去給別人的項(xiàng)目作出貢獻(xiàn)呢和敬?至于項(xiàng)目來(lái)源的話凹炸,除了作業(yè),實(shí)驗(yàn)之外概龄,也可以從自己的生活中發(fā)現(xiàn)需求还惠。像我自己為了翻 X 做了 SimpleDNS,為了聽(tīng)歌方便做了 pyfm私杜。這些都是我自己想做的東西蚕键,做起來(lái)也有動(dòng)力,同時(shí)也能學(xué)到很多東西衰粹,一舉兩得锣光。
Q:參與GitHub是不是對(duì)英文要求挺高的?
A: 是的铝耻,目前 Github 和 StackOverflow 這種大型的程序員社區(qū)當(dāng)中都是使用英文來(lái)交流的誊爹。英文好的話,在混社區(qū)的時(shí)候就會(huì)壓力更小一些瓢捉。好多同學(xué)可能英文水平不夠频丘,看到英文就感覺(jué)很慌,這樣的話對(duì)自己確實(shí)是不利的泡态。我從高中的時(shí)候英文閱讀量就比較大搂漠,因此英文閱讀對(duì)我來(lái)說(shuō)沒(méi)有太大的障礙。如果有時(shí)間的話某弦,建議同學(xué)們還是要繼續(xù)學(xué)習(xí)英文桐汤,提高英文閱讀量。沒(méi)有時(shí)間的話靶壮,就克服掉心中的慌怔毛,堅(jiān)持讓自己瀏覽 Github 和 StackOverflow,堅(jiān)持用 Google 英文搜索腾降。看網(wǎng)站本身其實(shí)也是在練習(xí)英文的閱讀螃壤,等積累到了一定的水平抗果,相信你英文閱讀的水平會(huì)有很大提升,參與到社區(qū)中也就沒(méi)什么壓力了映穗。