Why OpenSource
为什么要参与开源事业?这是一个非常好的问题。下面,我会对此发表几个观点。
先说,为什么会考虑参与开源。在工作了几个年头之后,我发现了一个问题——做了很多的项目,或大或小,我的角色只是个 Coding 的劳动力。 也许有人对此有别的看法,但是,对于走进 IT 行业的头三年了去我差不多就是这么理解的。学习几个框架,写段后端逻辑,改改页面上的按钮、菜单。 由于缺少经验,没有自己的想法,提不出好的建议。有些逻辑能力强的人,会感觉自己能够精通几个框架。但是,这些所谓的框架更新换代太快, 我们又不会总是那么年轻,总是有那么多的时间来无尽地学习。
然后,某个机会,开始对开源慢慢地有些了解。其实,这是非常地有意思的一件事情。我想,从 Java 开始走向编程之路的程序员们,应该不可能 没有听说过、用过开源的项目。但是,国内这些程序员里,却只有少部分的人尝试过去参与开源。
一开始,我也是抱着试试的态度的。当时,感觉做开源的人应该都很厉害吧,比如当时很流行的 Spring 框架。毕竟,用的都不是很熟悉,怎么可能 去参与开源开发呢。对,这就是很大的一个误区——参与开源项目,不一定只能是参与代码的编写。按照我目前的认识,代码编写,真的只是开源事业 中很小的一部分。
上面提到了一些企业开发中的痛点,对公司的项目没有足够的参与感。我这里问读者一个问题,不管你现在有几年的工作经验:对于你们公司的项目, 你有多少的话语权呢?项目的功能模块,要做哪些、怎么做,设计与技术架构都是由哪些人来决定的呢?在很长的一段时间内,这些都是由公司的 项目经历来确定的,我只是努力在 Deadline 之前交付。但是,在好的开源社区里,完全不是这么来的。
喊了多少年的单元测试,不再是说说而已,这是必须的,甚至比业务代码更加重要。
我感觉项目中,应该加上一个很棒的特性。先在邮件组里发一封邮件,给出原型,大家讨论一下。如果切实可行的话,可能几周、几月内这个功能特性 就上线了。也许,我的这个提议会给很多人带来一些遍历;也许,自己小小的虚荣心会得到满足。总之,好的开源社区一定民主,而不是专制的。
公司里的那个项目,我才做了一个月就被砍掉了。完全不知道为什么要做那个,也没有学习到任何的东西。在这里,要看你的眼光,选准一个好的社区, 你可以在这个社区里贡献五年、十年,甚至是整个事业周期。也许,你会做这个项目里的每行代码都很熟悉;当你再次说出精通时不再心虚。
参与开源的好处。
我在公司里干活,会有人支付我薪水。做开源,甚至都没有人来一步步地告诉我怎么做,完全蒙。更要命的是,没有任何的经济回报。
是的,参与开源,并不会有人来支付你工资,更没有奖金。我给你一个很虚,也很实在的理由,那就是开源会让你更容易知道归属感,让你不再感觉 自己只是个廉价劳动力。像 Jenkins、Kubernetes 这样的项目,除非你自己决定不再贡献,没有人可以阻止你参与。你也能很容易地看到,有很多 人在使用你参与开发的项目,包括你自己。
如果你喜欢技术,那么,当你参与某个项目三五年后,你会精通这个项目周边的整个技术栈。你会亲自看着这个项目的兴衰。之后,你还会发现除了 技术还有很多很重要的东西。因为,当你真正地开始关心这个项目后,你会想各种办法来确保她可以健康地发展。你会发现,当初嗤之以鼻的文档 真的太重要了。你会发现,沟通能力也是非常基础的要求。你会发现,你愿意借助各种机会来宣传你的项目。