其实开启开源编程之旅:成为资深开源程序员的必备步骤的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享开启开源编程之旅:成为资深开源程序员的必备步骤的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
-脚本编程 …… 16%
-系统管理 …… 23%
-程序员 …… 28%
-精通多种编程语言 …… 36%
-这是一个开源项目吗? …… 47%
-开源社区 …… 55%
-行动比语言更重要 …… 75%
-开发软件 …… 85%
译者: rusking
科技世界的探索总是让我们兴奋不已。很多科技日新月异,你探索得越深远,你看到的世界就越广阔无穷,这就像是一只驼一只的海龟[1]一样。因此,科技世界也像宇宙一样无穷无尽。如果你也渴望加入到推动技术世界发展的社区中,你应该如何开始呢?你要做的第一步是什么?以后应该怎么做?
首先,你得明白开源指的是开放软件源代码的意思。这个很好理解,但是“开源”这个词最近一段时间经常出现在我们身边,所以估计有时候大家都忘记了开源只是用来形容一种文化现象,而不是一家世界 500 强公司的名字。跟其它公司或组织不同的是,你不用去参加面试或填个申请表、注册表的方式来成为一名开源程序员。你需要做的就是编程,然后把代码共享出来,并且完全保证在任何情况下该代码都保持开放状态。
只需要这样,你就已经成为一名开源程序员了!
现在你有了目标,那么你为之奋斗的基础能力怎么样了?
技能树
你玩过 RPG 游戏吗?在那些游戏中就有关于线性“技能树”的概念。当你玩游戏时,你掌握了基本技能后,便会“升级”,并且获得新的技能,然后你使用这些新的技能再次“升级”到一个更高的等级,你又会得到更多新的技能。通过这样不断的升级,获取新技能,以让你的游戏角色变得更强大。
成为一个程序员有点像提升你的技能树等级。你掌握了一些基础的技术,在参与开源项目开发的过程中,你不断实践,直至自己的技术等级上升到一个新的层次,之后你又懂了一些新的技术,并在项目开发过程中不断实践,不断提升技术等级,然后你再沿着这个技能树不断成长,不断进步。
你会发现自己面临的不只一棵技能树。开源软件涉及到的技术比较多,包括很多参与者自身的优势、能力及兴趣爱好等。然而,有一些非常重要的技能有助于你成为一名伟大的程序员,不断的提高这些技能是成功参与到开源项目中的重要组成部分。
脚本编程
对于像 Linux 或 BSD 系统这样的 POSIX 系统而言,最大的优势之一就是在你每次使用电脑的过程中,你都有机会练习编程。如果你不知道如何开始编程,你可以从解决工作中的一些基本问题做起。想想你日常工作中有哪些重复性的工作,你可以通过编写脚本的方式来让它们自动执行。这一步非常简单,比如说批量转换文件格式或重置图片的大小、检查邮件,甚至是通过单击运行你最常用的五个应用程序。无论是什么任务,你可以花一些时间去编写脚本以让它们自动完成。
如果有些工作需要在控制终端下操作,那么你就可以编写脚本来完成。学习 bash 或 tsch 编程,把编写系统脚本作为你写代码和理解系统的工作原理的第一步。
系统管理
从这一点来讲,你也可以转变成一个程序员,也可以整个跳到另外一个不同的技能树上:那就是系统管理工作。跟程序员比起来,这两个职业在技能上有一些相似(一个优秀的系统管理员应该有一些编程经验,并能够熟练使用 Python、Perl,或者其它类似的编程言语来解决一些独特的问题),而程序员指的是那些一直编写代码的人。
程序员
开源是学习编程技巧最好的方式:你可以查看其他人写的代码,从中借鉴他们的想法和技术,从他们的错误中学习,并跟自己写的代码进行对比以发现两者的优缺点;如果你是使用 Linux 或 BSD 操作系统,整个环境对你来说都是开放的,目之所及,随心所欲。
这就像旅游指南里所说的,随意行去。事实上你不大会去深入到一个项目的源代码中,但是如果这样的话,可以让你在某一时刻突然意识到自己会编程了。编程是一份很难的技术活,否则大家都可以从事编程工作了。
幸运的是,编程是有逻辑而结构化的,这些特性跟编程语言相关。你也许不会深入的去研究编程,但是你研究得越深,你懂的越多。
懂得如何控制以及让电脑自动执行任务是一回事,但是知道如何编写其它人想自动实现任务的代码,才能说明你已经真正进入到编程领域了。
精通多种编程语言
所有的编程语言都旨在处理相同的任务:让计算机能够完成计算工作。选择一种编程语言时你得考虑以下几个因素,学编程的目的是什么,你所做的工作最常用的编程语言是什么,你最容易理解哪一种编程语言以及你的学习方式。
随便查下相关资料,你就可以了解编程语言的复杂性了,然后再根据自己的能力水平来决定先学习哪种编程语言。
选择编程语言的另一个方式是根据你的使用目的来决定,看看你身边的同事使用哪种编程语言。如果你是为了开发桌面环境的工具,你应该学习 C 语言和 Vala 语言,或者 C++ 语言。
总之,不要在各种编程语言之间不知所措。编程语言之间都是相通的。当你学好一种编程语言并能用它来解决工作中的一些实际问题的时候,你会发现学习另外一种编程语言更容易。毕竟,编程语言只是一些语法和相关规则的集合;学会一种编程语言后,再使用同样的方法去搞懂另外一种语言完全不是个事。
主要目的还是学会一种编程语言。选择一个比较适合自己或者你感兴趣的编程语言,或者是你的朋友在用的编程语言,或者是选择文档比较丰富,并且你理解起来也容易的编程语言,但是,最好是只关注并先学会其中的一种编程语言。
这是一个开源项目吗?
无论你是编程新手还是一个老司机,在你进入到开源新世界之前,你需要搞明白做开源软件的重要一点就是“开放源代码”。
给你的软件代码应用一个开源许可证,你就成为一名开源程序员了。恭喜你!
开源社区
咨询任何开源软件爱好者,他们会告诉你开源软件最关键的是人。没有积极的开源贡献者,软件开发就会中止。计算机需要用户、提交缺陷的人、设计师及程序员。
如果你想加入全球开源社区为开源软件做贡献,你同样需要成为该社区的一个成员,即使你并不善于社交也不要紧。这通常包括订阅邮件列表、加入 IRC 频道,或者在论坛里表现活跃,从最低级别开始。任何成熟的开源社区都已经存在了足够长的时间,见惯了来来往往的人们,所以,在你真正融入这个世界、在他们接纳你之前,你需要证明出你并非流星一逝般的过客,如果你想要做成一件大事,那就得有长期投身于其中的打算。
如果你只是想给他们提供一些小的帮助,这也是可以接受的。我自己也提交一些小的补丁到一些项目中,有时候项目管理者会觉得这个更新比较好,有时候他们也会拒绝我提交的代码补丁。但是,如果这个被拒绝的补丁对我很重要,我就会为我自己和客户维护它,并一直维护下去。
这就是参与到开源项目。
但是这些社区在哪里呢?这个跟开源项目有关。有些项目有专职的社区管理员,他们会把所有的社区参与者招集到一个打大家都能访问的地方。有些项目则围绕论坛运行,他们使用邮件列表,或者使用问题追踪器与参与者联系。找到这些开源社区对你来说也不是个事儿。
还有个重要的事情就是研究他们的源代码。“开源”就是开放“源代码”,所以你可以把他们的代码拿来瞅瞅。尽管要全面了解他们的项目可能超乎你的能力,但是你可以知道这个项目是如何管理的,他们最可能需要帮助的是什么。关于代码是如何组织的?这些代码有注释吗?它们使用统一的程序风格吗?这些问题你可以查阅相关文档,尤其是 README、 LICENSE ,或者是 COPYING 这几个文件。
不要低估遵守开放源代码承诺的重要性。这是你被允许参与进来到开源项目来的原因,因此,你得深入地考虑下你能从中学习到什么,以及你将如何为该项目提供帮助。
找到最佳的开源社区更像是约妹子,尤其是更像在《偷天情缘》[5]里的约会。这需要时间,并且刚开始那几次有可能会失败。你参与这样的聚会越多,你就越了解这些开源项目。最后,你会更了解自己,当你找到了与其它参与者融为一体的方式时,你就已经成功了。总之,你得要有耐心,一切顺其自然。
行动比语言更重要
作为一名开源程序员最重要的是写代码(开源中的“源”),任何想法都没多少意义。关键是把你的想法变成实际的东西。你要让大家都知道你在做什么、知道你不怕苦不怕累,也愿意在开源项目上花时间,并且能够通过编程的方式来实现自己的各种想法。
为了更高效地完成那些工作,你需要对开源项目做做功课,包括项目怎么样才能听取你的建议、哪个分支是稳定的哪个是开发的等等。
从下面几点开始:
熟悉一个项目及其协作开发的氛围,并且接受这种氛围。
编写软件升级包、缺陷修复包,或者一些小的功能需求,并且提交它们。
如果你提交的补丁被拒绝了,也不要难过。他们拒绝的不是你个人,而是开发小组在针对你提交的代码进行评估后作出的一个反馈。
如果你提交的代码被改得面目全非后才被接受也不要泄气。
从头再来,不断努力,再接受更大的挑战。
在开源项目中不应该开设排行榜。然而,有些开源社区却弄了个贡献排名,其实这没必要。大家只需要积极参与、奉献,贡献你的才智、提交你的代码,这样就可以了。
开发软件
编程不管在那种情况下都关乎于你自身的发展。无论你是否为了寻找解决问题的新方法,寻找优化代码的方式,学习新的编程语言,或者是学习如何更好的与其它人员合作,你都不会停止成长。你自己成长得越多,对开源项目越有帮助。
这就是开源的过程:自由地开发,每一行代码。因此,发现你的技能树,激发潜能,付出努力,不断提高自己的技能,并最终参与其中。
(题图素材修改自:woot.com[7])
Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:http://slackermedia.ml 。
via: https://opensource.com/article/17/1/how-get-started-open-source-programmer
[1]: 一只驼一只的海龟 - https://en.wikipedia.org/wiki/Turtles_all_the_way_down
[2]: 开放源代码促进会 - http://opensource.org/
[3]: 定义 - https://opensource.org/licenses
[4]: 授予 - https://opensource.org/licenses/category
[5]: 《偷天情缘》 - https://en.wikipedia.org/wiki/Groundhog_Day_(film)
[6]: “康威生命游戏” - https://en.wikipedia.org/wiki/Conway's_Game_of_Life
[7]: woot.com - http://shirt.woot.com/derby/entry/78479/turtles-all-the-way-down
[8]: Seth Kenlon - https://opensource.com/users/seth
[9]: LCTT - https://github.com/LCTT/TranslateProject
用户评论
一直想学习开源编程,看你分享的方法很详细,让我更有目标了!现在开始尝试,希望能成为一名优秀的开源程序员。
有20位网友表示赞同!
开源软件真是太棒了!自分も从使用开源工具转变到参与开发,感觉收获满满,和社区一起工作很有成就感。文章内容也很有帮助,我准备好好学习一下开源贡献的流程。
有9位网友表示赞同!
我也在想成为一名开源程序员,这篇文章让我找到了方向!虽然现在自己水平有限,但我相信坚持努力,可以实现目标,期待与大家一起参与开源项目!
有8位网友表示赞同!
感觉这篇文章有点理想化了,开源确实很不错,但现实中很多项目都比较枯燥,需要长时间积累经验。而且维护开源项目也挺不容易,可能要面对各种各样的问题和挑战。
有10位网友表示赞同!
我觉得选一座自己感兴趣的领域进入开源社区才是重点,文章说的对!这样才能保持热情和动力,持续投入下去。大家在学习时也要注意找到适合自己的节奏,不要给自己太大压力。
有11位网友表示赞同!
开源编程确实有很好的未来发展空间,掌握一些新的技能和技术也可以提升自身的价值。不过,现在越来越多的公司开始重视开源项目,竞争也越来越激烈了。
有11位网友表示赞同!
这篇文章让我对成为一名开源程序员有了更深入的理解,学习方法很重要,但最重要的是坚持不懈地实践和付出才能真正成长!
有11位网友表示赞同!
以前一直在用开源软件,现在想尝试一下贡献一些自己的力量。 这篇文章给了我很多启发,也让我了解了开源社区的运作方式,很有帮助!
有19位网友表示赞同!
我觉得开源也是一种很好的学习途径,可以接触到更多优秀代码和经验,也能与其他程序员交流学习,提高自己的编程水平。
有12位网友表示赞同!
这篇文章写的不错,但对于新手来说,可能还有些抽象难理解。希望能提供一些更具体的实施建议,比如哪些平台适合初学者参与,有哪些入门级的开源项目可以尝试等。
有20位网友表示赞同!
我觉得文章强调培养社区贡献精神很有价值,程序员不只是写代码,还要善于沟通合作,共同解决问题,这很重要!
有12位网友表示赞同!
想要成为一名优秀的开源程序员,需要不断学习和提升自己的技术水平。同时也要保持良好的沟通能力和团队合作意识。
有9位网友表示赞同!
文章提到的学习资源非常丰富,我会认真去参考一下。也希望能遇到志同道合的伙伴一起参与开源项目,共同进步!
有13位网友表示赞同!
其实成为一名成熟的开源程序员需要更深层次的理解和实践。不仅仅是掌握技术技能,还要具备良好的沟通能力、问题解决能力以及团队合作精神等素养。
有18位网友表示赞同!
这篇文章让我对开源编程有了全新的认识,它不仅是一个技术的平台,更是连接开发者互助和共同成长的桥梁!
有8位网友表示赞同!
我觉得作为一名开源程序员需要承担更大的责任感和使命感。我们要确保项目高质量、安全稳定,同时也要积极维护社区秩序,营造良好的开源环境。
有12位网友表示赞同!
这篇文章让我对未来开源发展充满期待!相信随着技术的不断进步和社会的多元化,开源将会在各个领域发挥越来越重要的作用!
有16位网友表示赞同!
入门开源编程其实很简单,有很多平台可以提供帮助,而且开源社区非常友好,愿意帮助新手解决问题。 我鼓励大家积极参与,一起为开源发展贡献一份力量!
有13位网友表示赞同!