澳门新葡亰网址下载聊聊成为大神路上的过程

by admin on 2020年4月9日

每个人都在成为大神的路上,只不过有的人在走,而有的人在跑。

时间: 2018-10-19阅读: 599标签: 程序员

写在前面的话

在开始正文之前我先跟大家分享一个我身边的例子。我有两个朋友,A和B。B从高一开始打dota,A从高二开始,到高中毕业的时候,A已经是一个
2100分的大神级别的人物,而B只有1200分而已。为什么A打的时间比B短,而水平却比B高呢?是天赋?是智商?似乎都不是。

我对两个人还是比较了解的,虽然同样是打dota,但是A和B之间有着很大差别的。A除了像B一样打dota之外,会看一些成名已久的大神的教学视
频,会看自己打dota的录像然后反思,会逛贴吧学习一些新的打法以及连招,会不断练习自己做得不好的地方。然后A成了大神,而B依然是一只菜鸟。

其实成为大神的路上,真的有一些捷径,不论是打dota、销售,还是开发。

科技世界的探索总是让我们兴奋不已。很多科技日新月异,你探索得越深远,你看到的世界就越广阔无穷,这就像是一只驼一只的海龟一样。因此,科技世界也像宇宙一样无穷无尽。如果你也渴望加入到推动技术世界发展的社区中,你应该如何开始呢?你要做的第一步是什么?以后应该怎么做?

自我定位以及目标

澳门新葡亰网址下载 1

“我是蒙奇·D·路飞,要成为海贼王的男人。”草帽同学的这句话既霸气又充满哲理。假如现在的你是一个小菜鸟,但你想要成为宇宙无敌超级工程师,那
么你需要一个目标:我是要成为超级工程师的男人(妹子)。当你从心底有了这个目标之后,你的每天都会有一种充实感,虽然哥现在很菜,但过一阵子哥可就是大神了。强大先从精神开始。

首先,你得明白开源指的是开放软件源代码的意思。这个很好理解,但是“开源”这个词最近一段时间经常出现在我们身边,所以估计有时候大家都忘记了开源只是用来形容一种文化现象,而不是一家世界
500
强公司的名字。跟其它公司或组织不同的是,你不用去参加面试或填个申请表、注册表的方式来成为一名开源程序员。你需要做的就是编程,然后把代码共享出来,并且完全保证在任何情况下该代码都保持开放状态。

经验与成就

为什么有的人工作5年,仍然不是专家,而有的人只用2年时间,表现足够卓越?

心理学家 Ericsson
的研究发现:决定伟大水平和一般水平的关键因素,既不是天赋,也不是经验,而是[刻意练习]的程度。

我坚信重复是通向精通的必由之路。任何一种技能(包括码代码),只要经过连续不断地磨练和改进,最终效果都将变得异常惊人。

之前也和朋友讨论过一个问题,近几年培训的人越来越多,就业压力相对来说越来越大,很多人会出现恐慌的情绪。但如果你真的足够优秀,那么这种问题其实都不是问题。

只需要这样,你就已经成为一名开源程序员了!

学好英语

根据HOPL编程语言在线数据库的统计,全球有8500种以上的编程语言,大概2400种起源于美国,600种是在英国发展起来的,160种是来自加拿大的,75种是在澳大利亚发展起来的。换句话说,世界上三分之一以上的编程语言是在以英语为母语的国家发展起来的。

就Android开发者来说,通读官方文档和training都是很有必要的。so,好好学习英语吧。

现在你有了目标,那么你为之奋斗的基础能力怎么样了?

找到成就感

我实习的时候,我的经理告诉我,如果你从你的工作中找不到成就感,那么你可以考虑转行了。对于码代码,在你眼里无论这是一份工作、事业或者志业,都可以赋予其意义。有了意义就会有成就感,它会成为一种精神力量和内在动力,与工作形成一个良好的循环。譬如写博客,如果没有成就感,或许小哥我早放弃了。

技能树

点满技能点

如果你不知道该学点什么,去招聘网站翻翻简历吧。在你所在的领域里,总会有你不熟悉的技能,找到它,干掉它。如果你的技能点是满的,那就发散思维,学习一些进阶技能和相关的其他方面的技能点,其实开发远比想象的要复杂。

