您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

被低估的开源编程:忽视开源会影响你的职业生涯……

发表于:2020-10-09 作者:读芯术 来源:读芯术

本文转载自公众号“读芯术”(ID:AI_Discovery)

时至今日,很多人对于开源编程依然存在着误解和低估,这无疑令人震惊。资深开发人员通常十分尊重和赞赏开源编程,但大多数初学者往往并不知道开源编程潜在的机遇。在网上寻找实习机会从而获得报酬更具有吸引力,忽视开源的重要性似乎是可以被理解的。

虽然实习确实非常重要,我完全支持去实习,我自己也参加过一些实习,但忽视开源可能会对你的职业生涯造成影响。

自从几个月前接触了开源世界后,笔者就一直在研究它。如此简短的一篇文章,或许无法把我从中学到的东西完全用文字表达出来,但我会尽力而为。首先,笔者会简单介绍一下开源软件到底是什么。

什么是开源‍

开源软件与大多数人每天使用的软件并没有太大差异。事实上,如果你现在上网并尝试找到所有流行开源软件的列表,你会感到十分惊讶。例如,Mozilla Firefox、Ubuntu、WordPress、VLC媒体播放器等等。而它们与其他软件的区别到底是什么?是因为它们符合“开源”的条件,而其他流行的软件不符合吗?

很简单,在于它们有一些预定义的特征,这些特征定义了我们一直讨论的术语。

  • 免费性:这可能是开源软件最明显的特征。开源软件对所有人都是免费的,无论是开发者、用户还是所有者。它不会收取任何服务费用,如果它收费了,它便无法自称开源。
  • 透明性:这意味着所有使软件运行的代码都可以在互联网上免费浏览。你可以看到它,使用它,用它做你想做的任何事情。最重要的是,你可以参与其中,添加你自己的代码,然后把代码插入其中,从而改进软件。
  • 公平性:对许多人来说,这似乎是一个非常普遍的观点,但实际上这是开源一个非常重要的方面。即将发布的软件将对所有人开放,不考虑他们的种姓、宗教、领土、性别或任何其他可能区分人与人的因素。软件开放,人人平等。
  • 免费进一步使用性:似乎与第二点的重复了?不同之处在于,这是从程序员的角度出发,任何程序员/开发人员都可以自由地使用开源软件中编写的代码,用于自己的个人用途或项目。任何功能、任何特性都可以按原样使用,没有任何法律问题。

这就是开源实际意义的基本概述。了解这一切后,很明显,最终用户不会注意到开源软件和非开源软件之间的任何区别,除了前者更有可能是免费的。

参与开源的人员以及原因‍

很多人此刻都会想到这个问题。我们知道了这些软件是完全免费的,最初做这个项目的开发者似乎并没有得到任何报酬。那么为什么会有人愿意把宝贵的时间投入到这件事上呢?还有,我在这篇文章开头提到的机遇有哪些呢?

首先开源“付费”,而且报酬很高。人们通过开源赚钱的方式有很多种,但在我进一步谈论金钱之前,我想指出一些其他的益处,这些益处比金钱更为重要:

  • 知识、经验:当然,能够不断从工作中获取新的知识总是有帮助的,但远不止如此。在我个人看来,对于一个初学者,获得经验比较好的方式便是参与开源。人们会寻找实习机会,或者仅仅是简单的付费项目,而这些项目大部分都在公司名下,他们希望从你身上获得价值。

以笔者自身为例,虽然我参加过的每一次实习都有非常支持我的经理和学长,但参与其中一个依旧不是一件容易的事情。你会与大量的求职者竞争,竞争对手中很有可能出现有几个月甚至几年工作经验的“老手”。

