秋招看到github上不错的项目,但不知道该咋学?

作者:阿秀

原文链接:https://mp.weixin.qq.com/s/XY3fbN-PWYCymOG8r8X7og (opens new window)

你好,我是阿秀。

昨天的文章中提到了校招过程中简历上相对而言比较重要的两个地方:实习经历和项目经历,昨天已经聊过实习相关话题,今天来聊一聊项目经历。

打算找技术岗的同学简历上可以没有实习经历,但绝不能没有项目经历,项目经历是你证明自己代码能力和实践能力的最好方式。

此外有一些项目可以说是"烂大街",比如Java的电商秒杀项目或者RPC项目,C++的Web服务器,话说阿秀自己秋招时简历上的第二个项目也是Web服务器,自己在面试中主要聊的都是实验室的项目,具体详情可以看下阿秀自己的简历迭代修改文章,这里就不细细展开了。

今天就来聊一聊:在github上看到了好的项目,应该如何去学习

自己造不出来轮子没关系,可以先看看别人是怎么造轮子的,在看懂别人造的轮子基础上,再加以修改,将某些功能完善、改进后也可以算是自己“新造的轮子"了。

# 1、疑问

阿秀的学习圈》是阿秀自己组建的学习圈,本来是打算记录自己的学习和充电经历的。后来也慢慢也带着一些研究生师弟师妹以及本科的学弟学妹们一起学习和准备校招相关,目的很纯粹,就是通过自己的努力在校招求职中拿到一个好offer,拥有一个好一点的职业起点。

阿秀的学习圈中就有一位本科学弟,他在github上看到了不错的项目,但不知道应该如何开始学习,自己也没有阅读源码的经历,不知道该怎么上手。

下面是这位学弟在学习圈中的提问原文:


秀哥好,我最近在Github上找到了一个rpc项目感觉还不错,但是自己没有什么阅读开源项目的经验,不知道从哪下手.

想听听秀哥的建议,从Github上下载下来项目之后应该怎么把它研究明白呢?

研究到什么程度才算明白呢,请秀哥解答一下,谢谢!

# 2、分析与回答

其实这位学弟的疑问换一种问法就是怎么学习github上的优秀项目,github上的好东西实在是太多了,但有时候”万鸟在林不如一鸟在手“,先搞定一个再说其他。

阿秀这里简单介绍一下自己以前的学习方法和经验吧,以下是阿秀在学习圈中对这位学弟的回复原文:

github上的优秀项目可以分为两种,前端项目或者是后端项目,但不管是前端项目还是后端项目,最重要的就是先跑起来!先跑起来!先跑起来!

重要的实行要说三遍!不管是前端项目还是后端项目,一定要跑起来,跑不起来就不要其他的了,项目跑起来的方法一般都是源目录的README.md文件中,一定要好好读几遍,这里也建议多去看一些star数量比较高的项目,因为这些项目往往都是有人在维护着,文档相对齐全一些。

1、第一步就是让项目跑起来!如果是前端项目的话一般都需要安装一些依赖,npm或者yarn就可以,如果是后端项目往往需要先看一下配置,做好本地配置,比如数据库名、表名初始化之类的,只有先安装好依赖/配置好文件才能顺利跑起来。

如果你配置不起来,就去项目的issue中看看一些前人提出的问题,看看里面有没有跟你当前遇到问题一样的情况,

这是第一步,先让项目跑起来为算,没有第一步,就不用谈下面的了,赶紧洗洗睡吧。

2、第二步就是找到项目入口,然后细化功能,找到自己目前比较感兴趣的模块或者一个关键模块,找到这种key点,从具体的小模块入手,不要妄图一口吃成个大胖子。

因为一般比较成熟的项目都是由很多个模块构成的,我用简单的XX管理类项目来做例子,前端项目来说就是一个个的模块,比如登录页面、管理页面、dashboard页面,每个页面上有着各种组件,去看看各个组件之间是如何耦合在一起的;后端项目的话来说就是由一个个小功能模块结合在结合在一起的,比如登录模块、日志模块、数据操作模块、数据库连接模块等。

先找到一个你感兴趣或者你需要去改的模块在哪里,从这种地方开始你的工作,比如

  • 前端按钮点击事件会引起什么后续操作?
  • 数据流是如何导向的?
  • 后端如何接收一个请求的?
  • 如何校验用户名?
  • 如何连接数据库?
  • ....

3、第三步就是动手实操,开始动手改,从copy开始。

太难我改不出来?没关系,不会改,我还不会抄吗?

我先抄一遍,原项目怎么写我就怎么写,最后我要实现跟源一样的功能,能够用我现在写的这个模块完全替换之前的原生模块,这个步骤一定不能省!

手会了才是真的会了,脑子会了不叫会了。

如果这个你能做到,下一步就是开始魔改了,在项目原有基础上加上你想要的功能,你想实现的功能,前端加个页面,后端再加个接口之类的。

4、第四步就是由点及面,挨个搞定。你搞定了第三个点,那就可以去看看跟刚魔改完模块比较接近的几个模块,最好找跟第三步比较贴近一点的模块,因为那样容易有连贯性,也比较容易接受,而不是再次从0开始,慢慢啃。

以上就是阿秀自己在学习github项目的方法和经验,我就是用这种方法去学习github上比较优秀的项目的,以至于后来看到一个项目后很快就能抓住该项目的重点所在!

# 3、秋招加油

其实如果项目看的多了自然就会明白有些东西其实是换汤不换呀,很多东西都是类似的,你也就知道哪些地方可能比较重要,也知道自己该朝哪个方向使劲了。

最近阿秀在自己的学习圈子 (opens new window)里发起了一项秋招结伴而行、相互监督的活动。

因为两年前我就是只管学自己的,剩下的全都交给时间了:双非渣硕的秋招之路总结(已拿抖音研发岗SP) (opens new window)没有什么逆袭,有的只是一点点坚持! (opens new window)

直到如今工作了,我依然保持每天学一点点:坚持充电!我离开学校后坚持学习135天了! (opens new window)一天可能做不了什么,但是一周、一个月能做的就有很多了。

如果你能拆解自己的目标到每月、到每周,甚至到每天具体需要做些什么,并且去执行,剩下的就是交给时间了

我始终相信成功是一步一个脚印走出来,而不是什么一蹴而成,每天坚持一点,这样才能积少成多、聚沙成塔、水滴石穿。

如果能够有小伙伴一起结伴而行,也能起到相互监督的作用,目前已经有超过4****00多名小伙伴加入了,希望他们都能在今年校招中收获胜利果实!

此外,对于每位阿秀的学习圈中的圈友也会奉上自己以前的学习和校招面试总结笔记,也就是《阿秀的学习笔记》PDF版本:计算机校招求职八股文PDF版本 (opens new window)

秋招结伴而行、相互监督打卡->戳我查看活动详情