你玩过 RPG
游戏吗?在那些游戏中就有关于线性“技能树”的概念。当你玩游戏时,你掌握了基本技能后,便会“升级”,并且获得新的技能,然后你使用这些新的技能再次“升级”到一个更高的等级,你又会得到更多新的技能。通过这样不断的升级,获取新技能,以让你的游戏角色变得更强大。

好的身体是革命的本钱

长时间坐在电脑前会伤害你的身体,如果不能减少工作时间,那就尽量保持正确的坐姿,如果有条件的话,换个站立办公桌也是不错的选择。选择一个适合自己的锻炼方案,相信我,当你老了,你会庆幸自己能坚持锻炼。

成为一个程序员有点像提升你的技能树等级。你掌握了一些基础的技术,在参与开源项目开发的过程中,你不断实践,直至自己的技术等级上升到一个新的层次,之后你又懂了一些新的技术,并在项目开发过程中不断实践,不断提升技术等级,然后你再沿着这个技能树不断成长,不断进步。

拖延症、计划和时间管理

拖延症是指自我调节失败,在能够预料后果有害的情况下,仍然把计划要做的事情往后推迟的一种行为。这是一种普遍现象,博主上大学的时候写论文,每次都是在最后一天的最后一两个小时搞完,论文质量简直惨不忍睹。

我们的人性啊!

合理的计划可以有效的解决拖延症的问题,每周给自己一个计划,坚持完成,想不成为大神都难。

学会管理自己的时间,让效率飞起来。关于这方面大家可以看下《暗时间》和番茄工作法。

你会发现自己面临的不只一棵技能树。开源软件涉及到的技术比较多,包括很多参与者自身的优势、能力及兴趣爱好等。然而,有一些非常重要的技能有助于你成为一名伟大的程序员,不断的提高这些技能是成功参与到开源项目中的重要组成部分。

知其然与其所以然

这点很重要,这点很重要,这点很重要,重要的话要说三遍。

对于这点最深的感触是实习的时候经理提的一点要求:做任何事,先要想明白,再能给别人讲明白,然后再去执行。所以那会我们在做开发之前先要跟他汇报,给他讲明白,然后才能开发。优点也很明显,这样下来bug比之前少很多。

在这顺便建议一下大家写博客,做完东西整理思路总结一下,然后分享给大家,加深理解的同时还能获得成就感,一举多得。

脚本编程

我是这样解决问题的

首先遇到问题不要怕,要知道这个世界上那么多前辈,你所遇到的大部分问题,之前肯定有人遇到过并且已经解决,要学会使用google。

其次,这里有一条准则与大家共勉:

WHAT,WHEN,WHY,HOW。

它是什么?它在什么场景下发生?它为什么会是这样,有没有其他原因?它是怎么做到的?

如果你觉得自己处理信息的能力又比较弱,不妨这样试试。做任何事情之前,有意识的让自己来一遍what,
when, why, how。

时间久了,你会发现逻辑变得严谨,不会钻牛角尖了,工作变得轻松,debug也不头痛了。

对于像 Linux 或 BSD 系统这样的 POSIX
系统而言,最大的优势之一就是在你每次使用电脑的过程中,你都有机会练习编程。如果你不知道如何开始编程,你可以从解决工作中的一些基本问题做起。想想你日常工作中有哪些重复性的工作,你可以通过编写脚本的方式来让它们自动执行。这一步非常简单,比如说批量转换文件格式或重置图片的大小、检查邮件,甚至是通过单击运行你最常用的五个应用程序。无论是什么任务,你可以花一些时间去编写脚本以让它们自动完成。

与时消息、与时谐行、与时俱进

每天抽出半个小时左右的时间阅读一些领域内的博客,
理解目前的技术发展方向,与时代同步,让技术历久弥新。

如果有些工作需要在控制终端下操作,那么你就可以编写脚本来完成。学习 bash
或 tsch 编程,把编写系统脚本作为你写代码和理解系统的工作原理的第一步。

代码评审

大多数程序员都有一个错觉:手头上的项目永远是最烂的。如果你也是这么认为,那么尝试去改变它吧。