真正参与一个现实世界的项目变得很困难,而开源为此提供了优秀的平台。在这个平台上,无论你投入多少工作,你始终是有价值的。压力会比实习要小得多,而且学习经验会好得多。正因为如此,这是获得更多的经验并参与更多的真实世界项目的最有效的方法。

  • 价值:在这个领域工作最重要的因素之一,你得到的价值将是惊人的。这些价值可以来自公司、个人、这些项目的所有者以及各种编程社区,拥有一个好的开源档案终归是一个很大的优势。
  • 专业网络:对于这件事情我经验颇丰。在网上做项目时,你会和很多人合作,合作包括大量的交流。交流过程中,我们形成了很多专业的联系。在我活跃的LinkedIn联系人中,有来自伦敦和阿姆斯特丹的人,你永远无法设想什么时候你的专业网络会给你带来怎样的帮助。
  • 机会:这一点与第二点密切相关。具体来说,是来自公司的价值。包括谷歌这样的行业领袖在内,很多公司都非常关注开源,他们最负盛名的项目之一GSoC(Google Summer of Code)就完全基于开源。只有拥有一个好的开源档案,并且参与的项目也是开源的,这样才能够进入公司,而这说明了目前这个领域在行业中的重要性。

GSoC并不是唯一,还有数百个有声望的实习岗位在招收具有良好开源技能的人。Outreachy、MLH、Linux Foundation只是一些例子,窥一斑而知全豹,这些公司对开源的依赖直接反映了它的价值。

当然,你会得到报酬,认为开源无法带来收入的想法是完全错误的。当你达到一定的水平,你就很有可能会从各种来源(实习,赞助商,公司付费)中获得大量的收入。许多人都十分努力地建立系统,以确保人们不会因为系统无法提供资金而不愿参与开源。就连我刚才提到的实习,他们付给实习生的工资都非常高,例如,Outreachy 3个月的津贴为6000美元。

我该如何开始呢?‍

这也曾是我困惑的问题,并且一直怀疑我所遵循的方式,直到我参与了第一个项目。答案就是:你只需要遵循你能想到的最直截了当的方法。然而,我们是否应该在知道如何做之前,了解所需的技能什么?

不需要。直到现在,无论我说什么,都会让人觉得你需要擅长编程才能参与项目。当然,这是因为软件是由代码组成的。但是问题在于,软件不仅仅是由代码组成的。一个单一的软件投放到市场会有许多方面:设计、内容、使用文档,甚至报告错误都是软件的重要组成部分。这些都需要编码吗?不。你只需要做你已经擅长的事情,并积极参与到需要你的项目中。仅此而已。

不过,在这里忽略编程是非常不公平的。一般来说,你并不需要学习一些新的技能。但作为一个程序员,参与开源确实有一些要求。

  • Git:Git是处理软件的常规方式。它并不是一种软件制作语言,只是一种检查代码的助力工具。利用Git的强大功能,人们可以在代码中创建检查点或创建分支,这意味着在保持先前版本完好无损的同时处理代码,以确保在需要时可以恢复原状。

本质上,Git是软件的版本控制系统,它并不是针对开发软件,而是对于在开发软件过程中与其他人合作来说,是极其重要的。此外,由于在参与开源时协作是最重要的,Git也变得同样重要。

  • Github:Github是所有开源托管发生的网站,它不是唯一的网站,但无疑是行业领袖。这基本上是Git的用户界面版本,当紧密集成时,它就成为了完全承载协作的资源。因此,它在工作流程中和Git一样重要。
  • 编程语言:参与一个软件,到最后,所有的东西都只是代码。因此,显而易见,了解代码所用的语言是至关重要的。

要求仅此而已。对于大多数程序员,他们已经知道一些编程语言,所以需要的新技能就是Git和Github。好消息是:学习它们非常容易,一两天即可掌握天。在YouTube上找一个好的教程,就可以开始了。

整个过程中唯一困难的部分是找到一个可以参与的软件。作为初学者,你可能需要一些时间来找到一个真正需要掌握的技能集(当然是在编程语言方面),而比较好的办法就是不断寻找。你可以手动完成,或者可以在Github上寻找与“good-first-issue”标签有问题的代码库,那一定会带你步入正途。

接下来呢?只需在系统上复制代码,进行想要的更改,然后将代码放回网站。如何做到呢?这就是Git和Github的用武之地。当你学会了它们,做这些步骤就轻而易举了。恭喜你,你已经参与了第一次开源,现在是一个开源开发者了!

为什么每天有4000万人在“免费”做2800万个项目?希望本文帮你找到了答案,也希望你会成为其中一员。