如何优雅地参与开源开发?
不可否认,参与开源项目开发会占用很多原本可以用来打游戏、看动漫等娱乐项目的时间,通常也不会获得物质方面的回报。即便如此,还是有很多同学乐于参加开源开发,原因通常有以下几点:提高编程能力。这一点大概是最为直接的收获了。开源社区的每一份贡献都会收到其他社区成员的代码评审(Code review)。在这个过程中,能够收获到很多在学校里学不到的编程经验。
一些刚从学校编程作业转战Taichi社区的同学,第一个PR的几乎每一行代码都会因为规范性有待提升收到修改意见,一个PR里面有超过50个修改意见也不少见。千万不要受到打击,reviewer只是在帮忙:-)但是他们在后续的PR中,代码质量就会有很大改进。这其实是一个很好的学习过程。事实上,在开源社区学到这一课,远比上班第一天被leader上这一课要好的多:-)
在Taichi开源的几年之中,我们也见证了很多社区参与者的快速成长。社区maintainers也在一个个PR中投入了大量的精力,与开发者一起成长。这本质上是一种互惠互利的过程,而开源社区本身也在这种双向的发展过程中逐渐壮大。
别怕,社区的同学带你一起学...(source:reddit)
通过设计决策解决实际问题的能力。俗话说“小孩子才做选择,大人根本没得选。”稍微复杂一些的实际问题中完美的解法往往是不存在的。悲观点说,设计决策就是权衡利弊,特别是项目具备一定规模以后。软件开发者需要在“这也不行,那也不行”中找出最不差的解决方案,从全局视角以最为实用主义(pragmatic)的精神进行设计,从而解决问题。即使在开源社区,要真正做出有人关注的软件,大家通常想的也是解决问题,而不是炫技。
领域特定知识。在Taichi社区主要的领域特定知识是编译器、计算机图形学、高性能计算等等。不同的社区有不同的领域特定知识,如TiDB社区很明显就是围绕数据库展开的。毋庸置疑,每个社区都聚集着相应领域的大佬。
团队合作能力。我们汉字文化圈自古以来就强调集体为先,但是教育中却相对缺乏关于合作的教育(毕竟各种考试的时候一定是单兵作战嘛)。这意味着我们在GitHub上与世界各地的伙伴合作时,更要注意充分沟通、有效合作。
朋友。比如Taichi开发者社区中既有潜力无限的中学生,也有身经百战的工程师。其中不乏清华/北大/MIT/CMU等学校的本科生、研究生和研究人员、Google、Facebook的专业软件工程师、IOI/NOI金牌获得者等等。“三人行必有我师”,GitHub作为“全球最大(同性)交友平台”,自然有不少自带闪光点的程序猿、程序媛出没,与他们合作本身就是一种乐趣。
我和匡冶( k-ye)就是在GitHub上认识的,经过一年时间我们在GitHub上一起编写了大量代码,建立了深厚的信任,最后决定出来创业,在此之前我们线下没有见过一面。Taichi社区早期的绝大多数开发者都相互之间成了很好的朋友。毕竟程序员最喜欢的就是以码会友嘛。
成就感。为流行的开源项目贡献代码,本身就是一种有成就感的事情,因为你的代码会被大量的用户所使用,为社会创造出价值。
从实用主义的角度来说,如果成为知名开源项目的贡献者,这个经历会成为简历上的一个亮点。我相信不少公司的技术团队在招聘的时候是会看应聘者的GitHub的。我们就收到过一份海外图形学研究者的简历上赫然写着“给taichi社区开过30多个issues。”taichi https://taichi-lang.cn/
页:
[1]