代码评审(code review)是一个用来提高程序员的极好的方法。

系统管理

开源项目

阅读流行的开源项目,是学习编写可维护代码和软件开发流程的好方法。比如最近流行的google出品的 MVP模式demo 、 EventBus、Picasso等等。

从这一点来讲,你也可以转变成一个程序员,也可以整个跳到另外一个不同的技能树上:那就是系统管理工作。跟程序员比起来,这两个职业在技能上有一些相似(一个优秀的系统管理员应该有一些编程经验,并能够熟练使用
Python、Perl,或者其它类似的编程言语来解决一些独特的问题),而程序员指的是那些一直编写代码的人。

结语

做一个行动派。

世界上最遥远的距离是在想到和做到之间。

如果只是看清了一些事情而不去改变它,那又有什么意义呢?

稿源:伯乐在线

程序员

开源是学习编程技巧最好的方式:你可以查看其他人写的代码,从中借鉴他们的想法和技术,从他们的错误中学习,并跟自己写的代码进行对比以发现两者的优缺点;如果你是使用
Linux 或 BSD
操作系统,整个环境对你来说都是开放的,目之所及,随心所欲。

这就像旅游指南里所说的,随意行去。事实上你不大会去深入到一个项目的源代码中,但是如果这样的话,可以让你在某一时刻突然意识到自己会编程了。编程是一份很难的技术活,否则大家都可以从事编程工作了。

幸运的是,编程是有逻辑而结构化的,这些特性跟编程语言相关。你也许不会深入的去研究编程,但是你研究得越深,你懂的越多。

懂得如何控制以及让电脑自动执行任务是一回事,但是知道如何编写其它人想自动实现任务的代码,才能说明你已经真正进入到编程领域了。

精通多种编程语言

所有的编程语言都旨在处理相同的任务:让计算机能够完成计算工作。选择一种编程语言时你得考虑以下几个因素,学编程的目的是什么,你所做的工作最常用的编程语言是什么,你最容易理解哪一种编程语言以及你的学习方式。

随便查下相关资料,你就可以了解编程语言的复杂性了,然后再根据自己的能力水平来决定先学习哪种编程语言。

选择编程语言的另一个方式是根据你的使用目的来决定,看看你身边的同事使用哪种编程语言。如果你是为了开发桌面环境的工具,你应该学习
C 语言和 Vala 语言,或者 C++ 语言。

总之,不要在各种编程语言之间不知所措。编程语言之间都是相通的。当你学好一种编程语言并能用它来解决工作中的一些实际问题的时候,你会发现学习另外一种编程语言更容易。毕竟,编程语言只是一些语法和相关规则的集合;学会一种编程语言后,再使用同样的方法去搞懂另外一种语言完全不是个事。

主要目的还是学会一种编程语言。选择一个比较适合自己或者你感兴趣的编程语言,或者是你的朋友在用的编程语言,或者是选择文档比较丰富,并且你理解起来也容易的编程语言,但是,最好是只关注并先学会其中的一种编程语言。

这是一个开源项目吗?

无论你是编程新手还是一个老司机,在你进入到开源新世界之前,你需要搞明白做开源软件的重要一点就是“开放源代码”。

最近一些厂商惯用的市场营销策略就是宣称他们的软件是开源的。然而,有些厂商只是发布了一个公共的
API
或者表示他们愿意接受其它开源用户提交的代码而已。“开源”这个词不是一个商标,并且也没有任何组织来决定怎么使用这个词。但是,
Debian Linux 创造人 Ian Murdock 联合成立的开放源代码促进会(Open Source
Initiative)对开源这个词进行了定义(授权“允许软件被用户自由地使用、随意修改及分享”),并且被正式批准和授予许可证的软件才属于真正的开源软件。

给你的软件代码应用一个开源许可证,你就成为一名开源程序员了。恭喜你!

开源社区

咨询任何开源软件爱好者,他们会告诉你开源软件最关键的是人。没有积极的开源贡献者,软件开发就会中止。计算机需要用户、提交缺陷的人、设计师及程序员。

