摘要:很多人尤其是在校学生问我GitHub的用途, 大家都觉得那不就是一个版本管理的工具吗? 我也不厌其烦的给大家讲GitHub的各种好处, 还特别写了一篇文章《小李的版本管理系统》, 但估计很多人看了以后记得住一时,很快就忘了。
最近在知乎上看到刘佳亮的回答, 觉得要比我干巴巴的讲GitHub 不知道要好到哪里去了,更有说服力, 赶紧申请授权转载过来,原文链接:GitHub 是怎样的一个存在? 我今年大三,刷 Github 刷了不到一年,有了几个看起来还行的项目,一年公开的 Commit 数也过 1000 了。虽然我之前听说过一个有内容的 Github 账号会对面试有帮助,但是我没想到帮助会这么大。
参加今年阿里面试的过程中,面试官对我的 Github 上的项目很感兴趣,跟我讨论了很长时间。同时也无意中谈到 StackOverflow,我说我在 StackOverflow 上回答过问题,现在 Reputation 有好几百,面试官直接就跟我要账号,针对我在上面回答的问题也谈了很久,并且推荐我把 SO 账号也写在简历里。面试官最后说了一句话让我印象特别深刻,大体意思是,面试官希望看到这种能够真正展示你解决问题能力的东西,而不是只是在简历上写会什么什么。不管是 Github 还是 StackOverflow 记录的都是没办法造假的,实实在在的努力。这也是为什么面试官希望看你的 Github 账号的原因,就是希望能看到你能力的实际体现。
所以,如果题主要走技术路线的话,最好让在简历里加上那些能够体现你能力的东西,不管是上架的 App,上线的网站,还是一个绿点满满的 Github 账号,Reputation 爆表的 StackOverflow 账号。它们的作用就是为了增加简历的”可信程度“,让你的能力不仅体现在简历这张纸上,而是变得更加鲜活立体。
PS:Github 刷多了真的会引来一些关注,我已经收到好几封国外的创业公司的邮件了,可惜我还没毕业。
下面是码农翻身对刘佳亮的一个简短采访:
Q : 请问你是什么时候开始和GitHub/stackoverflow 亲密接触的?
A : 我是从大二的时候开始接触 Github 和 StackOverflow。不过由于当时什么都不懂,两个账号基本都属于挂机的状态。我从大三才真正花时间去深入了解和参与到这两个社区当中。
Q: 你是如何在GitHub上找到自己想参与的项目的?
A: Github 上几乎能找到所有语言所有方向的项目。当时我在 Github 上找开源项目主要是从我自己的开发方向下手的。最开始我主要是在做 Python 开发,就接触了很多 Python 开源项目。后来重心放到 iOS 开发上,就逐渐开始接触 iOS 的开源项目。我接触开源项目主要是为了学习。Github 上也有很多很好玩的项目,例如 Code Combat,这种项目参与起来也会很有意思。如果它使用的语言又正好是你想研究的方向就再好不过了。所以“自己想参与”其实一个很主观的东西。
Q:需要完全读懂一个项目的源码才能参与吗?
A:并不是。实际上很多大型开源项目的维护者都不能“完全读懂”一个项目的源码,毕竟现在的大型开源项目的规模越来越大,维护者通常也只是对自己维护的那部分代码做改动。除了作者之外,很少有人敢说自己对所有的代码都熟悉。还好开源项目并不都是成千上万行的大型项目,有很多小而精的项目也值得我们学习,例如 howdoi (https://github.com/gleitz/howdoi)。很多个人的小项目也是水平很高的。因此我建议还是从小一些的项目入手,小项目的代码通读一遍也不会花太长时间,等熟悉了整个社区的运作规则之后,再试着接触一下大型项目,可以先帮他们解决小 bug,或者参与 feature 的讨论等等。
Q: 大学期间,我没有实战的项目可做, 能不能参加GitHub上的开源项目? 怎么找到切入点?
A:Github 上并不一定需要是实战的项目,好多学弟现在把平时的作业,实验都放到 Github 上去了,也是一种很好的实践(不过老师可能不这么想...)。参与别人的项目,从某种程度上说比自己从头写还要难一些,因为要先了解别人的思路,之后才能贡献代码。因此我建议还是从自己做项目开始,不要一开始就想着“参与别人的项目”。一屋不扫何以扫天下?自己连一个项目都维护不了,何谈去给别人的项目作出贡献呢?至于项目来源的话,除了作业,实验之外,也可以从自己的生活中发现需求。像我自己为了翻 X 做了 SimpleDNS,为了听歌方便做了 pyfm。这些都是我自己想做的东西,做起来也有动力,同时也能学到很多东西,一举两得。
Q:参与GitHub是不是对英文要求挺高的?
A: 是的,目前 Github 和 StackOverflow 这种大型的程序员社区当中都是使用英文来交流的。英文好的话,在混社区的时候就会压力更小一些。好多同学可能英文水平不够,看到英文就感觉很慌,这样的话对自己确实是不利的。我从高中的时候英文阅读量就比较大,因此英文阅读对我来说没有太大的障碍。如果有时间的话,建议同学们还是要继续学习英文,提高英文阅读量。没有时间的话,就克服掉心中的慌,坚持让自己浏览 Github 和 StackOverflow,坚持用 Google 英文搜索。看网站本身其实也是在练习英文的阅读,等积累到了一定的水平,相信你英文阅读的水平会有很大提升,参与到社区中也就没什么压力了。