美文网首页
自学编程四个月的心得记录-给和我一样的普通人#3

自学编程四个月的心得记录-给和我一样的普通人#3

作者: 林家弘 | 来源:发表于2016-12-14 18:48 被阅读0次

过往学习经验:

2016年年初学了大概100个小时左右的HTML和CSS,今年8月辞职後花了约30小时学Ruby。

但是後来发现太没有系统性而且当时自学能力还不够有系统,所以我就报了XDite推荐他朋友创立的Launch School的课程自学(谁知道现在就打对台了),从九月初有系统性的上课到现在大约4个月了。

为何开始学编程:

从工作的角度:(1)编程是相对不容易被取代的技能(2)复利效应好(3)一个底薪高而且相对来说没有收入天花板的职业

从个人的角度:我一直想要不受地域限制,有一台电脑和网路就能工作,而显然编程能够完美的符合这个条件。作为一个过往没有什麽积累和成就的加上兴趣相对广泛,既然要从头开始所以我选择了一个能满足自己目标丶收入丶未来发展的技能。

为何选择Ruby:

因为在先前的实习还有打工经验都会碰到网站,曾经用wordpress架网站。但发现花了数百个小时只学会了下载一堆套件丶跟客服写信沟通丶自己手动调整网页,完全没有技术可言,加上当时想要离职而且深信会coding是未来的机会,所以我就跳下去学了。

而Ruby作为架网站的语言之一,有惯例优於设定丶DIY等特点,感觉起来虽然有限制性,但却给了初学者有更多的时间专注在真正有价值的事物上,所以我才开始学Ruby。(但让我晚几个月开始我可能会学Python就是了)

是否该选择线下/上课程:

前两本书似乎只在台湾有翻译本,所以我建议大家可以看看第三本。第三本书的作者乔许考夫曼花了90个小时从零开始自学编程(但是他在大学也有一点学编程的经验),然後就做出了两个程序(而根据乔许在书中的说法,把一个大概念拆成小概念学习,并藉由直接的反馈修正是很好的学习方法)。

当我看到这一段是我简直是无地自容,因为我们两个都用得是Ruby,但我觉得我学了几百个小时却似乎还没有办法真的见一个作品,但他一下就做到了,是不是我的学习方法出了问题?(当然这跟我目前上的Launch Scool刻意放慢教学速度跟加深深度有关。)

所以我就开始尝试直接打代码学编程的尝试。由於目前学ruby已经有了一段时间跟,我就这样一步一步地靠直接做题目丶看解答丶查资料就搞懂了不少JS的问题,而且我到现在沒开始看教科书。

当然我并不是在倡导教科书无用论,我只是在分享我测试学习方法的观点,至少就实验结果来看,直接从零开始从小的习题丶甚至是从完整的作品开始着手是有可能的,虽然一开始的挫折感会重一些,但是长远来看我觉得整体速度可能更快。

实际的例子

举例来说如果你现在完全不懂Ruby,我丢了一段Code给你,你要怎麽解?

题目:

Write a method that takes one argument in the form of an integer or a float; this argument may be either positive or negative. This method should check if a number is odd, returning true if its absolute value is odd. You may assume that only integers are passed in as arguments.

解答:



也许看起来很可怕,但是不用慌。在这边我们可以看到几个关键字:method丶def丶return true丶%丶==。接下来你要做的就是到Google搜寻 “what is def in ruby?" “what is method?" “what is double equal sign ruby"等等。

大概半小时左右的时间你就可以知道如何建立Method丶%和==代表什麽丶argument又是什麽,而不用从头看一大堆的文档再开始练习。

而还有一件很重要的问题值得询问:「为什麽很多从学校丶补习班丶职业训练所出来的人,依旧没办法找到一个工作?这些地方的功能(之一)不就是为了达到这个目标吗?」。

这的确是一个很耐人寻味的问题,这就像是在问一个从小到大十几年考英文都考高分却说不出几句话,跟到了国外用英文生活了一年的人比起来,还是只能不断被啪啪啪打脸的份一样。因为很多时候我们都自以为自己在解决问题,但是显然并非像我们想像的这麽美好。

我的一些学习方法:

目前我是在用LS的课程上课,但是我在学习过程中发现了几个问题(1)没抓好复习的时间效果大打折扣(2)练习时进步最多,而不是阅读(3)练得越熟下次看到类似的题目解得越快。

先前跟大家提到的三本书,还有Xdite(ruby&rails专家)都推崇把一些项目做熟的好处,以下我撷取Xdite的一段文字:

「比如说很多人以为我写 code 这麽快是因为 rails 写项目很快。这根本是大错特错。那是因为我写过了一两百个小项目中项目练手(很多人根本不知道这件事),我写到最後任何 idea 到了根本不用想不用折腾的境界。」

