当为开源项目和社区做贡献时,众多好处之一是您可以提升您的技术技能。在本文中,听取三位贡献者的分享,了解开源如何帮助他们找到工作或提升职业生涯。
Alexander Yurchenko,Yandex 的开发人员
在我找到第一份有报酬的工作,即集成系统开发人员时,我已经成为 OpenBSD 内核的正式开发人员一年了。“正式”的意思是我拥有对存储库的写入权限。在那之前,我花了一年时间作为观察者,向开发人员发送补丁。参与这样的项目可以获得巨大的经验。一个好的、大型的开源项目拥有工作面试中通常对开发人员要求的一切:良好的计划、良好的编码、版本控制系统和错误跟踪器的使用、同行评审、团队合作等等。因此,在这样的环境中浸泡一两年后,您就有很好的机会成长为高级开发人员。
事实上,这就是发生在我身上的事情。我被聘为高级开发人员,而我的履历上没有任何正式的工作经验。第一周后,我的试用期从三个月缩短为零。
Kirill Gorkunov,OpenVZ 的开发人员
你可以说我偶然加入了 OpenVZ。那时我主要做应用程序编程,这与系统编程几乎没有共同之处。在某个时候,我得到了我的第一台 64 位笔记本电脑(一台基于 AMD Turion 64 的 Acer),并且因为我没有 64 位 Windows,所以我选择了 Gentoo。它或多或少可以工作,但其标准安装缺少某些驱动程序,所以我不得不从源代码构建自己的内核。在那里,我偶然发现了我的第一个错误(不是在内核中,而是在配置程序中)。在网上搜索没有找到解决方案,所以我决定自己解决这个问题。为此,我不得不理清许多相关的任务(如何以及使用什么工具来编译内核等等)。制作了一个补丁后,我将其发送到邮件列表。这个补丁真的很糟糕(事实上,我后来重做了它),但是,令我惊讶的是,主线/原生内核维护人员非常仁慈,并没有拒绝或嘲笑我。相反,他们解释了如何制作正确的补丁。
然后,我开始研究内核本身是如何工作的。从这个角度来看,项目的开源性质是无价的,因为它让我可以观看实际问题的解决过程。我经常想知道为什么事情以某种方式完成,因此联系代码作者的能力派上了用场。事实上,这样的开放邮件列表不仅让您可以提出问题,它们还可以作为一种知识库,您可以随时搜索解决方案。
总而言之,这样的环境对于新手程序员来说简直是天堂;它让他们可以尝试编程,看看是否值得。
几年来,我一直在修复代码、发送补丁、因代码不好而受到责骂,并因代码好而受到称赞。这段经历是无价的。你可以肯定,一旦你擅长了,工作机会就会随之而来。事实上,这就是我如何结识在 OpenVZ 上工作的内核开发人员的。我们一起决定继续研究 OpenVZ 内核和相关的东西,当然还有原生内核。
你必须理解的一件事是,虽然项目的开源性质对于学习如何编写代码至关重要,但所有项目都是不同的,并且开放性本身并不能保证代码是好的。提交到 GitHub 的糟糕代码仍然是糟糕的。然而,这并不意味着闭源代码是好的或安全的。
Alexander Polyakov,一位开发人员
我不认为我的故事有什么原创性。通常人们参与进来是因为他们开始使用某个软件,并意识到它有错误或某些功能无法按预期工作。如果源代码是开放的,那么您就有机会自己修复它。
dwm(X 的动态窗口管理器)就是这样。我真的很恼火必须通过 config.h 配置它,然后在之后重新编译。所以,我添加了通过 xrdb 进行配置,然后点击聚焦,等等。这些更改超出了项目的极简主义指南,所以我不得不 fork 它。
同样的事情也发生在 DragonFlyBSD 上。他们网站上的文字看起来很有趣,而且我对 FreeBSD 感到厌烦。然后发现缺少对英语以外语言的支持,也缺少对 ACPI 的支持。所以,我不得不从较新版本的 FreeBSD 移植所需的代码部分。IRC 上的伙伴开发人员提供了很大的帮助,提供了解释并帮助解决了问题。在那里,我获得了一些内核和系统库开发方面的经验。我甚至在这个过程中赚了一些钱——一位客户通过 git log 找到了我。他想在生产中使用 DragonFlyBSD,需要更好的 ACPI 支持和一些 RAID 驱动程序或其他东西。
我共同参与的另一个项目是 9front。在那里,我改进了 WiFi 驱动程序和已经熟悉的 ACPI。那个社区可能拥有最小的工作 AML 解释器实现。内核也很紧凑,所以更容易理解。
简而言之,为各种开源项目做贡献是您获得丰富经验的方式。不要害怕提交糟糕的代码(我们中最优秀的人也会发生这种情况),保持冷静(当因提交糟糕的代码而受到责骂时),并选择您真正感兴趣的项目。然后,您将获得经验并在做的过程中获得乐趣。
2 条评论