1 Star 0 Fork 387

Noone / 欧来指北

forked from FlameAI / 欧来指北 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
开源与个人技术成长.md 7.92 KB
一键复制 编辑 原始数据 按行查看 历史

本篇内容将会阐释参与开源是怎样对个人技术成长产生影响,以及如何影响的。 正如第一节所说的,开源已经成为一种超越软件生产界限的运动和工作方式。那么开源对个人有什么影响呢? 在讨论这个事情之前,首先我们得先了解开源社区的概念。

开源社区

开源社区又称开放源代码社区,一般由拥有共同兴趣爱好的人所组成,根据相应的开源软件许可证协议公布软件源代码的网络平台,同时也为网络成员提供一个自由学习交流的空间。由于开放源码软件主要被散布在全世界的编程者所开发,开源社区就成了他们沟通交流的必要途径,因此开源社区在推动开源软件发展的过程中起着巨大的作用。

程序员素养

除了开源社区,我们不得不提一下程序员素养,一个优秀的程序员需要拥有什么素养呢?是不是只需要打代码就可以了?答案当然是否定的。抛开其他素养不谈,我们这里只提以下 5 点。

  1. 扎实的专业技术、技能
  2. 架构设计能力和模块化思维能力
  3. 团队精神和协作能力
  4. 文档习惯和写作能力
  5. 需求理解能力

就开源社区而言,参与开源可以很好的锻炼程序员的以上 5 个素养。

前言

什么是开源,相信前面的章节已经说的非常清楚了。开源作为一种贡献技术的方式,对整个技术界和开源社区的正向回馈是巨大的。近 10 年来,越来越多的项目加入了开源界。其中有许许多多的知名开源项目被人所认可和追捧。

  • 操作系统 Linux,Android,
  • 编辑器 Vim,Atom,VSCode,
  • 版本管理 SVN,GIT,Fossil,
  • 数据库 Mysql,MongoDB,Redis,
  • 大数据平台 Hadoop,ES,Hbase,
  • 容器 Apache,Nginx,
  • 虚拟化软件 Docker,K8S。

这些列出来只是冰山的一个小角而已,还有很多这种耳熟能详的开源软件,他们共同形成了一个完整的开源生态,现在已经渗透到了各行各业。可以这么说,现在你电脑上用的软件,手机里用的 app,你的吃住出行的背后,都有开源项目的支撑。没有了开源项目,这个世界根本不是现在这个样子。

随着开源协作这种方式越来越被这个世界所认可,有很多的公司和个人开发者也加入了开源大家庭,他们把自己的技术沉淀,解决方案做成开源项目回馈给开源社区。如今的技术界,正因为有了开源,而变得不再是闭门造车,而是呈现出一种百家争鸣,欣欣向荣的景象。

开源社区的每一个人都有自己的角色,一般一个大型的开源社区有以下几种角色:

  • 开源领导者
  • 开源维护提交者
  • 开源贡献者
  • 开源使用者

那开源的宗旨是什么,有七个理念,分别是:完全自主,高度开放,自发自治,自下而上,自由竞争,赢在声誉,社区赋能。

此理念引用于《开源的7大理念》,由《大教堂与集市》的译者卫剑钒提出。

那么每个角色在开源社区内,都能有所收获,下面我们就来聊下,不同的角色会有什么样的收获。

开源领导者&开源维护提交者

之所以把这两个角色放一起来说,是因为有很多开源项目这两个角色是重叠的。毕竟像 Linux 那样拥有一整个开源团队的项目还是少数,很多开源项目的团队就几个人,那么领导者又同时是维护者。

领导者这个角色,是对于开源项目的事务有着最终话语权的,这个角色能决定开源项目的发展方向,这个角色得为现有的版本和未来的版本作规划,结合使用者的反馈来决定下一版本该上什么样的特性,这个项目最终能达到的高度和解决什么样的问题。作为这层的角色,你需要去从大局观去考虑,作为项目的领导者,能获得的提升是全方位的,从项目所处的专业领域的发展,到每个特性关联的技术方向,再到怎么在社区内进行推广,怎么持续推进项目的进度。这些实际操作的过程累计的经验,能让你在任何一个项目中都能正确分析和决策,游刃有余。

