本文作者:程序员鱼皮
大家好,我是鱼皮,前段时间给大家分享了我自制并开源的 免费 SQL 自学网站 ,可以用闯关的方式自学 SQL:
有很多朋友积极帮我找网站的 Bug,也很高兴这个网站能够对大家有帮助~
其中,还有一些优秀的小伙伴,主动给这个项目贡献代码:
无论提交的代码是否被我合并到项目中,都非常感谢这些小伙伴的贡献:
在这些贡献者中,有一位小伙伴着实让我感到震惊,他竟然只有 14 岁!!!
14 岁的时候,我还在背着父母打 DNF、QQ 三国等各种游戏;而这位 14 岁的少年,竟然已经开始在 GitHub 上给开源项目贡献代码了。。。
评论区的铁子们也被吓到了:
之前我确实在 B 站看到过小学生初中生自己开发系统的,但很多都被我当成是 “噱头” 了,但看了这位少年提交的代码,应该是认真的了。
以其中一个提交为例,这位少年想要给我的网站增加一个 SQL 临时存储功能,防止关闭浏览器后丢失。
他首先写了一段操作 LocalStorage 的代码,想要把 SQL 存储到本地 LocalStorage 中,单独看代码的命名和格式,感觉还挺规范:
但是呢,我并没有通过他的这段代码。
因为我的项目用到了 pinia
来进行前端状态管理,并且引入了 pinia-plugin-persistedstate
插件来实现 LocalStorage 和 pinia 的自动加载和同步。
这位少年态度非常认真,我也给了他一定的鼓励和改进建议:
我回复完这段话后,这位少年很快就给了我新的反馈,表示自己要去学习下 pinia:
我本以为不会有后文了,起码得去学一阵子吧。但没想到,他很快就给了我新的回复 —— 竟然已经改完了?!
看了他上面回复的话,我觉得十分可怕。这段话中,体现了这位 14 岁少年的谨慎、谦逊、专业性(知道引用参考文章),甚至还有 “防返工意识”(以免我写了半天都是错的)!
而且他还有节约存储空间的意识,光是这点已经比很多有实际工作经验的同学要强了:
从交流中,我明显感觉这位少年应该是兴趣驱动的编程学习者,感觉是听到一个技术后立刻就去学习了,而且他很擅长利用网上的文章和资源来学习。
如果大家是要从 0 到 1 入门编程,我是不推荐这种学习方式的,因为漏学一个基础知识点,可能就会导致后面学习的知识不成体系、不循序渐进。但是像这位少年是基于兴趣学习编程,没有什么工作的压力和束缚,我觉得继续按照自己的兴趣,想学啥就学啥,想做啥就做啥,真的挺好~
后来,这位少年又给我的项目贡献了 2 次提交,也都挺认真的:
不过到目前为止,他的几次提交还都有可改进之处,所以暂时没有合并,期待他继续改进,也希望能让他有所收获吧。
现在学编程的同学很多,但是敢给开源项目贡献代码的同学寥寥无几。其实我想说,给开源项目贡献代码是一个非常好的学习机会,还能免费和大佬 1 对 1 交流;而且很多项目的参与门槛是很低的,只要你认真地在本地跑通了项目,阅读一些代码,说不定就会发现一些小 Bug。哪怕改正一个小 Bug 也是有价值的贡献,也是能写在你的简历上的。
一位 14 岁的少年都可以无所顾忌地参与开源,我们又为何不去尝试一下呢?不用怕自己贡献的代码不被接受,哪怕没有被合并,通过和项目作者交流,也会给你带来收获。
这里也给大家 3 个让别人更容易合并你代码的方法:
1)遵循原项目的写法,不要用和原项目不一致的格式、命名、写法,否则大概率是要被打回去的。无论是开源还是公司内协作开发,跟大家保持统一的规范都是至关重要的。
举个例子,下面的代码本质上是完全没改变的:
有同学会觉得这行代码哪怕改了,也不影响提交。但这只是一个例子,如果你的项目中,有 100 个类似的 “没必要改动的改动”,看你代码的人该如何应对?
2)提供代码改动说明,以及代码改动后的运行截图。
像下面这位同学一样,我很轻松地就合并了他的代码:
因为我们在代码审查页面,是不知道改动后的代码能不能运行、运行出来是什么效果的,所以贴上一个效果截图、或者是测试报告,还是很有必要的。
3)尽量减少改动,每次只改一个功能、Bug 或模块。
这点也很好理解,因为单次合并的代码越多,对项目的影响可能就会越大,项目负责人合并代码前就要越谨慎。而如果你只是改了一个字符串的值,读代码的人舒服,也就更容易合并代码。
像下面这种提交,看了一眼就给他合并掉了,直接成为项目贡献者:
OK,大概就分享到这里,所以大家不要害怕贡献代码。多看开源项目,多学习他人的写法,多和他人交流,在实战中学习,这是一种最快的进步方式。
欢迎学编程的朋友们加入鱼皮的 编程导航 ,和 2 万多名编程学习者共享知识、交流进步,学习鱼皮的原创项目并享有答疑指导服务。