这个人开始卖书了,开始开 live 了。然后有人说,如何判断一个人技术是否水、是否是商业互吹、是否xxx?
有人说,看 Github;又有人说,星多没用,可以刷的。而我说,刷是没用的,代码是你的痕迹,仓库的维护同样展示了你的性格、技术、认真程度。
那么,当一个人 post 自己的 github 作为简历或者是背书的时候,我们应该怎么看呢?
技术人的 Commit 情况
每当我们用自己账号给 github 上的仓库做贡献的时候,这里就会打上一个绿点,长期保持绿点的同学一定是经常给自己的仓库提交代码。虽然可以用脚本实现自动 commit,但是其实无法作弊。
因为,每一个 commit 都可以被查到。所以作弊没什么用,用自动刷 commit 的脚本的人,也不会用这个来证明自己很爱写代码。
因此,对于一个不刷 commit 的人来说,长期保持对自己项目的 commit 是一种非常难得的精神,这至少证明了,这个兄弟很爱写代码。
一个仓库的情况
watch/star/fork 这三个是最后才看的,因为并不代表这三个东西多,这个项目就是牛逼的项目,虽然普遍情况是如此,但是对于一些别有用心,找某宝刷星的同学来说,这就不是这样了。所以,这三个一般都不作为参考的第一标准
我们以 egg 为例子:
eggjs 是由阿里巴巴出品的一款企业级框架,其代码的严谨、细腻,文档清晰程度超越了大部分的 js 库。是一款值得信赖的企业级 node.js 框架
- eslintrc 和 eslintigonre :一款正规项目中,这两个东西是必须有的。这两个代表着这个项目是否使用了 eslint 这款 style check 工具。不要小看代码风格的检测,在一定程度上反应了项目维护者是否参与过大型项目的经验。在大型项目中,多个程序员的代码风格不一致的解决方案,就是通过 commit 的自动 lint 规则所约束的。
- .gitignore:没有 .igitignore 的项目千万别用,这几乎就证明了作者根本不会 git,也代表着这个人或许根本没有过团队协作的经验,甚至没有代码版本管控的经验,如果是实习生就算了,某些人如果一个项目说开源,没有这个东西,那简直就是灾难的。.gitignore 的存在是为了保证某些在编译时期生成的东西不被上传到 github,在前端而言, node_modules 是绝对不能上传到 github 的,通过 .igitignore 可以忽略掉 node_modules。
- test:不好意思,一个项目你可以没有描述或者你可以说代码就是文档,但是你的项目没有任何的 test ,这也可以证明了,你没有负责过中大型项目、甚至可以说,你对你写的代码过于自信。
- 测试覆盖率:一个项目是否有测试,测试的覆盖率又是多少,这足以证明了这个项目是否是一个好项目。为什么说 egg 不是一个kpi 项目的根本原因就在这里,框架的 test-case 非常齐全,覆盖率也是惊人的高 99%-100%。
项目结构大约是这几个比较重要和参考点
项目的 commit 情况
项目的每一个 commit 应该保持较为清晰的描述,并且非常推荐带上 commit 头,如:
- docs,文档类修改
- fix,bug 修复
- feat,升级、新增特性
- test,新增、修改测试
等等,每个 commit 清晰的目的在于能够知道这个 commit 到底是干嘛了,鉴于某些项目是这样的:
省省吧。。。。
技术人的星情况
星是可以刷的,但是代码不可以。但是夹在这其中的还有一种情况就是 pr 项目,当你获得一定贡献以后,你 pr 的项目会在你的面板中出现,虽然这个项目不是你的,但是他的星“好像是你的“
那么,我们应该如何鉴别这样的情况呢?
以大神 dan 为例子,他不是 react 的创始人,项目也不是他一个人在做,他只是对 react 有贡献,具体贡献了多少,应该这样去查看:
Dan 作为 react team 的核心成员,为 react 贡献了 30w 行代码,commit 数量也是最多的,这也就证明了,目前他是这个项目的主要维护者之一。那么这个人在这个项目中的作用至少从 commit 数量来看,举足轻重。
当然,有些人蹭 pr 改文档,也算是 github 的贡献,但是他是不是大神,就很难说了
例如在 react 贡献者中:
这个兄弟修改的都是 react docs ,那么只能说明这个人比较的熟悉 react 的 docs了。
总结:
- 项目星是最没用的,当然有时候也是最有用的
- 在钻进去看代码之前,可以看看项目的结构、规划以及一些常见的东西是否齐全,就可以判断这个项目是否值得去看
- 没有 test 的项目基本是垃圾项目
- 星多但是代码不行的人(不包括 awesome 等 md 项目)或者甚至没有 github 的人出的 live 千万谨慎。
- 当然,星多、代码写得好,也不一定就能讲得好。因为演讲、传授是另一个技术活。