文档章节

从零开始成为一名开源程序员,其实只需要九步!

编辑部的故事
 编辑部的故事
发布于 2017/01/13 07:30
字数 2707
阅读 9034
收藏 162

探索技术世界,是一件非常令人兴奋的事情。你会发现有非常非常多的领域,等待你去学习,去深挖。如果有兴趣参与和帮助创造更好的功能,加入到开源的队伍当中,你知道要从哪里开始吗?第一步该做什么?第二十步又是什么?

首先要明白,开源是开放的。这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家500强公司的名字。不需要去面试或完成注册表或注册表单才能成为开源程序员。只需要做好程序,然后共享代码。在理想情况下保证代码能保持开放,不管它被如何使用。

就是这样,你就是一名开源程序员!

那现在目标已经有了,过程要怎么样呢?

第一步:找到和选择自己的 Skill trees (技能树)

玩过 RPG 游戏的人应该知道,这些游戏中会有“技能树”的概念。 最开始的时候,会获得基础技能,然后不断“升级”和获得新技能,再用新技能获取更新的技能……

成为一名程序员有点像往你的技能树上不断添加新技能的过程。 先得到一些基本的技能,持续练习直到它们进入第二阶段,然后获得新的技能。最终沿着你选择的技能树不断进步。

在这个过程中你会遇到许多技能树。就像开源有很多切入点,每个人都有自己独特的优势、才能和兴趣。 但是,某些积累下来的悟到的心得技能有助于你成为一名伟大的程序员,并且它们是成功参与到开源项目的重要组成部分。

第二步:编程,从 Scripting 开始

POSIX 系统(如 Linux 和 BSD )的优点之一是每次使用电脑时,都有机会练习一些小编程。 如果不知道要从哪里开始学习编程,那么就从你的工作方式开始。找出自己每天需要重复执行的任务,开始自动执行。 这个步骤其实很简单,例如批量转换或调整照片,检查电子邮件,甚至只是每天自动点击启动五个应用程序。反正不管是什么任务,花时间为自己的东西自动化。

如果你可以从终端做一些事情,那么它可以脚本化。 学习 bash 或 tsch ,让系统 Scripting 引导你学习如何编写代码和告诉你系统如何工作。

第三步:找准自己的发展方向

从这里开始,你可以选择继续成为一个程序员,或者可以完全跨越到另一个不同的技能树:系统管理。 这两个职业有一些重叠,一个好的系统管理员应该有一点编程经验,可以随时准备好使用 Python、Perl 或类似的语言来开发独特的解决方案,但程序员更偏向是一个日夜以代码为伴的人。

第四步:学习别人的开源代码

开源是学习编程技巧的好方法, 你可以查看其他人的代码,借鉴别人的想法和技巧,从他们的错误中学习,积累自己的代码经验,如果你使用 Linux 或 BSD ,整个堆栈是开放的 - 只要是眼睛可以看到的,都是你可以采用的。

实际情况是,你可能不会去深挖项目的源代码,而是从侧面突然意识到自己意外地学会了代码。 编程是一项艰苦的工作。 如果不是的话,所有人都去做了。

但又幸运的是,编程是逻辑化和结构化的。你不会深陷其中,因为越捅破它,就会越理解它。

理解如何控制和自动化电脑是一回事,但知道如何编写其他人想要自动化的东西是你跨入编程领域的关键点。

第五步:选择最适合自己的语言

所有编程语言的目的都是做同样的事情:让电脑计算。选择一个你想做的、你想针对的行业中常用的语言,并考虑是否现有的资料和你的学习方式能让自己更好地去理解它。

通过一点点研究,你会得到一个关于语言复杂性的参考,然后根据自己当前的水平尝试最适合自己的。

选择一种语言的另一种方法是观察你的目标,找出朝着同样的方向努力的其他人,然后看看他们在使用什么。如果你的目的是开发桌面工具,你可能会学 C 和 Vala 中的一个,或 C ++。

一旦你学会了一种编程语言,当你需要完成一些工作时,你会发现拿起另一种语言会比较容易。毕竟“语言”只是一套语法和规则,学会一个,在同一个理论上叠加新规则是相当微不足道的事情。

所以说,最主要目标是先去学习一门语言。选择一个有意义的,或者最有吸引力的,或者你的朋友正在使用的,或者有你最能读懂文档的,然后集中注意力,专注去学习它。

