乐趣区

关于前端:开源浪潮下程序员的职业规划和成长

无论从年初开源社公布的《2020 中国开源年度报告》还是整体的大环境,不难看到中国的开源正在崛起,越来越多的来自中国的开源我的项目和开发者们正在走入大家的视线。在开源浪潮的大趋势下,程序员又该如何布局本人的职业以及个人成长呢?不如听听正在全职做开源的工程师张晋涛怎么说。

本文依据张晋涛在又拍云 Open Talk 技术沙龙北京站主题演讲《开源浪潮下程序员的职业规划和成长》整顿而成.

张晋涛,干流科技云原生技术专家,Apache APISIX committer, Kubernetes ingress-nginx reviewer,containerd/Docker/Helm/Kubernetes/KIND 等泛滥开源我的项目 contributor,对 Docker 和 Kubernetes 等容器化技术有大量实际和深刻源码的钻研,著有《Kubernetes 上手实际》和《Docker 外围常识必知必会》等专栏。

大家好,明天我分享的主题是《开源浪潮下程序员的职业规划和成长》。明天在这里聊两个我的项目,一个是 Apache APISIX,APISIX 是 Apache 基金会旗下的顶级开源我的项目。第二个我的项目是 ingress-nginx,它是 Kubernetes 整个生态圈外头,除去 Kubernetes 本身以外应用频率最高的软件之一了。搞过 Kubernetes 的同学应该基本上都用过这个我的项目。

明天我分享的内容次要从四个方面来聊:

  • 开源的文化
  • 如何参加开源
  • 对于我的故事
  • 职业规划相干的内容

理解开源文化

自由软件静止

提到开源文化,首先须要理解自由软件静止。

图右是被称为自由软件之父的斯托曼,他在 1983 年提出了 GNU 打算。1984 年,斯托曼提出了 Copyleft 的概念,Copyleft 跟咱们平时用到的版权 Copyright 是绝对应的,它放弃了 Copyright 相似对版权的严格限度。

1985 年,斯托曼成立了自由软件基金会,目标是为了可能让自由软件更好地倒退。在过后,很多软件都是专有软件或者商用软件,任何人应用这些软件都是须要付费的。斯托曼认为随着计算机的倒退,如果商用软件、付费软件把握在极少数公司的状况下,那么咱们将会逐渐失去自在。因为很多商业软件或者专用软件都是由商业公司,或者是极少数的人把握着,如果你依赖这些软件,都必须依赖于其他人,你的命根子就把握在了他们手中,就不可能取得自在。

1989 年,呈现了第一个 GNU 的通用协定,叫做 GPL。

接下来,咱们来看下在自由软件静止之后产生了什么事件。想必大家都接触过 Linux 操作系统。Linux 操作系统的创始人是林纳斯·托瓦兹,他在 1991 年首次公布了 Linux 操作系统,并且抉择了将它的源代码间接公布到网络上,供其他人去应用和分享。

在这个时候,斯托曼找到了林纳斯。GNU 自由软件基金会的次要指标是心愿可能创立出所有人都能够应用的根底软件,包含操作系统。直到 1991 年 Linux 操作系统公布的时候,GNU 自由软件基金会曾经实现了所有根底类的自由软件开发,然而它没实现最外围的操作系统的开发。所以,斯托曼找上了林纳斯。后果咱们都晓得,Linux 操作系统的残缺名字是 GNU/Linux。

开源合作与文化

聊完自由软件静止、Linux 操作系统,来看下咱们当初所接触到的开源合作和开源文化。

凋谢

在开源合作中,根本的理念就是凋谢。但很多人可能对此有误会,认为凋谢源代码就等于凋谢,其实不然。源代码的凋谢和真正的凋谢并不一样。举个简略的例子:MongoDB。

MongoDB 是一个文档类型的数据库。近几年,MongoDB 批改了一次协定 SSPL,称之为服务端公共许可证,协定更改之后有什么变动呢?它的协定规定任何一个云厂商,如果在云服务上应用了 MongoDB,就必须把在 MongoDB 之上所做的更改,包含管控端的源代码都开源进去。

