开源的作用
软件开发过去主要在公司或组织内进行,与外部的合作很少。只有存在合同关系的情况下,才会与合作伙伴及其他人合作。开发人员很少能够分享或讨论他们正在进行的工作。你需要加入一家公司并按照他们的指示进行编码。在整个行业中,过往的工作几乎没有得到利用,工作的重复性很高。所有这些在 20 世纪 90 年代的开源软件运动开始后发生了改变。
在过去的 30 年里,世界变得互联互通而且越来越数字化。越来越多的企业和组织是建立在软件上,尤其是开源软件。行业研究显示,超过 90%的公司使用开源软件,我们的软件技术栈中有 60-90%是开源的。每一天我们都在使用开源软件。
开源也是我们进行现代软件开发的方式,我们将下载的开源库、框架和其他代码组合在一起,创建新的应用程序或功能。这就是为什么每个开发人员和高级角色都需要了解什么是开源以及它是如何工作的原因。
开源项目中的高级角色
许多科技公司的高级员工角色,如首席工程师或杰出工程师,可以在开源项目中工作。我在亚马逊的团队中有三位首席工程师,他们在开源战略方面处理公司范围内的激动人心的挑战。他们指导、影响并对整个组织的开发人员产生很大影响。许多人对人员管理没有兴趣,但希望在公司中产生广泛影响并解决重大问题。
在科技行业,一些高级员工角色可以管理一些专家团队,这些团队是特定技术主题的首选团队。我之前的公司的高级员工角色几乎都是个体贡献者(IC)角色。但现在时不时地,你也会看见带领小团队的高级员工角色。这使得高级领导者可以将他们作为技术专家的工作与人员管理角色相结合。这些小团队通常是专家团队,他们是该技术主题的首选人员,并可让个体贡献者将他们的知识扩展到整个公司。
我作为康卡斯特公司的工程研究员是这样的角色。我可以领导一个小团队,同时还有时间从事个人贡献工作,比如撰写论文和在会议上演讲。这是可能的,因为我领导的团队,即开源项目办公室(OSPO),是一个小型专家团队,为公司各个部门的开发人员和业务负责人提供咨询。这使我有时间从事个人工作,如战略规划、撰写论文或在活动中演讲。
通过灵活地选择只做个人贡献者,一个人可以将管理和个人贡献角色结合起来,为职业生涯增加更多的灵活性。即使作为高级个人贡献者,一位高级工程师也需要具备人际交往技巧,如指导他人、传达观点、谈判和影响力。
高级开发者为开源项目做贡献时所面临的挑战
首要的挑战是在工作之外腾出时间为开源项目做贡献。很少有机构会给你时间来为与你日常工作无关的开源项目做贡献。你可能需要在晚上和周末找到时间。特别是女性,她们通常有照顾他人的责任,很难找到额外的时间。
你需要说服你的组织,为什么应该允许你或你的团队花费一部分时间回馈开源社区。对一个组织来说,这些好处通常是长期的,包括信任和影响项目的能力等软性好处。因为组织都关注硬性、可量化的底线影响,所以管理者不愿意为团队腾出时间来提交补丁或志愿服务。
高级技术人员,比如那些高级职位的角色,拥有组织的信任,并且可以展示投入开源的时间如何有助于维持项目,尤其是如果它是公司路线图的关键依赖的时候。一位与我密切合作的首席工程师通常了解与开源项目密切合作的回报。他们向业务提供建议,指导我们的开发人员如何与开源社区项目建立关系,以便支持我们的客户。当我们在公司中对云原生开源项目建立起更多的专业知识时,事情变得非常有帮助。高级领导者可以借用他们的信誉和知识,帮助管理者投资对组织至关重要的开源项目。
高级技术人员或高级领导者还可以在开源活动中发表演讲,并在公司参与的社区中展示自己。公司内部会发生的困难讨论之一是是否应该开源公司开发的技术。公司重视对新想法进行专利保护并建立专利组合。当组织将他们的技术开源时,担心会让竞争对手得到机会,而不得不放弃他们的知识产权。然而,当你仔细研究这项技术时,你会意识到并非所有内容都需要保密。开源可能会使整个行业团结在你所创造的标准化方法周围。它可能使你创建出一个更具可扩展性的项目,具有新的用例或对新硬件的支持。特别是在该特定领域,高级技术人员可以在帮助组织思考为何要这样做方面发挥关键作用。
有些开源社区可能不太友好,很难参与进去。通常是因为他们没有太多时间来帮助新加入者。通过观察邮件列表,了解社区需要帮助的地方,你可以通过满足他们的需求来赢得他们的信任。让自己能提供帮助是打入困难社区的最佳方式。有时候,你可能不会成功,但需要继续前进。通过付出时间和代码贡献来赢得你的位置,这件事情需要坚持不懈。
开源项目和代码可能很复杂,没有文档或提交信息。这可能会让人难以理解并做出贡献。如果你坚持下去并付出时间,你就会有回报。
我的开源旅程
很多年前,我就成为了一名开发者,并对其他的技术角色充满好奇。这促使我去探索产品管理、市场营销和战略,在我的不同角色中广泛涉猎。
通过广泛涉猎而非深入研究,我能更有效地参与技术战略,并理解我们的创新和将产品和技术推向市场的不同方面。我在上世纪 90 年代末开始参与开源,这让我在公司中扮演了许多角色,从管理基于开源的产品到为财富 50 强公司运营开源办公室。
这些角色一点都不无聊,因为开源涉及法律、技术和社交等多个维度,这让我能够充分探索创建新技术的各个方面。我很幸运能够结识一些优秀的人,并参与一些伟大的社群。由于开源跨越组织边界,我经常与不同公司和来自非营利基金会的人合作。我有机会参加各种会议和会谈,游历世界各地。这是一段又有回报又令人兴奋的旅程。
参与开源贡献的软件工程师所获收益
了解开源的社会技术方式对职业发展有许多好处。参与贡献的人学会了如何沟通自己的工作,学会了与全球的人合作,并了解如何在开源项目和社区中运作。这些技能在高级及以上级别员工尤为重要,因为你必须发展自己的影响力和沟通技巧。
同时,确保一个项目生存下去并为用户提供服务,也给人一种使命感,尤其是如果这个领域是你热衷的。
许多知名的贡献者和维护者备受依赖他们项目的公司的追捧,这些公司需要他们的专业知识。维护者甚至可以在公司工作的同时继续做他们自己的工作。
我非常感激能够发现和参与开源项目,以及我所属于的伟大的全球社区的成员们。
开源对组织的好处
各个组织都在使用开源软件,并且需要雇佣懂得如何使用开源软件和参与开源社区的人员。拥有开源专家可以帮助组织管理对开源项目的依赖关系。使用开源就好像组织拥有了外部的开发团队,需要与他们密切合作。
通过参与开源社区和项目,公司还能够支持那些急需资源或资金以继续运行的项目。作为组织,我们广泛使用开源软件。开源项目通常是由志愿者运营的,并且很难维持项目的运作。通过为项目提供财务支持或所需的工作,公司可以维持项目的发展,尤其是那些公司可能依赖的项目。
支持开源的组织在招聘、保留和培养技术人才方面更加成功。他们可以在开源项目中展示自己的工作,并展示他们正在进行创新工作。
最后,开源有助于公司更快地创新,并让他们小而专的团队集中在他们擅长的领域,同时依赖开源来处理无差异的领域。
如何将人们的才能运用到开源中
参与开源项目或社区的门槛很低。你不需要签订合同或加入一家公司。你可以在 GitHub 或 GitLab 上找到喜欢的语言或项目,加入邮件列表,并找到帮助项目的方法。
项目通常会列出需要帮助的内容和初学者问题。你可以修复一个 bug,提交一个问题,帮助编写文档或翻译,甚至宣传这个项目。通常,项目需要帮助审查用户提交的问题,决定如何解决这些问题,或者审查开发者提交的合并请求。
项目的维护者希望你能帮助他们,而不是给他们增加更多工作。在开源中,我们称这些需要帮助的任务为"砍柴和打水"。这些通常是基础性的任务,如管理项目——保持文档更新、回答问题等。这些工作可能不够吸引人,但非常必要。
根据 Tidelift对开源项目维护者的报告,41%的开源项目只有一个维护者,并且非常需要帮助。通常,这些项目被全球数千名开发人员使用。这些资源匮乏的项目需要额外的帮助,以支持全球用户。
在开源中所做的工作可以丰富你的晋升或绩效故事。使用开源的公司认可开发人员在开源中的工作。成为项目的贡献者(有权接受代码并加入项目)或担任领导角色往往被公司内部视为一项成就。
我对积极参与的开发人员和高级员工的建议
参加开源活动,比如 Linux 基金会的开源峰会或Raleigh的开源大会。了解社区并参与其中。通常会有针对首次参会者和 101 课程的会议,它们帮助你参与其中。活动期间的走廊交流是与开源专家见面并了解他们的好方法。
看看你所在的组织是否有一个开源办公室(OSPO),以及你是否可以参与到办公室的工作中。查看你使用的项目及其社区,看看你如何贡献和支持它。
像首席工程师和高级研究员这样高级角色通常是成为开源办公室顾问和战略家的最佳选择。他们通常能够提出为什么公司应该开源某个项目的论点,并向业务上提供建议,以投资于员工和支持该项目。在我负责开源办公室的所有组织中,与高级技术人员的合作是制定正确策略和在开源方面投资的关键。
从小处着手,并持之以恒,这将是一次有回报的体验,有助于你的职业发展并带来个人满足感。我见过的最好的贡献指南之一是 GitHub 创建的开源指南。
原文链接:
https://www.infoq.com/articles/developers-staff-plus-open-source/
评论