第六步:了解开源背后的知识,如协议

不管是正在学习编程的新人,还是准备进入开源的老司机,在跳入这个新世界的大门之前,你需要了解什么是开源。

“Open”一词不是商标,没有委员会管辖要如何或何时才能使用这个词。 然而,由 Debian Linux 已故的 Ian Murdock 共同创办的开源计划(Open Source Initiative)定义了开源的含义(允许软件被自由使用、修改和共享的许可),正式认可和履行 licenses 才被认为是真正的 “Open”。

将其中一个许可证应用于你的代码,你就是一个真正的开源程序员。 恭喜!

第七步:加入开源社区,了解开源项目运作

做开源项目最重要的就是人,如果没有积极的贡献者,项目就很容易停滞。

如果想加入一个开源社区,你需要成为这个社区的一部分。这通常包括订阅邮件列表,加入 IRC 频道,或跳到论坛,并从团队的底部干起。任何成熟的社区都已经发展了足够长的时间,他们看惯了潜在的成员来来去去,所以你必须明白,当你在准备改变他们的世界,让他们都同意你的规划之前,你必须先证明你不是闹着玩的,不会在三个月后消失。如果你想把事情做大,就准备好足够的时间吧。

如果你只是想借力,那也是可以被接受的。比如向项目提交小补丁,有时项目管理会认为这些都是好的,有时候会被拒绝。如果被拒绝的补丁对自己来说很重要,可以自己去维护它。因为它也是过程的一部分。

这些社区在哪里存在?这取决于项目。一些项目有专门的社区管理者,会在公共场所发布让每个人看到。还有一些项目围绕论坛、使用邮件列表,甚至是问题跟踪等等。

此外,这里还有一个同样重要的步骤,那就是看代码!既然是开源,就务必去多找代码查看。即使它仍然高于你的理解水平,但它会提供给你如何自己组织一个项目的经验,以及目前这个项目可能需要的帮助方向。代码是如何组织的?代码有注释吗?风格是否整洁?多查看文档,特别是 README、LICENSE 和 COPYING 文件。

不要低估开放代码的承诺的重要性。这是你参与的原因,所以从各个角度去想想你可以从中学到什么,以及你要如何贡献。

第八步:少说多写,为开源项目做贡献

作为一个开源程序员,想得多不如代码敲的多。你需要告诉自己在做什么,愿意把时间花在项目上,并备份你的想法和编译的东西。

为了做到这一点,你应该对项目本身做一些“家庭作业”来提高自己对它的熟悉度。包括学习一个项目怎么接受别人的提交,哪些分支是稳定的等等。

准备开始:

  • 熟悉项目及其发展文化,并尊重它。
  • 编写补丁,bug 修复或一些小的功能,并提交。
  • 如果你的工作被拒绝,不要灰心。 你的能力不会被拒绝,你做的工作会被评估,开发团队会和你电话联系。
  • 如果你的工作被接受,改变就建立在认可之上。
  • 不断重复,并尝试新的和更大的变化。

开源中没有排行榜。只有你做的所有的正确的参与和贡献,比如添加到 pool 中的想法,添加到 commits 中的 stash。

第九步:扩展新的技能,持续成长

不管是在任何环境中的编程最终总是会涉及到个人发展。 无论你是寻找新的方法来解决问题,寻找新的方法来优化代码,还是学习一种新的语言,或学习如何更好地与其他人打交道,你永远都不会想停止成长。 把自己开发的越全,项目就越有利。

成长,无论是个人和专业,最后呈现在一个 list 上,但它实际上持续整个过程。 成为开源程序员不像是一份稳定的政府工作,而更像是一个不断分裂的过程。 学习,分享,再学习,分心去做一件其他的事情,然后学习更多。

以上就是关于开源的过程: open source,自由发展,每一个字的意义其实就是开源最终的意义。 所以快去找你的技能树,选择你最强的能力,支付你在这个过程中的学费(或时间、或金钱),升级,并参与!

原文:How to get started as an open source programmer

编译:开源中国 王练

© 著作权归作者所有

编辑部的故事

编辑部的故事

粉丝 1432
博文 262
码字总数 501896
作品 0
深圳
运营/编辑
私信 提问
加载中

评论(28)