大家想一下这个事件可能吗?

其实不可能,任何一个云厂商,它对所有根底软件,或者所有开源软件的变更,都是它的外围,是它的命根子。所以说,MongoDB 这一次批改其实是带有针对性的,它针对的是这些云厂商。在开源软件的根本协定之下,这其实属于不凋谢的协定。

再有就是前段时间,Elasticsearch 也发表其应用 SSPL,这导致 AWS 基于之前 Apache 协定的代码间接 fork 了一个版本,并称之为 OpenSearch。这也是对这种不凋谢的行为的一种应答形式。

协同

开源文化当中提到另外一点,就是合作。Linux 操作系统为什么可能获得成功?因为 1991 年的时候林纳斯公布了第一个 Linux 的版本,把源代码间接公开到了互联网上,其他人能够间接下载源代码,并且对这些源代码进行批改。

在 1991 年,林纳斯公布完 Linux 第一个可供下载和应用的版本时,其实自由软件基金会旗下还有其他人也在写给 GNU 应用的内核,只是没有 Linux 的完成度高。

为什么它没有倒退起来呢?因为它是由固定的几个人在做这个事件,且仅有那么几个人,只有它真正对外公开公布了一个版本,外界才会理解到。这里就不得不提到一种思维,那就是大教堂与集市。这是一个什么概念呢?

能够这样了解,传统的软件开发过程像大家在建筑一个大教堂一样,只有极少数的精英工匠参加其中。而开源软件提倡的凋谢和协同,次要指将软件当成一个大集市,每个人都是自在的,大家都能够相互合作,每个人奉献本人的一份力量。有专门一本书,来论述这些理念,就叫做《大教堂与集市》,感兴趣能够看看。

开源软件

聊完开源理念,咱们最初来说说开源软件。

开源软件的前提是凋谢源代码,这是必不可少的。另外,其实每个开源软件都是有开源许可证的,方才咱们聊 MongoDB 的时候也提到了,它的许可证是不被认可的。 开源软件外围价值观就是不歧视、中立、凋谢。

目前国内开源生态整体向好,有很多进入开源软件基金会的我的项目,无论是进入 Apache 软件基金会,还是 CNCF,亦或 Linux 的基金会。其中有很多的我的项目例如 ApacheAPISIX 就是 Apache 基金会旗下的顶级开源我的项目,通过 Apache-2.0 License 进行散发,这是一种十分凋谢且敌对的协定。

如何参加开源

很多人对于参加开源有一些误会。有些人认为,我在应用一个开源软件,并且在它的 GitHub 下面提交了 issue,提交了 pull request 之类的,认为就是在参加开源我的项目了。还有一些人认为,我写了一个软件或者程序,我把它放在 GitHub 下面,代码是公开的,认为本人在做开源了。其实不然(只管咱们也认可为开源我的项目所做的奉献)。

做开源的前提是基于你对开源文化的认同。

开源文化的最次要是平等、中立、凋谢、统一、文档优先。统一是什么意思呢?意味着你的软件在这个环境和在另外一个环境当中产生的后果是一样的。

那么如何抉择一个开源我的项目呢?

从我集体角度来讲, 首先肯定是趣味使然的。 我不会抉择一个本人并不太感兴趣的我的项目去参加。因为这样子是不可继续的。也有很多人问过我,参加开源你能播种什么?为什么你违心破费那么多的工夫和精力在这个事件下面?在参加开源我的项目的后期,或者很长的一段时间,其实没有任何播种,尤其是物质上的播种一点都没有。所以这也是我为什么提了肯定是要本人感兴趣的。

其次,继续投入十分重要。 在一个开源我的项目中,如果你只是想起来了参加一下,而不是继续地投入,也不会有较高的价值产生。

最初,应该抉择一个比拟沉闷的社区。 如果我的项目的社区曾经十分的不沉闷,你参加到这个我的项目当中就很难。比方你提交 issue,提交 pull request,很少有人会给你对应的回复。

