下午看到了金葡萄老师写的成人自学的困难,该文讨论了作者自己学习 python 的一些境况以及由此衍生出来的原因推断,我觉得很有感触,想起了自己这些年尝试学习编程的事情,似乎中间有过几次零散总结,但这事情到如今又有了变化,又可以重新记录一下了。
那些年学过的语言
我算了一下,或深或浅,我曾经接触过如下语言:
Java、Object-C、Swift、Python、Javascript、GameMaker Language
其中,Python 是跟着 Codecademy 学了两周的样子,在第一周学完以后我自己在网上搜了一些函数写了个 A1B2 的猜数字小游戏,这是我第一次独立写了一段可执行的代码,在那之后我才真正觉得,编程这东西,我应该还是可以学得会。
只是当时并没有想过学会 Python 要用来做些什么,于是没多久又荒废了,只在半年以后才用了一次做些分割表格的工作。
直至我决定尝试制作游戏,接触了 GameMaker 以及其自身的语言 GameMaker Language ,这是很小众的一套弱语言,但个人感觉还挺适合初学者的,在这里我较之前又有了些新的进步,开始觉得所谓的面向对象原来是这么回事,尽管要说清楚依旧困难,但总觉得模模糊糊是有些入门了,自此我又觉得只消学会了一种语言,至少以后想学习旁的也会有不小帮助。
于是,在经历了约莫十年断断续续的学习放弃再学习再放弃的循环之后,我似乎终于摸着了一点编程的门槛,甚慰。
一个小目标
在 N 多次失败的尝试之后,我终于明白很多人会说你要给自己定一个目标的原因,因为只有有了这个目标,你才会为了达成目标而去不断学习,且这个目标需得是真目标,至少你得是真的有欲望去完成的。
很多人说你在学习之初可以给自己设个目标是要写个个人网站,然后冲着这个目标去学习相关知识,但很多时候可能这是不行的,因为这是自己竖了个靶子,极有可能你会随时丢掉这个靶子,丝毫不会心疼和在意,这样的目标是没有太大帮助的。
然后,最初的目标最好足够小但相对完整,小才更适合新人,而足够完整才能在完成的过程中了解到边边角角的各种知识,比如做游戏,若只是尝试一个原型,做一个基础的玩法,如果不是特别复杂的那种,可能几个小时就可以实现,但你想将这个原型打磨成一个完整的游戏,可能需要耗费数百小时……甚至更多,因为总会在你起初并不在意的地方遇到各种小问题,你不在意的这些小东西合到一起才构成一个完整的产品,很多东西只有在这种过程中才能体会到,前人的经验你看到了却无法感同身受,撞了南墙才会觉得那是真对,坑只有自己踩过才会觉得真是不能去跳。
自我认同
其实这些东西许多人也都说过,学习任何一门新知识都是如此,要从中获得满足才会有足够动力坚持下去,否则就很容易放弃,但很多时候人们总会在开始没多久就因为寻不到这种满足感而中断,然后结束。
而并不是所有的学习过程都能恰好击中你大脑中的奖励回路,让你分泌一波又一波多巴胺来刺激你继续学习。这种时候,可以尝试从侧面寻求自我认同,比如我在学习 GameMaker 之初因为自己需要看教程和文档来学习,凑巧国内因为各种原因这方面的资料比较少,于是在自己学习之余顺手翻译了一些视频和文档,这些东西确实会对后来者有些帮助,于是陆陆续续就可以从这些地方获得认同感,可以更有动力去完成这些事情,然后也就促进了自己的学习,我觉得这是挺有帮助的一种手法,因为你自己总得看的够认真才能去翻译其中的内容,那也能提高自己学习的效率。
好像又水了一篇,就这样吧。
2019-08-05 update : 原文补充了一段强调目的很容易被放弃因此是希望强调享受过程的,个人是很同意的,不过在这个功利的大环境下,恐怕对于多数人而言这并不容易。