l
luxious
两步: 1,入门;2,放弃.
土卫十六
土卫十六
听说现在都是“面向对象”编程,最流行的语言概不例外,所以最重要的是先找个对象,然后再编程~
MT少年
MT少年
会不会走火入魔。
php110
php110
上午好象是八步啊
碧海青天丶夜夜心
碧海青天丶夜夜心
我记得早上来看的时候还是8步,到了晚上就变成9步了
Iridium
Iridium

引用来自“顺其自然001”的评论

只需八步?八步很少啊
OSC 从善如流,已经把标题改成 9 步了。
AbbyCin
AbbyCin
数据结构+算法 只字未提,难道我落后了?
motodola
motodola
好像比之前看的时候多了一步?
z201
z201
哈哈哈哈哈哈哈哈哈
Y
Yong_Lee
八步赶禅神功
新浪Java架构师分享自己的成长经历, 教你如何快速成长为架构师

架构师是公司的“金领”,很少需要考虑生存的问题,从而有更多的精力思考关键技术,形成“强者愈强”的良性循环。当然,冰冻三尺非一日之寒,成为一名合格的架构师是一个漫长的积累过程。对于...

美的让人心动
2018/04/19
81
0
Java程序员在工作的同时应该具备什么样的能力?

前言: 从我个人的角度来看,这些做了3-5年的所谓高级程序员,充其量,就是修修改改写了几行代码,他们的工作性质,做3年,5年,甚至10年,我相信也进步不了什么。 尤其是现在市场上大量的外...

Java干货分享
2018/10/27
129
0
【源资讯 第06期】在暗流汹涌的 IT 界,如何成为谷歌大神 Jeff Dean 般的传奇人物

知名网站 thelayoff 上有网友匿名爆料,称 Solaris 操作系统被砍,至少 50% 的团队成员将在短期内被解雇,有网友指出,其实自从 Oracle 接管以来,Solaris 的所有新功能开发都非常薄弱。 不仅...

两味真火
2016/12/03
5.2K
6
为什么我是一个程序员

我最近想了很多关于为什么以及如何我会选择成为一名程序员,在这种情况下,我发现了一个事实:截止下周,我就将要写了大半辈子软件了,实际上,想要弄明白原来做程序员的决定过程是有些困难的,因为...

oschina
2013/01/06
7.3K
36
【开源访谈】华为 SCEF 产品软件架构师姚磊:如何成为一名优秀的软件架构师

随着软件行业的发展,软件人才的队伍不断壮大,但同时新老交替的速度也在不断加快,让很多技术人员开始有一种危机感。在这种大环境下,从事更高层次开发构架工作的软件架构师成为令人向往的角...

OSC源创君
2017/06/07
3.7K
20

没有更多内容

加载失败,请刷新页面

加载更多

官方来源的 Duo Mobile App 解决了我的 Network Difficulties 问题

https://help.duo.com/s/article/2094?language=en_US 我利用百度搜索下载了一个 Duo Mobile App (由于 Google Play)在大陆不可用。 在扫描旧手机上的 Duo Mobile App 的二维码时, 显示出错...

圣洁之子
4分钟前
1
0
Zabbix监控Mysql容器(Docker容器)主从是否存活

1、在Zabbix Web端创建模板

abowu
6分钟前
1
0
基于 RocketMQ 的同城双活架构在美菜网的挑战与实践

本文整理自李样兵在北京站 RocketMQ meetup分享美菜网使用 RocketMQ 过程中的一些心得和经验,偏重于实践。 嘉宾李样兵,现就职于美菜网基础服务平台组,负责 MQ ,配置中心和任务调度等基础...

大涛学长
12分钟前
1
0
设计模式之:外观模式和桥接模式

作者:DevYK 链接:https://juejin.im/post/5d7e01f4f265da03b5747aac 外观模式 介绍 外观模式 (Facade) 在开发过程中的运用评率非常高,尤其是在现阶段,各种第三方 SDK “充斥” 在我们周边...

Java架构Monster
13分钟前
1
0
人证合一核验设备

人脸身份验证机,人证合一设备1:N如我们现在在车站或一些重要的场所如步行街、城中村等人流密集的场所应用的人脸识别布控系统,其特点是动态和非配合。所谓的动态也就是识别的不是照 片,不是...

非思丸智能
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部