为什么说你的员工应该去为开源做贡献

这是一篇写给普通员工如何去说服老板让自己去在工作时间去为开源做贡献的文章,中层经理、老板也不妨一看。这是一个开源的时代,必须花钱雇佣员工去为开源做贡献,否则就会错过很多蛮好的机会。

英文原文:Why Your Employees Should Be Contributing to Open Source

译者写在前面的话

我来说,在职业生涯中,就说服老板参与到开源社区中是非常失败的,甚至于最后均是不欢而散。那么如果当初我也能像作者一样,以平和的心态、严谨的数据、耐心的说服,结果可能会好点。年少轻狂之时,只注重自己的内心世界,认为不懂的可以通过努力去获取,而忘却了这个世界的复杂,他人是否愿意学习?他人也是有许多经历和接受了许多文化、意识形态的。改变自己可以,想要改变别人是不可能的,哪怕是影响都微乎其微。现在的我,看人要谨慎许多,在头脑充血的那一刻,尽可能的去做深呼吸。然后,再以理服人。

相信这篇文章对于每个热爱开源,对开源充满美好憧憬的年轻人,依然还在为他人打工的有志者。说服自己的老板、或者是为开源尽一份力。是有一定用处的。


多数老板是不乐意员工在工作时间去为开源做任何的贡献的,他们想不明白为外部的开源项目做贡献如何能够让他们自身以及他们的客户受益?

只有为数不多的公司会鼓励他们的开发团队去为开源做贡献。所以有很多做开源项目的开发者都是在白天下班之后,但是这样就会经常的熬夜,会对健康造成严重损害的。 这样的话,就将很大一部分优秀的开发者们排除在外了,如有了孩子的父母、或者是家里有正在上学的孩子,这些开发者们就没有时间参与到开源项目中,即使是对所有人都有好处:他自己、其老板、乃至他的客户。

非常遗憾,老板、员工、以及客户,都没有意识到自己错过的机会。

多数雇主或老板仍然将软件的开发视为和在墙上涂鸦是一样的。如果我增加更多的工人,那么完成工作任务的时间就会线性的减少。 在某种程度上,这样做是对的,但是它并不适用于软件项目。打造一款软件产品,在整个技术栈区分多个不同的层次,每个层次都需要不同的技术。驾驭复杂的软件取决于团队掌握的知识以及团队成员的相互协作。

如果一些经理们对于自己的雇员们在日常工作时间为开源做贡献有所担心的话,他们一定是这么考虑的:“为什么我们花钱雇佣工人为他家的墙上涂鸦了呢?” 本文试图解决经理们的这一疑惑。将探讨为什么说让员工们为开源做贡献好处多多--即使是在日常的工作时间去做这件事。

开源可以留住员工

开源是一个学习的绝佳之地。每个项目都有各自的结构、工具、特点、和流程。参与到开源项目是最佳学习其内部机理的方式。

他们使用哪款工具?其它团队是什么样的流程?通过参与开源,工程师们可以深入了解其它的高端项目,而不是等待某些许可方可进行参与。

开源对团队有好处

如今,很多的商业项目都严重依赖于开源软件。其中一些 Bug 和特殊用例只能在大型的、巨大流量的部署中发生。在这样的情况下,我们需要专家能够及时的修复问题,问题根源的分析只有让对所使用的技术和程序内部有深刻了解的团队去解决,才能更快。他们毋需依赖其它项目的维护者,就可以自行去解决问题。

一位贡献者(代码提交者)本身就是解决问题的能手,若是能够在团队内部,做到日常的回答其他工程师的小问题,做到为他人提供指导,这样整个团队就可加速成长,进入一个正循环的高效团队,从公司的角度来讲,可提升业务。

有助于员工的培训发展

每家公司都希望雇佣到市场上那些受过最好的教育、拥有高超技能的工程师。但是现实是非常困难的,大多数的时候是需要自己来培养优秀的工程师的。正如我在上面所提到的,那些参与多个开源项目贡献的卓越的工程师是不会换老板的,他们在开源项目所锻炼出来的技能、知识、以及经验要比仅仅是自己公司那点狭小的空间所积累的要快太多了。开源可以有效的增长工程师的技术和领导力,这是大家都有目共睹的。

开源可以作为一个很好的演练场地

一些开发者们拥有自己的、小规模的演练场地,还有一些开发者为大型项目贡献目的“仅仅是为了好玩”,无论是那种情况,对于绝大多数的工程师们来说,开源是他们演练场地的不二之选。那么找一个演练场地究竟有何好处了呢?

演练场地是尝试新的概念和模式的最佳场地。而往往这个演练场地是开放源代码的话,就可以很容易的获得高手们的反馈,代码就可以在各种沟通的地方,如小型聚会、大型研讨会、乃至在线IRC等。

来自其它公司的工程师带来不同的背景以及用例,通过这种方式,他们可以获得更深层次的洞见。多样化的组织往往会比一个公司内部单一的团队能够达到更好的效果。

开源可以激励士气