而作为维护提交者,是可以直接提交代码到主干的人。这个角色得了解这个项目的所有技术细节。担任核心的开发工作。如果你作为这个角色,必须要对你项目中所使用技术有较深的理解,同时还要对项目架构有一定的设计能力。成为这个角色你能获得的提升有以下几点:

1)对相关技术知识点的全方位掌握和系统化的思考方式。开源项目的用户是开发者,而开发者会把你的项目用于各种场景,这就和公司级项目比较单一化的场景有所不同,所以你必须考虑到更多的层面去设计你的开源项目,也必须更深的掌握相关知识点。

2)自主的学习精神。做开源要面对大量不同的场景,同时也要对你选型的其他开源框架有更深入的了解,自主的学习是每一个开源人的特点。

3)开放的心态,你对其他开源作品会有一个开放性的认识,能客观的了解开源的现状,社区的情况。

4)敢于竞争,开源的理念有一项就是自由竞争,做开源当然是希望自己的项目成为这个赛道里靠前的项目,自然会涉及到竞争,在完全自由化的开源社区,竞争也是一种良性的循环。

5)获得声誉,有更多的人来用你的项目,你自然会获得声誉,这是包装自己比较好的一种方式。

开源贡献者

贡献者不光是写代码,如果你参与了某个开源项目,除了可以成为 committer 之外,你还可以帮助用户解答问题,贡献文档,在邮件列表中参与讨论。

成为这个角色获得的提升有这些:

1)通过了解代码细节获得相关知识,成功的开源项目一定是能帮助开发者解决一块领域的问题的,了解作者如何做到这点的细节会对你有帮助。

2)通过贡献文档来获得写文档的能力,代码写得好不代表你文档就能写得很好,写代码反映的是你用技术解决问题的能力,而写文档反映的是你书面叙述解决方案的能力。

3)交流能力,开源项目面对的用户是其他开发者,开源项目的迭代一定是要使用者参与的。正确的处理使用者的反馈,通过交流听取使用者的建议,会使开源项目处于一个正向的循环中。

4)技术影响力:通过贡献代码/文档到开源项目,是非常有效的一种证明自身技术能力的方式,所以能够很直接地提升自己的技术影响力;如果你在贡献代码的同时,还擅长通过技术写作、技术演讲等形式来推广该项目,那么这种技术影响力就会被进一步放大;另外,参与知名开源项目本身就可以为贡献者带来背书和技术影响力,而且这种结局是双赢的。

开源使用者

这个角色作为社区成员,他们最有价值的部分是提出需求、报告缺陷、提出建议。

作为使用者,获得的提升有这些:

1)能关注到开源社区新的技术方向,使用者肯定是认可开源这种协作方式的。长期关注开源社区,能让使用者长期紧跟社区最新的技术方向,这也能让你在选型企业级系统中间件的时候有很多选择。

2)通过使用开源项目,获得技术的提升。

3)通过提出需求,报告缺陷让你企业级项目里的碰到的问题得到快速解决,也能促进开源项目的迭代,等于是贡献了社区。

总结

总的来说,个人参与开源项目对职业发展和个人成长都有很大帮助。

  1. 更好的职业生涯
    • 职位需求增多
    • 自身技能提升
    • 行业视角扩大
    • 人际关系拓展
    • 个人品牌打造
    • 拥有离开公司生存的能力
  2. 享受乐趣
    • 成长的乐趣
    • 成就感
其他
1
https://gitee.com/high-temperature-ingot/hello-openEuler.git
git@gitee.com:high-temperature-ingot/hello-openEuler.git
high-temperature-ingot
hello-openEuler
欧来指北
master

搜索帮助