北大青鸟logo 北大青鸟电话

自学编程你可能不知不觉犯这些错误

2018-07-23 14:37:06    次    北大青鸟


在我决定自学编程之后,我做的第一件事就是买了两本 Android 开发方面的书。一开始,我严格按照书中的练习去做,并完成了所有的示例项目。但很快我就感到厌倦或者说沮丧,不想再继续跟着这本书学下去。我决定走自己的路,自己来搞定编程。但正如我之前所说,这样做的结果就是会慢慢的让自己陷入灾难之中。

我会自己一个人长时间的待在我的房间或咖啡店里。我将自己与外界隔离,我感觉没人可以帮助我,因为我认识的人都没有任何 Android 开发的经验。日子一天天过去,我却没有取得多大的进展。

有一次,我想到了一个好主意,那就是下载一个名为 FFMPEG 的大型 C 库。我想要构建的应用程序需要对视频进行编辑,因此我认为如果能够利用这一 C 库的强大功能那应该是一个不错的主意。其实在当时,这并不是最明智的举动,因为当时我的 Android 应用程序几乎还无法正常运行。我浪费了很多的时间去阅读 C 代码,试图弄清楚该怎样在我的应用程序中用到它。慢慢的,我又开始变得沮丧,最终放弃了这个主意。

幸运的一点是,大约在同一时间,我报名参加了面向对象编程(OOP)的一门课程,也不知道怎么就被录取了。在所有报名的学生当中,我是唯一来自非计算机科学专业的一位。我也不知道自己怎么就被选中了,可能是报名软件中有 bug 吧。

这门课程给出的第一项任务就是创建一个 Blackjack 程序。当时,我自学编程已经有 5-6 个月的时间了,因此我对自己可谓是信心满满。我很快完成了这一任务,并自我感觉良好的样子。但很快,这种感觉就消失了。我的整个程序是用一种很笼统的方式去写成的,而班上的其他人都知道这一程序应该分成几个类别。这种感觉太差了!

收获与所得

好在,老师给出的课堂作业和指导意见可以让我先搁置我的 Android 应用程序,专注于反思自己的开发能力。我开始更加重视学习,并重新找回了自己最初的想法,那就是制作一款完整的应用程序。

如果我在早期阶段就能有幸同那些经验丰富的开发人员交流,那他们就会了解我在做些什么,从而给出优先顺序建议,让我可以更加理智的采取行动。当我走入没有什么出口的死胡同时(比如尝试利用FFMPEG),他们也会帮助我及时的调整路线。经验丰富的开发人员就像是指南针,他们虽然无法直接带你到达目的地,但他们会确保你所选择的是正确的方向。他们的这一帮助往往会成为你扭转败局,走向成功的关键所在。

事后回想起来,其实当时我有很多种方法可以寻求他们的帮助。我可以尝试在大学里找一位拥有Android 开发经验的教授/学生,也可以尝试寻找一个在线 Android 社区。但那时的我却只是将自己隔离了起来,隔离是一把双刃剑。一方面。它可以让你专注于手头上的任务,另一方面,它会让你远离外界,无法获得关键性反馈。

确保自己可以获得过来人的经验指导,这将为你节省不少的时间,并减少一些不必要的挫败感。

寻找合适的环境

在我自学编程的过程之中,这可能是我唯一做的还算对的事情。在我整个学习生涯之中,无论是在家备战考试还是做作业对我来说效果都很糟糕,好像总有很多的干扰因素。所以,我通常都会去图书馆或者咖啡馆来寻得一方清静。幸运的是,在我自学编程的时候,我也是这样做的。

我成为了镇上几家当地咖啡馆的常客。较之其它学习地点,我更喜欢咖啡馆的原因在于咖啡馆的选择性更多一些,你可以选择一家你不会碰到认识人的店面。如果我在家学习,那我必须要关上门,这样我的室友才知道在一段时间之内不可以打扰我。其实无论在哪里,我都会确保耳机里的音乐声音足够大,这样我就听不到周围的任何声音。那种没有歌词的欢快音乐类型最适合我。

收获与所得