公司让其员工在工作时间参与到开源项目中,是绝对有益处的:

  • 我们获得了学习和发展新技能的时间。
  • 我们出色的工作,终将会被更广泛的其它公司或个人所了解,而不仅仅限于自己的内部。
  • 我们可以很容易的和其它公司的工程师们一起讨论代码、设计思路等。

在办公时间内让工程师去参与到开源社区中,那就是这个时间段内有大量的社区开发人员们都在线。另外,在当今的竞争激烈的市场中,能够得到免费的宣传非常的不容易了。更何况还能找到优秀的人才。

译者注: 此处应特别针对中国的开发者,美国的开发者们依然在开源项目中的占绝大多数。所以时差的关系,中国地区的程序员们,和老板带来的挑战有多了一重障碍。

对于每个项目都有好处

一些工程师为某深奥的编程语言实现解析器的功能,原因只是为了好玩。还有一些工程师,实现了一个让人们画 8-bit 的艺术画作的网站。每一位参与到开源的人,都会被开源的积极因素感染以及间接的影响。只是在刚参与的时候,表面上看起来这些积极的影响不够明显罢了。

我以我的工作为例和大家分享一下,我的工作是开发数据库以及它的管理界面。数据库拥有 HTTP API:如果你将一份文档存入到数据库,随后你可以使用一个独特的 URL 来进行访问。

在过去的一年里,我们收到了几份关于我们用户界面的一些的 Bug,如用户创建了文档,但是却无法使用 HTTP 来打开它们。当我们自以为解决了这个 Bug 的时候,它却又在意想不到的地方再次发生。最终找到了问题的根源,那就是产生此 Bug 是因为使用了特殊的字符,所以我们假设使用了一个错误的编码。但是,另外一个团队解决了此问题,使用16进制的RFC就可正常工作。

看起来似乎和我所从事的数据库没有任何关系,但是它影响到了用户,具体表现还是数据库的问题。于是我参与了另外一个开源项目:WHATWG,这是一个用户终端标准的编辑器。终端标准则是尝试将不同浏览器中的终端给标准化了。Web 标准可是现代web的基石。

这对于我本身的有关数据库的工作有何好处?好问题!当我开始做这件事的时候我并没有想过太多的益处,但是在几个星期之后,一个意想不到的效果出现了:我们又接到了同样的问题的报告,此问题是我几个星期前就创建的,而且还链接到了RFC,这次,我则为之增加了更多的细节:验证、算法、实例、 RFC 的部分以及 WHATWG 实现的笔记等。

一个看起来和我的工作无关的项目,但是却对我的日常工作有着频繁的、间接的影响。这很好的解释了一个完全无关的项目可以让公司产生积极的影响。

译者注:开源是一个具有生命力的世界,由无数的细小的项目所组成,需要以生态系统的眼光来看待。举个例子,去年爆发的 heartbleed 安全漏洞,影响的站点何止千万?但是 OpenSSL 在没有爆发之前,又有多少人关注? Linux 所用到的库,应用基于 Linux 编写,使用到了 Linux 内核的某些功能等等不胜枚举。

总结

支持开源对于雇主来说是好处多多的,项目中所参与的每一位都有益处,不仅仅是指开发者,还包括客户和雇主。目前来说,依然还有很多开发者参与开源是在晚上和周末这个时间段进行的。这其实对于他们的健康来说非常的不好,而且也不可能长期这样下去。这对开源的长远发展来说不是一件好的事情。仅仅只有少数几个公司意识到了花钱雇佣开源的开发者是很有价值的,这些公司会让自己的员工全职为开源做贡献。

对于你来说,一个想要改变目前困境的好的办法就是去找管理层去谈谈,给他们看看这篇文章,或者是做一些幻灯片的演示。建议以一些小型的实验开始,比如说在你自己的团队设一个有几个月期限的实验,说不定公司看到诸般好处之后,会让大家利用20%的时间去直接参与到开源了呢。当然你要做到不断的提供、有理有据的反馈,尤其是管理者们比较关心的。在你的团队里要分享,无论是那些积极的,还是所谓的消极的影响。

我非常的肯定,长远来说积极的因素要远远多于消极的因素。管理者会看到这其中的益处的。然后会在整个公司范围内支持你的观点。这样我们就有了改变我们所为之工作的公司的机会,不用担心,我就是刚刚这么干的,而且还很成功。


译者写在翻译完成之后

就国内的情况而言,不容乐观。仍然是文化的问题。大部分的雇主和中、高层经理的思路是:“哦,我花钱培养了两、三年,让其在社区混出个名堂了,然后有人高薪挖走了,公司和我付出的心血全部付之东流。” 这是一个死结,非常的难解:

0、面对高薪的诱惑,对硅谷文化的曲解,视职业道德为无物。另外国内的环境对于诚信、推荐信之类的机制为空白。

1、企业降低不了自己的身段,社会主义国企思路,对于自己员工在社区表现没有科学的考核,以及相应的激励机制。

另外,本文是典型的工程师思维,可能这样的话语很难让非工程师出身的高管们看懂或理解。可能加上管理和营销的角度,会更具说服力。