这里我选取了三个我的项目做比照,ApacheAPISIX、Kong 和 tyk。目前能够看到活跃度最高的是 Apache APISIX,每天都有很多的开发者会参加到 Apache APISIX 的社区中,帮忙他人解答问题,或者为 Apache APISIX 提交 PR 等,大家彼此都会在这么沉闷的社区中成长和播种。

开源合作的中立也是一种很重要的价值观。 无论你是提交代码,或者回复他人的 issue,这些我认为是其次的。最重要的是应该基于平等、尊重、中立的心态去参加到我的项目当中。

我当初次要参加的是 Apache APISIX 当中的一个子项目 APISIX ingress,还有一个是 Kubernetes ingress-nginx。这两个我的项目都是 Kubernetes controller 的我的项目,做的事件是相似的,然而参加开源我的项目过程中,我始终保持着中立的态度,而不会因为我在干流科技就大力发展 APISIX ingress 我的项目,限度 ingress-nginx 我的项目的倒退,这是不存在的。所以心态很重要,只有保持中立的心态能力继续地参加到开源我的项目当中。

聊聊我的故事

我的职业门路

接下来聊一下我倒退的过程和职业规划上的抉择。

我的第一份工作 title 是 Web 开发工程师,次要是在做后端开发,也会兼顾一部分的前端开发工作,以及运维及 DBA 的工作。第二份工作是在做运维开发,会波及一部分的运维工作,主业也还是在做开发。再起初就是做容器化的开发,当初我是干流科技的技术专家,做的事件次要是做开源根底软件。这些年前端、后端、运维、数据库、中间件,根底软件,容器化技术根本都有波及到,这是我的职业整体路线。

很多人问过我这样的问题,特地是在跟 HR 沟通的时候。他们会问我,你为什么从 Web 开发做了运维开发,这是第一个工夫点。第二个工夫点,为什么从运维开发,到做根底软件以及全职做开源的事件。

我做 Web 开发,大略是七八年前,那个时候像服务器通常是 32G 或者 64G 的内存。然而当初,我的笔记本曾经是 32G 的内存了,能够设想过后硬件资源是比拟缓和的。在理论做后端开发中,当业务量上来的时候,咱们会去做很多性能优化相干的工作。

那个时候,咱们会花很多的工夫去做优化,当初遇到性能的问题可能很简略,加一台机器扩容一下就搞定了。但在那个时候大家的第一想法就是做性能优化,怎么样能够充沛地压迫资源,这是咱们过后做的事件。在这个过程当中,偏底层的事件我做得更多些。

在 2014 年,我开始接触 Docker。2013 年 Docker 首次开源,我在国内算是比拟早一批接触到 Docker 的。我很喜爱这些底层的技术,包含容器化的技术。在职业抉择的时候,我就从 Web 开发转向了运维开发。做运维开发的时候,后期是做运维平台化的开发,运维平台化、运维自动化、包含 GitOps 和 ChatOps 等等。

随着 Kubernetes 在容器化编排技术争夺战中成为了王者。很多公司开始做容器化革新,咱们也抉择了 Kubernetes 做本人的容器平台。这个时候,因为我在容器化技术这方面,积淀绝对比拟多一些,天然也就承当了相干的工作内容。

再起初工作的抉择,因为我想要更多的自在,也想更偏向于本人的趣味,而在公司做我的项目的话,的确不够自在,所以我当初的工作是全职做开源,我能够在任何一个我喜爱工作的工夫,或者想要工作的工夫去工作。

有一些人评估我说,我是把我的趣味做成了我的工作。 其实是的,即便没有这份工作,我也会继续地去做开源。工作工夫做开源,空闲的工夫也在做开源,这个自身来讲也没有什么界线。这是我目前的现状,自在、全职做开源的工程师。

职业规划

接下来,咱们来看一下职业规划。大家可能对于我到底是什么样的状况并不关怀,更应该想晓得在开源的场景里如何做职业规划。

我当初一方面是做开源相干的工作,再有一方面,也在做自媒体。 我认为做职业规划最重要的一点是基于本人的趣味。 一天一共就 24 小时,除去睡觉的工夫,剩下的几个小时如果做的是本人不感兴趣的工作,始终处于不开心的状态,那真是太惨了。所以肯定要抉择本人喜爱的、感兴趣的工作,这是第一点。

