老白的全栈开发学习之路 3 JS初探

上期链接

原文于2016-7-20首发

第二周的学习跌跌撞撞地继续,完成了港科大布置的JavaScript的大作业,一个很简单的对话框输入猜谜游戏。

老白的全栈开发学习之路 3 JS初探_第1张图片

用了2小时,比第一周大作业轻松,只要搞清楚逻辑关系就好了(真实编写其实只有十几分钟,很多细节的调试和语句修改花了太多时间)。

学习回顾

新学内容:
JavaScript

继续Coursera上的港科大的全栈教程(3小时),教程重点是:JS里关于string字符串,数字,boolean逻辑等基本概念以及创建方式;一些基本的循环运算; Array中参数的建立;随机数的生成。

同时在W3schools(3小时)与CodeCademy(3小时)把这些内容再次复习和练习了一遍。

著名的犀牛书,JavaScript The Definitive Guide(4小时)曾经试图一页一页看下去,无奈理解起来不如在W3schools边学边练习有效率,所以暂停逐页浏览,拿此书当工具书用。

JavaScript for Kids(2小时)没错,for kids. 我承认犀牛书对我打击有点大,降低了要求学少儿版的,借助形象生动信息理解效果不错。

JavaScript for Kids for dummies(1小时)这本书对于基础概念的解释比前一本少,但是又很多具体的操作实例,准备下周具体跟进。

网页开发基础

跟进了经典教程Learning Web Design第四版(5小时)。学习Web开发的基本概念,以及开发的指导原则。

巩固内容:

HTML和CSS:

CodeCademy做了大量练习题。(5小时)

Coursera上继续旁听约翰霍普金斯的CSS课程(3小时)

学J.R. 的Learning Web Design里的HTML和CSS部分(4小时)

《人人都是工程师》继续复习HTML和CSS,并和新生大学同学交流了一些关于博客架设的问题。(1小时)

其他:

继续在Quora,stack overflow上看其他自学者们的讨论(2小时)

小结:

相比HTML的markup标注语言,JS才算是一门正式的编程语言。港科大的课程极度浓缩,只有几个最基本的知识点。必须依靠W3School上的详细解释,加上适度的练习才能初步理解。两本少儿版的JS教程也算一种快速通道,效果不错。HTML和CSS相对简单,需要大量练习和学习其他教程来巩固,把不用就忘的知识点“拉回来”。

新人的不恰当类比:JS有点中学物理的味道,大量基于“规则”下的动态变化;HTML和CSS有点中学化学的味道,大量识记性的相对静态的知识点。

本周惊喜

本周最大的惊喜是Jennifer N. Robbins写的Learning Web Design: A beginner’s guide to HTML, CSS, JavaScript, and Web Graphics第四版。

老白的全栈开发学习之路 3 JS初探_第2张图片

我是根据约翰霍普金斯课程的推荐书单去亚马逊买的kindle版。思维正在被大量知识点弄的一团乱麻的我,看了这本书就感觉学习路径顿时清晰了许多。因为目前的MOOC课程,以及W3schools等在线练习网站,都侧重知识点本身的讲解。感觉就是苹果手机问世前的时代里,那种工程师写的冗长说明书。对于系统性的知识结构梳理不够清晰,更不够简明扼要。对于没有明确学习方向的新人的具体指导也很少。而这本教程,不只是美国很多高校采用的教科书之一,还是广大非CS专业的门外汉极好的入门教材,雄踞美国亚马逊XHTML Software Programming Computer类目的销量第一。简要说下此书的好处:

1.对于众多新接触web开发的“白丁”,针对不同人给了不同的学习建议甚至职业发展路径。比如设计师的话可以尝试深入交互设计,用户体验,用户界面等。手头有网页制作的任务要马上处理,可以利用本书的范例和购买软件(模板)迅速解决。如果未来要做职业web开发人员,那就学习本书后目标定在建立一个有较好水准的样本网站来证明自己的实力,找到工作。

2.对于没有计算机科学基础的菜鸟,用具体生动的语言来描述把很多基础概念解释清楚。让普通人能迅速理解看似“高深”的“技术”。比如对服务器和客户端浏览器的信息传输过程,语言风格就很平易近人,有别于众多“技术类”教程的“冰冷感”。

3.对于正在被大量扑面而来的新知识弄得不知所措的自学者(比如我),很好的梳理了学习web开发需要掌握的知识结构。比如内容设计和网站结构之间的关系。甚至连需要准备(购买)什么样的软件,硬件都有详细的说明。

4.对于还在起步阶段的新人,在开始部分就给了很好的web开发指导原则。比如面对各种各样的上网设备与不同的浏览器,Progressive Enhancement原则是很好的应对策略(有兴趣的话可以还可以看W3C官网上对此的讨论)。我还顺便百度了下,发现对此的中文讨论似乎很难找到。英文世界里的学习材料的确不一样,应该是比较领先的吧。