如果你想加入全球开源社区为开源软件做贡献,你同样需要成为该社区的一个成员,即使你并不善于社交也不要紧。这通常包括订阅邮件列表、加入
IRC
频道,或者在论坛里表现活跃,从最低级别开始。任何成熟的开源社区都已经存在了足够长的时间,见惯了来来往往的人们,所以,在你真正融入这个世界、在他们接纳你之前,你需要证明出你并非流星一逝般的过客,如果你想要做成一件大事,那就得有长期投身于其中的打算。

如果你只是想给他们提供一些小的帮助,这也是可以接受的。我自己也提交一些小的补丁到一些项目中,有时候项目管理者会觉得这个更新比较好,有时候他们也会拒绝我提交的代码补丁。但是,如果这个被拒绝的补丁对我很重要,我就会为我自己和客户维护它,并一直维护下去。

这就是参与到开源项目。

但是这些社区在哪里呢?这个跟开源项目有关。有些项目有专职的社区管理员,他们会把所有的社区参与者招集到一个打大家都能访问的地方。有些项目则围绕论坛运行,他们使用邮件列表,或者使用问题追踪器与参与者联系。找到这些开源社区对你来说也不是个事儿。

还有个重要的事情就是研究他们的源代码。“开源”就是开放“源代码”,所以你可以把他们的代码拿来瞅瞅。尽管要全面了解他们的项目可能超乎你的能力,但是你可以知道这个项目是如何管理的,他们最可能需要帮助的是什么。关于代码是如何组织的?这些代码有注释吗?它们使用统一的程序风格吗?这些问题你可以查阅相关文档,尤其是
README、 LICENSE ,或者是 COPYING 这几个文件。

不要低估遵守开放源代码承诺的重要性。这是你被允许参与进来到开源项目来的原因,因此,你得深入地考虑下你能从中学习到什么,以及你将如何为该项目提供帮助。

找到最佳的开源社区更像是约妹子,尤其是更像在《偷天情缘》)里的约会。这需要时间,并且刚开始那几次有可能会失败。你参与这样的聚会越多,你就越了解这些开源项目。最后,你会更了解自己,当你找到了与其它参与者融为一体的方式时,你就已经成功了。总之,你得要有耐心,一切顺其自然。

行动比语言更重要

作为一名开源程序员最重要的是写代码(开源中的“源”),任何想法都没多少意义。关键是把你的想法变成实际的东西。你要让大家都知道你在做什么、知道你不怕苦不怕累,也愿意在开源项目上花时间,并且能够通过编程的方式来实现自己的各种想法。

为了更高效地完成那些工作,你需要对开源项目做做功课,包括项目怎么样才能听取你的建议、哪个分支是稳定的哪个是开发的等等。

从下面几点开始:

熟悉一个项目及其协作开发的氛围,并且接受这种氛围。编写软件升级包、缺陷修复包,或者一些小的功能需求,并且提交它们。如果你提交的补丁被拒绝了,也不要难过。他们拒绝的不是你个人,而是开发小组在针对你提交的代码进行评估后作出的一个反馈。如果你提交的代码被改得面目全非后才被接受也不要泄气。从头再来,不断努力,再接受更大的挑战。

在开源项目中不应该开设排行榜。然而,有些开源社区却弄了个贡献排名,其实这没必要。大家只需要积极参与、奉献,贡献你的才智、提交你的代码,这样就可以了。

开发软件

编程不管在那种情况下都关乎于你自身的发展。无论你是否为了寻找解决问题的新方法,寻找优化代码的方式,学习新的编程语言,或者是学习如何更好的与其它人员合作,你都不会停止成长。你自己成长得越多,对开源项目越有帮助。

个人成长和职业技能的提升是你参与开源项目的终极目标,但是实际上这是一个贯穿整个项目的持续过程。成为一个开源程序员跟得到一份公务员工作不同;这是一个持之以恒的过程。学习、分享、再学习,或许你会去编写一个“康威生命游戏”,然后你会学到越来越多。

这就是开源的过程:自由地开发,每一行代码。因此,发现你的技能树,激发潜能,付出努力,不断提高自己的技能,并最终参与其中。

作者简介:

Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix
极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:。

via:-get-started-open-source-programmer

作者:Seth Kenlon译者:rusking校对:Bestony,wxy

本文由LCTT原创编译,Linux中国荣誉推出

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图