第二点就是外围竞争力。 既然是程序员,无论是前端、后端、运维,还是其余开发,本身的技术实力才是外围竞争力。当初有个词很风行,那就是“内卷”,为什么内卷会让人产生焦虑感呢?焦虑到底是怎么来的?

我是这么了解的,焦虑就是他人在学,我不学,我可能会很焦虑;他人会,我不会,我也会焦虑;他人晓得,我不晓得,那更焦虑;还有就是他人在聊这些,我听的一脸懵逼,这些都是焦虑的产生起因。

那如何应答这个问题呢?那就是晋升你的外围竞争力。首先选一个本人最感兴趣的方向,晋升本人的技术深度,这样能力继续地晋升本人的外围竞争力。技术深度就跟海面上的冰山差不多,海面上你能够看到的只有那么一小点,但在海面之下还有很多很多。

技术的深度是有限的,当你把技术深度晋升到肯定水平之后,你会发现如同我不晓得的货色越来越多,这是一个技术人经常会有的感觉。如果你很长时间没有这种感觉了,认为如同所有的货色我都晓得,所有面临的问题我都能解决。这个状况我认为,你可能须要去参加一些开源我的项目,或者进来跟他人交换一下,或者换一份工作,宽阔一下本人的眼界。 当你的技术深度到了肯定水平,例如能 cover 住面临的绝大多数问题时,我倡议你在这个时候尽量晋升一下本人的技术广度。

第三点我要说的是价值。 价值这个概念十分宽泛,在做工作中最直观体现价值的,那就是薪资。当然,薪资只是一方面,另一方面在于你可能播种到什么。

咱们回到方才第一点,也就是工作开不开心的事件。如果说你的工作薪资是令人满意的,同时你又能播种一些开心,那就赚到了。因为公司原本给你提供的,是一种雇佣关系,他给到你的实质上来讲只有你的薪资。而你做这份工作的同时,播种了一些乐趣,其实也就是赚到了。 播种开心,这是我要提到价值当中的第一点。

此外,在工作的过程当中,你必定不是一个人在单独战斗, 你也会播种到一些搭档,这是第二点。

第三点,在这份工作当中,你还实现本人价值的晋升。这些价值能够了解为心理学当中或者社会学当中提到的认可, 当你取得他人或者社会的一些认可。 这也是价值的一部分。

程序员的副业

最初咱们来聊聊程序员的副业,这个事件兴许大家会比拟感兴趣一些。在谈到副业的时候,你要先评估一下本人能做什么,不自量力在任何状况下都是比拟正确的。抵赖本人在某些方面不善于,或者某些方面不太懂这个事件其实没有什么的,如果强行做不善于的事件,可能失去的后果并不太好。

我来聊一下我本人集体做的一些货色。我之前写了一个专栏,叫《Kubernetes 上手实际》。起初又写了一个专栏,叫做《Docker 外围常识必会》。我本人在这方面相对来说积攒比拟多一点,这里就不多说了,说多了就变成广告了(笑),不过你能够关注下我的公众号:MoeLove,我会跟你分享一些有价值的技术和内容。

很多人可能会问我能做什么?我认为其实还是有很多的事件能够做,具体必定看集体的抉择。做副业能为本人带来最直观的,大家可能认为是金钱收益。但实际上如果你把消耗的工夫精力折算一下,可能会发现这个事件收益很少。陪陪家人、跟爱人约个会,出去玩一趟,可能能播种的更多。当初整体来说就是两种抉择,一是用工夫换钱,另一种是用钱换工夫。很多事件如果年老的时候错过了还是会很遗憾的。所以还是要倡议大家依据本人的状况掂量一下。

以上是明天的全副分享内容,来简略总结下:第一局部聊了平等、中立、自在的开源文化;接着谈了如何参加开源,心态肯定要摆正,同时要基于本人集体的趣味;最初聊到一些个人成长,还是倡议大家应依据本人的理论状况,正当地布局一下本人的的职业生涯,谢谢大家。

举荐浏览

MySQL 中存储工夫的最佳实际

Ansible 疾速入门

退出移动版