本周另一个惊喜算是W3schools和港科大视频,以及JavaScript青少年教程的结合。由于JS难度比HTML和CSS大,知识点也多。所以港科大的讲授相对来说变得非常精简了。知识点的梳理和运用,必须到具体的编写环境里去熟悉。而如果只学W3schools的话,无论是手机还是电脑屏幕,一个个知识点的罗列又有点枯燥。视频和练习交替的效果很不错。而两本JS青少年教程更是帮我迅速理解了很多抽象的概念。

还有一个惊喜就是CodeCademy。 毕竟HTML和CSS学习了一周,需要练习题来巩固和加强。CodeCademy对于知识点的梳理和罗列还不错,它的奖章系统也让相对枯燥的训练有一定的正向刺激作用,类似打游戏通关。这里臭美下我拿到的勋章b( ̄▽ ̄)d

老白的全栈开发学习之路 3 JS初探_第3张图片

胡思乱想

才学了一周的HTML和CSS,又开始了JavaScript的学习。感受到了传说中“上升的学习曲线”。来源大概有这么几个方面:

1.上周学习的知识点需要巩固;

2.新学的知识点很难在以往经验里找到类似的,是全新的概念和体系,消化吸收慢;

3.知识点的量多了以后,为了学懂,又Google出了更多的未知的概念,但知识体系尚未有效确立的时候就乱成一团。

所以week2里才会对J.R.的Learning Web Design欣喜若狂。它较好地解决了2,3两点。(第1点则有“老朋友”W3schools和CodeCademy帮忙)

说道这里,有点想吐槽李笑来的《人人都是工程师》了。特别是关于开发环境的安装和博客架设两部分,极简的安装流程,对于操作步骤本身的解释很少。《人人》里更多的是How to甚至是What needs to be done,但没有why。一旦新手操作受阻,容易陷入手足无措的地步。当然这种“无措”其实也非常锻炼新手的学习和探索能力。但如果导致大量的时间消耗,以及因此带来较大的挫折感而中止了学习进度,则不太合适。当然,《人人》也给出了很好的学习资料和练习方法,比如针对Web开发的基础部分,在W3schools建议反复地耐心地学习和练习。

而通过对Learning Web Design的学习,我发现一个教程如果能解决初学者常见问题(包括对不同水平背景的初学者给出不同建议),以及能系统性的快速指明知识体系,对于降低初学者面对的学习不确定性很有帮助。诚然,整个学习之路如果只是看这些“学习路径明确”的书籍,也未必是好事,可能会阻止对未知领域的探索,降低自己的学习能力。

当然,这里还是对自学进行的思考。如果有一个教练的话,初学者的学习方向也会明确很多,实用的方法论也能尽快地运用于实践。

回到这两套教程,还是兼收并蓄吧。在一个新的学习领域,既需要详细的导航资料,也要逐步锻炼出没有精准导航设备下强大的学习能力。这看似矛盾,但应该是学习道路上不可或缺的两点。

本周推荐

由于快速上手JS有点不适应,就在美国亚马逊挑选了一些书籍并购买kindle版的。又和新生大学的一些同学们交流了下学习《人人》的情况,发现大家或多多少的存在一些学习上的疑惑,包括学习编程的目的,方向,特别是怎么开始。所以这里就推荐全世界最大的网上书店,美国亚马逊总站。注册一个美国站的用户,就可以购买kindle版的原版书籍,闪电到货。很多英语书还有加0.99美元到2.99美元,升级到真人有声书的服务哦。

老白的全栈开发学习之路 3 JS初探_第4张图片

关于如何注册买kindle原版,不多介绍了。培养下自学能力吧╮(╯∀╰)╭

关于选书,可以google搜索到不少建议。这里补充点个人经验:

美国亚马逊的用户评价还是一个不错的参考,但是有两个类目要注意。近年来3C产品由于中国卖家的“人为操作”,可信度已经大为降低了。而书籍领域,尤其是虚构类小说是亚马逊自创办以来的一个“重灾区”,当然,比起国内的电商网站来真实评论还是多很多的。技术类书籍的评论相对比较干净。

建议培养分辨评论背后信息的能力,多提问题。比如“为什么那么多人给好评,是不是应为初学者的人数远远大于老司机,而这本书又特别适合初学者但对老司机们没啥帮助?” “为什么有人给1星差评,他给出的“此书无用”评价是不是适合于我?”“这个评价已经跳出了书里面那么多错误,那这本书对我是否还有值得一读的地方?” 等等。

刚刚参加的写作课第二期,李笑来在谈到沟通时也说到,“既然是沟通,就想尽一切办法获得所有的真实反馈”了解真实世界里的人的想法,看法。包括读者是怎样的人,读者为什么会发布这样的反馈。

最后召唤一下投资大神老巴

老白的全栈开发学习之路 3 JS初探_第5张图片

你可能感兴趣的:(老白的全栈开发学习之路 3 JS初探)