「我做项目做到已经到了可以看完写完 user story 就知道可以「非常准确」算出一个项目要花多少时间人力。(误差在1%,而且在职场上没有失误过。)正因为我有这样的能力。所以我的学生打 hackathon 也会有同样的速度结果(比如说几个人八小时搞出一个项目而且效率奇高)。因为这对我来说根本已经是一套公式。

所以我也开始把题目练熟这件事情放在自己心中,加上LS的课程在每完成一个阶段需要分享萤幕live coding,并由老师评分及格才算通过,并且才能进到下一个课程,所以能不能熟练的coding就变得很重要。

所以大部份章节都有大量的练习题,而因为有了过往的一些体悟,我现在练习是这样练习的:看了五分钟发现脑海里没有想法的话,直接开解答看步骤,观察别人的编程丶学习新的观念丶了解如何推演过程,接着看熟之後试着自己重头写一遍。

然後从隔天开始每天都复习,复习的方法分成回想练习(也就是只看题目名称,然後在大脑推演),还有实际练习。也就是说我的练习次数是一天至少一次,不是久久才一次,而这个过程可能会持续1丶2个礼拜以上直到这个段落的课程结束。

再加上我现在不像以前看了整个章节才开始写习题丶复习丶准备考试,而是直接开始写习题抓重点,看书丶每天复习丶准备考试,整体下来我的练习量会比原本的做法多很多。而我现在也开始准备直接尝试做一个完整的作品,因为对我来说这显然是更快的学习方法。

每天记录学习心得

我目前除了每天固定写一篇非技术性文章之外(中文),我还会每天花时间写一篇技术性文章(英文)。这个技术性文章不需要很高深,我的作法就是每天记录学到了什麽丶哪些事情该注意。

这样的做法除了能够让你总结一天所学当做复习之外,还能同时记录你的学习历程,你之後有遇到类似的问题可以回头来看看,而且另外一个重点就是把你的作品集和思考过程分享给大家。

一来不论对错大家都可以互相交流,而且未来如果有面试机会也可以把自己的博客当作作品集之一,加上用英文写作也可以顺便练习英文,即使一开始在糟,人总是会慢慢进步的不是吗?

学会一门语言学其他更快

虽然对其他大牛来说这根本就是尝试,但是我现在在写题目学JS确特别有体悟。

就拿学习日语跟韩语这件事情来说,会说日语的人学韩语特别快,会说韩语的人学日语特别快,因为这两种语言在文法架构丶社会礼俗丶语言使用时机上有高度的相似,更不用说在韩国去汉字化之前也使用汉字,所以在那个时代这两个国家的人互相学习对方的语言简直是快到不像话,其他国家的人只能望尘莫及。

相同的编程(或是任何的知识)也是一样,你说得越多会发现其实一些重要的概念早就在别的地方介绍过了。

关於找工作

虽然由我这个自学编程才几个月的人谈论这个话题似乎有点愚蠢,但是我觉得如果学编程的目的是希望能够找到一份工作的话,这件事情就不能不在意。而活在未来最好的方式就是像专家一样生活,所以为了找到理想中的职务,最好现在就开始准备。


以英语流利说这间公司的面试标准来说,如果为了有机会能够面试这间公司,我必须要熟悉如何测试辅助开发(如Rspec)丶熟悉如何开发RESTful API丶熟悉系列行数据库(如MySQL)丶熟悉如何自动化部属Ruby/Rails丶熟悉使用Git。而当我足够熟悉这些技能时,对流利说这间公司来说,我就是那个有可能替他们解决这些问题的人。

所以我不能傻傻地埋头苦练,而是要开始花更多的时间加强这方面的能力,这才是合理的准备方式。而要如何准备,我个人的想法是直接抓几个会牵涉到这些点的代码来练习,像是多产出一些API相关的作品集等等。

当你有足够多这样的作品集跟经验,在同一群能力差不多的人来看你的履历会更好看;而即使没有机会面试,至少你加强了一些公司看重的能力,何乐而不为呢?

最後

专精任何一项技能都是需要花费很长的时间才能达到的目标,虽然专注和持续是绝对不可少的,但是在这个过程中我们可以用各种方法来提高效率但却不致於走偏,帮助自己能够有更多的时间跟注意力去做自己想做的事,而这也是我还不断在学习的。

希望这篇文章能够给看到的朋友们带来一点点的帮助,若是有任何说错或是不够精确的地方,还请多多指教。

相关文章

网友评论

      本文标题:自学编程四个月的心得记录-给和我一样的普通人#3

      本文链接:https://www.haomeiwen.com/subject/bdtwmttx.html