导语:19岁Instagram网红编程妹纸又来了,这次她要给大家说说怎样才能成功自学好编程。
文/ Lydia Hallie
译/ 政委
来源/ https://medium.freecodecamp.org/successfully-teaching-yourself-how-to-code-f6aac23db44a
在发表了上一篇关于我怎样成为19岁软件开发者的文章之后(上一篇文章戳这19岁少女沉迷编程竟成Instagram网红,怎么做到的?),成百上千的人带着同样的问题来找我:“我喜欢读你的文章,我也很想学习编程,但就是没法迈出第一步。这事太令人沮丧也太费劲,我把握不了框架,失去了动力。”我希望带动尽可能多的人加入到技术世界,我觉得关注那些有动力但不知如何下手的人们是很重要的。
我知道,如今有成千上万的资源来“教你怎样编程”。但是,那些并不是最重要的部分,也不是本文讨论的内容。关键的是你怎样围绕编程构建生活,处理所有的新信息,保持自己的动力,以及关注正确的领域。
有人常和我说:“是的,Lydia,这听起来都很好,但我觉得这篇文章大概又只能激励我个10分钟,然后我就又一次回去猛看美剧了!” ——在开始之前,你需要知道,如果你致力于自学编程或者大体了解编程,你已经很棒了。你已经藉此展现出你的思考能先人一步,能把自己远远推出舒适区,哪怕这事还没成!如果你会为学习未知事物感到激动,这些事物还是特别累人的那种,那你肯定会成为一个好开发者的。
我当了多年导师,发现那些自称已经失去动力的学员们往往有一种模式。他们专注于更大的目标,忽视了自己积累的跬步,因此而感到原地踏步。其实就算明白这一点,在刚开始编程的时候,我也会有和他们一样的失落感。我觉得我没有取得任何进步,因为我认为周围的所有人水平都比我高,我永远都做不到和他们一样好。
当我这么思考的时候,我完全忽略了自己已经取得的许多重大进步。在自己意识到之前,我已经可以不假思索地写出代码,也能创造出越来越复杂的应用。我看不到这些进步,仅仅是因为我不断地拿自己和那些已经有多年经验的人作比较。这样我只能想到“我离目标还很远很远。”
编程学习过程中忽视进步自我贬低,这个坎是真实存在的,每个人都在挣扎着翻过它。这坎对有的人可能更高一些,但我真的很想帮你过去。这个困境其实完全可以避免,因为它只在你的心里,但说起来总是容易的。
虽然各人有各人的纠结,但我会致力于解答人们学习编程是最普遍的问题:怎样尽可能有效地处理新信息,以及怎样保持动力。我不打算详解怎样找到最好的资源,因为这个问题见仁见智。
妹子说:就算完成的是个小项目,我也觉得非常开心!我在过程中学到了很多,用过去没使用过的技术造出了新东西。
有效处理新信息
每个人都是不同的,每个人吸收信息的方式也不会只有一种。是的,这位“显然哥”,这很明显,但也没有你想得那么明显。在你开始学习如何编程之前,你得先学会如何学习。
你不久就会发现,或者已经发现有两种遍地开花的资源:在线课程和编程语言的说明文档。但是,只要你不是超级天才,你不可能单靠看视频读文档就记住所有新信息(尤其是那些东西时很难集中注意力。不要自欺欺人了,这东西无聊得要死)。大家刚开始都有过纠结的时候,你在看教学视频或者读说明文档时,觉得迷茫又困惑是很正常的。所以如果不用他们那套含糊不清的外星话,程序员们很难把代码向外行解释清楚。(说你呢!Stack Overflow!)
无论你觉得自己有多厉害——不要跳过基础部分。学一门编程语言的时候从头开始,不要跳过任何内容。打好基础极为重要,忽视这些内容你将来会后悔的!当然,你可以随时Google,但这只会让你变成一个低效开发者。如果你在读说明文档,从第一页(或者章节1.1)开始向后读。有些人可能会觉得这是浪费时间,但请相信我:这并不是浪费。注意文档里的每一个细节,将来的你会感谢自己的!
如果你在理解基础内容是有困难,请放松。你会好起来的。你将来能成为多么优秀的程序员,和你现在的纠结程度完全无关。
每过10分钟,或者每读完一个自然段,用你自己听得懂的话向自己解释学到的东西。这可能有点难,但你很快就会发现哪些部分自己还不理解。教授是最好的学习,哪怕你没人可教!假装你在向另一个人解释你学习的内容,当你意识到自己对某个部分不太清楚:立即搞明白,然后把答案写下来!真的写下来的时候,你会想得更透彻,记得更轻松。
不要光听课或者光读书:通过运行你自己的项目来主动参与进去。实践你的每一点新知,无论它有多小。这个操作不像说起来那么容易,实际上做起来还可能很泄气,但这时候你就知道自己走对路了。你的编程技能通过经常操练提高,而非仅仅“知晓”。相信我,你在每一次操练当中都会提高,哪怕你自己都没意识到。
保持动力
很多人问我,我是怎么逼自己每天写那么多代码的。我想了一阵子有什么办法来解释这背后的想法,现在谜底揭晓了!
每个人都喜欢玩游戏,不管是哪种类型的。人们因为喜欢即时 满足而喜欢游戏,你感到有所成就而且能看到自己越来越精于此道。这可是绝佳的动力!我有过相同的体验,只不过把游戏换成了编程。这事比你想的要容易。
设置一个小目标。这不意味着你不关心进步:相反,这正意味着你非常在意。为你希望在今天完成的任务建立一个待办事项列表:可能只是一页的阅读、一节课程的学习,或是仅仅10行的代码书写。通过完成整个待办事项列表,你会获得很大的满足感,并对你取得的进步有更大的信心。对自己说“我今天把所有想做的事都做完了”,比告诉自己“我今天只完成了课程进度 的2%”要强得多。另外,哪怕你真的只读了1页或是只创造了一个输入,让自己知道有所成就仍然极为重要。即刻满足!
经常提醒自己已经取得的成就。这看起来有点难,因为你自己也未必能注意到。你没法主动观察到自己的进步,但请相信我:当 你每天编程(哪怕只有一丁点),你也会逐渐变得精通。做到 观察自己进步的最好方法,是写一个小小的日记。用一句话概述今天困扰你的问题,一个月之后再来回顾。你极有可能早就搞定了!通过日记,你可以看到自己日渐精进。
开展一个你自己感兴趣的个人项目!不是待办清单里那种,而是你 真正想要做的事情。现在先别想着造个无人车或者做饭机器人,选择小一点的目标,比如给网站重新排个版或者做个小游戏之类,你会发现完成起来更有动力。当项目完成的时候,你将有实物可秀:我有所成就了!
意识到你做得比自己想的要好。看低自己的倾向被称为"冒充者综合征"。你可能会觉得周围所有人知道的都比你多,编程也比你强得多:但这并非事实。有些事怎么强调也不为过:只要保持推进,你一定会成为优秀的开发者。相信自己,你能搞定的——你已经证明自己可以通过主动自学就获得编程能力了。
需要牢记的事
永远不要拿自己去和其他开发者作比较。这是老调重弹,但这也非常关键。别拿刚翻开第1章的自己和已经在第20章的别人相比。你抵达他们水平的速度比你想得要快许多!我贴了这么一张图给你们看,4个月之前的我会被图中的景象吓趴下。但我现在笑着看它,还能指出屏幕上的几处错误呢!
你的进步远比想得要大。每当你学习课程或是写代码,你都在成长。接受这一切吧(我知道这很难)。
万事开头难,你不是唯一在起步阶段遇到困难的人,这也不意味你会变成烂程序员。你现在感受的沮丧非常正常,正是学习 进程的一部分。在不久的将来,当你回望这份垂头丧气的经历, 你会回来给我点赞的。
如果可能的话,找一位导师。我的导师好得超乎想象,我本人也很愿意伸出援手。向别人提问并获得指点是很棒的事,对你跨过难关很有帮助。
最后放出妹子的Instagram,有兴趣的朋友可以去粉下交流下~
— 完 —
快点扫我~
今天是粉红熊猫公主香香的第2次公开见面日~
领取专属 10元无门槛券
私享最新 技术干货