互联网经过这么多年的发展,可以肯定的说,大部分程序员遇到的问题都被其他人碰到并解决过。行业里经常听到一句话,不要重复造轮子。因为你造的轮子可能还没现成的好。与其自己打造,不如加入到现成的开源项目中,把原来的轮子打造的更好。
在《大教堂和集市》这本书非常详细的解释了大教堂和集市两种开发模式。大教堂就是公司聘请员工,有规划的开发软件。集市则是开源的方式,大家因为兴趣或者因为某个问题而驱动去开发。我认为这本书想要表达的一个核心观点就是,大教堂模式开发的软件问题多,修复慢,不如开源出来,让所有人一起来完善软件。而公司则不再通过软件的“销售价值”来赚钱,可以通过对其他公司使用软件服务来赚钱。
Linux是第一个通过开源模式被开发出来的非常复杂的操作系统。在当时是不可思议的。就像是一群“乌合之众”造出来世界上最精致的工具一样,让人难以置信。从此,开源模式开始流行。我们现在使用的很多中间件、软件工具都是开源的。
大家最近熟知的可能就是区块链,区块链的底层也都是开源的。这是怎么做到的呢?要知道,在《人月神话》这本书里,有一个Brooks定律,讲的是项目的复杂度和沟通成本与开发人数的平方成正比。对于软件开发来说,参与研发的人数越多,项目需要完成的时间越长,出错的可能性也就越大。那linux系统是怎么做出来的?我的理解是,因为开源的规则本身就把任务切分为一个个非常小的模块,每个开发人员参与研发都遵循特定的编码规范。这样,只针对这一个模块是不需要进行大量沟通的。复杂度就不会增加。而且,每个提交的修改版本,都会有人专门审核,这样就建立了一种自我纠错的能力。
开源项目是能力的一种体现,你的编码风格,你的逻辑思路都可以从代码中看出来,读懂一个人的代码也就读懂了这个人。我曾经推荐过一些程序员拿开源项目来学习,毕竟在工作中用到了,看看它底层源码实现,对使用也很有好处。有时候因为业务需要,你还不得不修改底层代码。这时候可以尝试去提交PR,就算被拒了也没关系,千万别因此而沮丧。这是一个非常好的学习机会。而且,你很有可能会收到到某个领域大牛给你的反馈。
有时候并不是说你的代码不能解决问题,而是因为你写得不够简单,高效。但只要你持续地看和写,持续地提交,总有一天你会收到开源项目管理者的反馈。当有一天,你提交的代码,在开源项目里运行时,你就已经是一个非常厉害的程序员了。如果你真的想精进自己的编码能力,那么可以选择加入一个开源社区。
当然如果刚刚入行的程序员,可能看不太懂开源的代码。那么可以选择去读你们团队里最厉害的那个人的代码。不懂的就当面请教。这种学习方法既能了解业务,还能学习编码思维。这个方法并不难,适用于各个行业,亲测有效!
我从很多书里看到过类似的观点,幸福来源于贡献感。你帮助了他人,就能获得幸福。注意是贡献感,只要自己认为自己有贡献,那就能获得幸福感。我自己非常认可这个观念,只要能想到可以帮助到其他人,工作动力都很足。
很多参与开源的程序员大多不是为了利益性。我曾经听到一个案例:讲的是一家做开源的公司,因为不怎么赚钱,决定放弃项目。但下面的员工不愿意,说不给工资也要坚持下去。我相信驱动员工坚持的一定是幸福感。
上面是我认为最重要的两点。其实,不仅仅是个人,对企业来说参与共建开源社区也是很有好处的。现在的软件大部分都依赖于一些开源项目,如果企业能参与其中,首先可以接触到更多这方面的人才,这对招聘是会起到很多积极作用的。其次,降低自研成本,公司的技术难点只能靠公司人员,而开源软件的问题,是有一群大佬在解决。
既然工作中你已经修复了这个bug,那么顺带提交一下PR就是一个顺其自然的事情了。
既然你用了开源项目,那么案例其实也是现成的。其实参与开源很简单,关键是先从最简单的事情做起。
开源项目的现状
关于开源的现状,我推荐大家下载《中国开源发展研究分析2022》的报告,里面有非常详细的讲解。
下载地址:https://sourl.co/hUUTD4