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

首先要明白,开源是开放的。这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家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,自由发展,每一个字的意义其实就是开源最终的意义。 所以快去找你的技能树,选择你最强的能力,支付你在这个过程中的学费(或时间、或金钱),升级,并参与!

本文作者:佚名
来源:51CTO

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

  1. 九步!让你从零基础学习python成为一名开源程序员!

    摘要: 探索技术世界,是一件非常令人兴奋的事情.很多初学Python的同学都面临着很多的疑问:Python学习步骤应该如何安排?多长时间可以达到精通呢? 首先,学习Python编程技术,自学或者参加培 ...

  2. 程序员里面开源_如何以开源程序员的身份开始

    程序员里面开源 展望技术世界是令人兴奋的. 它有很多运动部件,似乎您越深入挖掘它,它越深入,然后它就一直是乌龟 . 因此,技术也势不可挡. 如果您热衷于加入并帮助塑造现代世界的运作方式,那么从哪里开始 ...

  3. java技术大牛修炼记5-一名中级程序员的自述

    我是一名中级程序员. 我有相当不错的基本技能.我犯了足够多的错误才明白为什么那些被称为错误.我很清楚我还需要了解更多东西.最重要的是,我知道那些东西大概是什么,并且我正在努力而积极地提升自己. 勇敢地 ...

  4. 作为一名Java程序员,你竟然不知道Instrumentation

    转载自  作为一名Java程序员,你竟然不知道Instrumentation 作者:Yilun Fan  来源:http://1t.click/fMA 对于Java 程序员来说,Java Instru ...

  5. 开源 程序员清单_2015开源夏季阅读清单

    开源 程序员清单 十年的好书 2004年.Google提交了IPO申请. 一群本科生在哈佛大学开设了一个名为" Facebook"的网站. 苹果公司最受欢迎的随身物品距离打电话还需 ...

  6. 募捐:请帮助一名 Linux 程序员的女儿

    在北京工作的潘俊廷是一名优秀的 Linux 程序员,他的女儿潘怡帆因患有肺动脉高压,只能靠着便携式呼吸机生活. 要治愈小怡帆病,只能进行儿童肺移植手术.而这类手术在国内尚未有成功先例,而美国德克萨斯儿 ...

  7. 敲了 10000 小时代码,我也没能成为一名高级程序员

    [CSDN 编者按]Malcolm Gladwell在<离群索居>(Outliers)一书中曾言,要真正掌握某件事情,需要10000小时的练习.而本文作者Greg Bulmash拥有40多 ...

  8. 如何成为一名业余程序员

    为什么80%的码农都做不了架构师?>>>    为何有这篇文字 从毕业到现在已6年有余,从事软件相关行业也差不多这个数了,算是个入了门的程序员 最近,做电源开发的大学室友找我要学软件 ...

  9. 一名野生程序员的自我修养

    PythonicLife作品 首发于微信公众号 PythonicLife 微信ID:pythonice__life 原作者:野生的我 转载请注明出处 一名野生程序员的自我修养 文 | 野生的我 沿着潺 ...

最新文章

  1. Nature综述:如何获得理想的微生物组
  2. Blackhat兵器谱新添IOT安全武器 低配置也能高性能运行
  3. Error:Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apk
  4. c语言sin函数近似值,用泰勒公式求sin(x)的近似值
  5. C++封装、继承、多态
  6. linux离线安装pyhs2,Python 下载及安装详细步骤
  7. Linux笔记-解决QtCreator中qDebug不打印的问题
  8. 探讨 .NET 4 新增的 SortedSet 类
  9. 远程桌面 Web 连接
  10. syscall 系统调用陷入_系统调用深度剖析(上)
  11. 十步轻松搞定IIS+PHP环境搭建
  12. Java TCP案例网络聊天室
  13. 计算机教师招聘试题(汇总集合版),计算机教师招聘试题(汇总集合版).doc
  14. 《无线通信与网络》第二章 信号传输基础
  15. adobe flash builder 4.6最新能用的序列号
  16. verilog全加器、全减器和乘法器及溢出判断
  17. Java模拟醉汉行走问题_醉汉随机行走/随机漫步问题(Random Walk Drunk Python)
  18. Epicor 客制化 - 常用对象
  19. php xirr,一个傻瓜式的计算方法,教你算出投资的真实收益率
  20. GC overhead limit exceeded

热门文章

  1. python要学多久-python需要学多久?自学两年也很难达到企业标准!
  2. 廖雪峰python教程完整版-为什么看不懂廖雪峰的Python学习教程?
  3. 爬虫python需要什么软件-学python爬虫能做什么
  4. 在Ubuntu上通过VNC Viewer连接Jetson nano桌面
  5. Symmetric Pairs(连接、分组,聚合)
  6. rest-framework:认证组件
  7. Day34 数据库的增、删 、改、查
  8. git创建、切换、合并、删除分支
  9. day18 17.c3p0连接池使用
  10. C# 分支语句 练习题(中间变量,随机数)