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

healeae 8年前
   <p>探索技术世界,是一件非常令人兴奋的事情。你会发现有非常非常多的领域,等待你去学习,去深挖。如果有兴趣参与和帮助创造更好的功能,加入到开源的队伍当中,你知道要从哪里开始吗?第一步该做什么?第二十步又是什么?</p>    <p>首先要明白,开源是开放的。这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家500强公司的名字。不需要去面试或完成注册表或注册表单才能成为开源程序员。只需要做好程序,然后共享代码。在理想情况下保证代码能保持开放,不管它被如何使用。</p>    <p>就是这样,你就是一名开源程序员!</p>    <p>那现在目标已经有了,过程要怎么样呢?</p>    <h3>第一步:找到和选择自己的 Skill trees (技能树)</h3>    <p>玩过 RPG 游戏的人应该知道,这些游戏中会有“技能树”的概念。 最开始的时候,会获得基础技能,然后不断“升级”和获得新技能,再用新技能获取更新的技能……</p>    <p>成为一名程序员有点像往你的技能树上不断添加新技能的过程。 先得到一些基本的技能,持续练习直到它们进入第二阶段,然后获得新的技能。最终沿着你选择的技能树不断进步。</p>    <p>在这个过程中你会遇到许多技能树。就像开源有很多切入点,每个人都有自己独特的优势、才能和兴趣。 但是,某些积累下来的悟到的心得技能有助于你成为一名伟大的程序员,并且它们是成功参与到开源项目的重要组成部分。</p>    <h3>第二步:编程,从 Scripting 开始</h3>    <p>POSIX 系统(如 Linux 和 BSD )的优点之一是每次使用电脑时,都有机会练习一些小编程。 如果不知道要从哪里开始学习编程,那么就从你的工作方式开始。找出自己每天需要重复执行的任务,开始自动执行。 这个步骤其实很简单,例如批量转换或调整照片,检查电子邮件,甚至只是每天自动点击启动五个应用程序。反正不管是什么任务,花时间为自己的东西自动化。</p>    <p>如果你可以从终端做一些事情,那么它可以脚本化。 学习 bash 或 tsch ,让系统 Scripting 引导你学习如何编写代码和告诉你系统如何工作。</p>    <h3>第三步:找准自己的发展方向</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/28feb794701897cb68ae538fd5bf2545.png"></p>    <p>从这里开始,你可以选择继续成为一个程序员,或者可以完全跨越到另一个不同的技能树:系统管理。 这两个职业有一些重叠,一个好的系统管理员应该有一点编程经验,可以随时准备好使用 Python、Perl 或类似的语言来开发独特的解决方案,但程序员更偏向是一个日夜以代码为伴的人。</p>    <h3>第四步:学习别人的开源代码</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/cb89892fc6a90190b824537f2654f182.png"></p>    <p>开源是学习编程技巧的好方法, 你可以查看其他人的代码,借鉴别人的想法和技巧,从他们的错误中学习,积累自己的代码经验,如果你使用 Linux 或 BSD ,整个堆栈是开放的 - 只要是眼睛可以看到的,都是你可以采用的。</p>    <p>实际情况是,你可能不会去深挖项目的源代码,而是从侧面突然意识到自己意外地学会了代码。 编程是一项艰苦的工作。 如果不是的话,所有人都去做了。</p>    <p>但又幸运的是,编程是逻辑化和结构化的。你不会深陷其中,因为越捅破它,就会越理解它。</p>    <p>理解如何控制和自动化电脑是一回事,但知道如何编写其他人想要自动化的东西是你跨入编程领域的关键点。</p>    <h3>第四步:选择最适合自己的语言</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/419e2a917519e20b635adf060509dd8c.png"></p>    <p>所有编程语言的目的都是做同样的事情:让电脑计算。选择一个你想做的、你想针对的行业中常用的语言,并考虑是否现有的资料和你的学习方式能让自己更好地去理解它。</p>    <p>通过一点点研究,你会得到一个关于语言复杂性的参考,然后根据自己当前的水平尝试最适合自己的。</p>    <p>选择一种语言的另一种方法是观察你的目标,找出朝着同样的方向努力的其他人,然后看看他们在使用什么。如果你的目的是开发桌面工具,你可能会学 C 和 Vala 中的一个,或 C ++。</p>    <p>一旦你学会了一种编程语言,当你需要完成一些工作时,你会发现拿起另一种语言会比较容易。毕竟“语言”只是一套语法和规则,学会一个,在同一个理论上叠加新规则是相当微不足道的事情。</p>    <p>所以说,最主要目标是先去学习一门语言。选择一个有意义的,或者最有吸引力的,或者你的朋友正在使用的,或者有你最能读懂文档的,然后集中注意力,专注去学习它。</p>    <h3>第五步:了解开源背后的知识,如协议</h3>    <p>不管是正在学习编程的新人,还是准备进入开源的老司机,在跳入这个新世界的大门之前,你需要了解什么是开源。</p>    <p>“Open”一词不是商标,没有委员会管辖要如何或何时才能使用这个词。 然而,由 Debian Linux 已故的 Ian Murdock 共同创办的开源计划(Open Source Initiative)定义了开源的含义(允许软件被自由使用、修改和共享的许可),正式认可和履行 licenses 才被认为是真正的 “Open”。</p>    <p>将其中一个许可证应用于你的代码,你就是一个真正的开源程序员。 恭喜!</p>    <h3>第六步:加入开源社区,了解开源项目运作</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/00f231a7b4d64e03b5eba6fadacde7a4.png"></p>    <p>做开源项目最重要的就是人,如果没有积极的贡献者,项目就很容易停滞。</p>    <p>如果想加入一个开源社区,你需要成为这个社区的一部分。这通常包括订阅邮件列表,加入 IRC 频道,或跳到论坛,并从团队的底部干起。任何成熟的社区都已经发展了足够长的时间,他们看惯了潜在的成员来来去去,所以你必须明白,当你在准备改变他们的世界,让他们都同意你的规划之前,你必须先证明你不是闹着玩的,不会在三个月后消失。如果你想把事情做大,就准备好足够的时间吧。</p>    <p>如果你只是想借力,那也是可以被接受的。比如向项目提交小补丁,有时项目管理会认为这些都是好的,有时候会被拒绝。如果被拒绝的补丁对自己来说很重要,可以自己去维护它。因为它也是过程的一部分。</p>    <p>这些社区在哪里存在?这取决于项目。一些项目有专门的社区管理者,会在公共场所发布让每个人看到。还有一些项目围绕论坛、使用邮件列表,甚至是问题跟踪等等。</p>    <p>此外,这里还有一个同样重要的步骤,那就是看代码!既然是开源,就务必去多找代码查看。即使它仍然高于你的理解水平,但它会提供给你如何自己组织一个项目的经验,以及目前这个项目可能需要的帮助方向。代码是如何组织的?代码有注释吗?风格是否整洁?多查看文档,特别是 README、LICENSE 和 COPYING 文件。</p>    <p>不要低估开放代码的承诺的重要性。这是你参与的原因,所以从各个角度去想想你可以从中学到什么,以及你要如何贡献。</p>    <h3>第七步:少说多写,为开源项目做贡献</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/eac5aae8ac88a24b5da82459e7fb5fcd.png"></p>    <p>作为一个开源程序员,想得多不如代码敲的多。你需要告诉自己在做什么,愿意把时间花在项目上,并备份你的想法和编译的东西。</p>    <p>为了做到这一点,你应该对项目本身做一些“家庭作业”来提高自己对它的熟悉度。包括学习一个项目怎么接受别人的提交,哪些分支是稳定的等等。</p>    <p>准备开始:</p>    <ul>     <li>熟悉项目及其发展文化,并尊重它。</li>     <li>编写补丁,bug 修复或一些小的功能,并提交。</li>     <li>如果你的工作被拒绝,不要灰心。 你的能力不会被拒绝,你做的工作会被评估,开发团队会和你电话联系。</li>     <li>如果你的工作被接受,改变就建立在认可之上。</li>     <li>不断重复,并尝试新的和更大的变化。</li>    </ul>    <p>开源中没有排行榜。只有你做的所有的正确的参与和贡献,比如添加到 pool 中的想法,添加到 commits 中的 stash。</p>    <h3>第八步:扩展新的技能,持续成长</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/db3292d9e81430ddae55bd6369535ff0.png"></p>    <p>不管是在任何环境中的编程最终总是会涉及到个人发展。 无论你是寻找新的方法来解决问题,寻找新的方法来优化代码,还是学习一种新的语言,或学习如何更好地与其他人打交道,你永远都不会想停止成长。 把自己开发的越全,项目就越有利。</p>    <p>成长,无论是个人和专业,最后呈现在一个 list 上,但它实际上持续整个过程。 成为开源程序员不像是一份稳定的政府工作,而更像是一个不断分裂的过程。 学习,分享,再学习,分心去做一件其他的事情,然后学习更多。</p>    <p>以上就是关于开源的过程: open source,自由发展,每一个字的意义其实就是开源最终的意义。 所以快去找你的技能树,选择你最强的能力,支付你在这个过程中的学费(或时间、或金钱),升级,并参与!</p>    <p> </p>    <p> </p>    <p>来自:https://my.oschina.net/editorial-story/blog/824049</p>    <p> </p>