寻找合适的环境往往是学习过程中容易被忽视的一个环节,要知道在这个过程中你应该保证不会有其他的干扰因素,这样你才能长时间的保持专注状态。专注是保证记忆力和技能获取效果的基础组成部分,当你尝试将新信息输入大脑中时,输入效果的强度直接与你的专注程序相关。如果你的注意力不集中,那新信息的粘性会降低,导致学习速度变慢,学习时间也会因而增加。

看看那些世界水平的表演家平时是如何训练的就知道了,他们是会每五分钟就看一次手机吗?肯定不会吧。

要想提高专注力,最简单的一个方法就是寻找一个对你来说干扰力最低的环境,具体可以参考以下几种方式:

  • 找一个没人会打扰你的地方

  • 将手机设置为飞行状态

  • 利用某种定时网站拦截器来管理社交媒体和新闻网站的浏览权限

  • 戴上耳机听一些不会让你分心的音乐(最好提前设置好歌单列表,这样就不必经常切换歌曲)

  • 避开周围有电视或者是其他会导致你分心因素存在的环境

  • 随身携带一个笔记本,可以记下突然出现在脑海中的任何想法

只有你自己可以决定何处才是适合你的学习环境,并且正确的去选择这一类的环境。确保自己在环境选择上费点精力,因为它值得你这么做。

将所学付诸实践,进入工作场合

我的第一份编程工作其实来的有些偶然。当时,我刚刚搬到内布拉斯加州的奥马哈,距离我开始自学编程已经过去了一年的时间。我在奥马哈几乎没什么认识的人,于是我通过 Meetup.com 进行搜索,试图找到对同样 Android 开发感兴趣的人。幸运的是,当时我找到了一个相关的聚会活动,涉及 iOS 和Android 开发。于是,我鼓起勇气,决定前去参加。

万事开头难,第一次去之前我在车里犹豫了大约有十分钟的时间,不知道是该进去还是直接开车走人。我怯场了,我对自己的编程技巧没有信心,我知道在场的每个人都比我有经验。最后,我把心一横,管它呢,我就直接走了进去。我也很高兴当时我做出了正确的决定。

之后,我开始定期参加这一聚会。不久之后,在聚会上我认识了一位招聘人员,他正在寻找一名安卓开发人员。我们就此事谈了一会,之后我接到了这一岗位的面试通知。在参加面试前,我感到信心满满。但在面试过程中,我却表现得有些不知所措。面试官介绍着这一职位需要负责的项目,我发现这一切都超出了我的理解范围。我试图让自己跟上节奏,但他们显然能够看出这超出了我的能力范围。

面试结束之后,他们让我先随便逛逛,再同其他人谈一谈。我知道自己这次搞砸了,于是我在市中心逛了一会,让自己冷静下来。之后,我又参加了一次面试,不久之后,他们向我提供了一个实习岗位。因为当时公司的 CTO 自己负责所有的 Android 工作,他需要有人来替他分担一下。

当时的我甚至不敢相信自己拿到了这个机会,在签署了所有的相关文件之后,我又跑到 CEO 那里,问他这是否是一份带薪实习的工作。最后,我从实习转为全职工作,我作为软件开发人员的职业生涯也正式开始了。


收获与所得

如果在某种技能方面你是自学成才,那应该不会有招聘人员主动来找你。你需要走出去,主动寻找机会。那些毕业于四年制大学和编码培训学校的人可以利用学校资源来找到工作,但对于自学人群可说,这一便利条件并不存在。也就是说,对于我们这样的人来说,要想找到一份工作,最好的办法就是走出去,认识更多的人,你可以通过像 Meetup.com 这样的网站去寻找那些每个月或每两个月聚会一次的相关小组。

尽你所能鼓起勇气去加入这些群体。保持友好的态度,同其他人分享你的经历,确保他们了解你找工作的长期目标。让自己进入可能带来积极影响的情景之中,如果你不买彩票,那你永远也中不了大奖。认真看待你所拥有的任何机会,即便它看上去像死路一条,但峰回路转也说不定呢。

关键是要让自己眼光放长远一些,实习或者兼职工作可能当下给不了你想要的薪资待遇,但他们能够帮你打开走向未来的大门。

总结

如你所见,我在自学过程中犯过许多错误。要掌握一门新技能,绝对不是一路坦途,其中会有转弯,也会有起伏跌宕。希望我的经历和我的所思所得能够帮助你继续前进。