大家好,我是程序员吴师兄,刚刚跑完三公里,明天就能完成 100 公里的里程碑了,以前跑步的时候喜欢带着耳机听音乐,现在越来越喜欢摘下耳机边跑边想事情,回想过去的失败教训,规划未来的发展。
今天这篇和大家简单分享一下我对学习编程的一些想法,希望能带给你一些思考。
不知不觉自己的编程生涯已经有 6 年,变秃了,也变强了。
在学习编程的过程中遇到过不少弯路,有的弯路很短,走进去就当散步,马上就能出来,增长了一些经验倒是好事;有的弯路是五连发夹弯,资深编程老司机都容易翻车;但还有一些弯路更可怕,它们前半段是笔直的,后半段却来了个大转弯,弄不好你以为走在康庄大路上,实际上南辕北辙却浑然不知。
我所知道的一个“隐形弯路”就是用学生的思维学习编程。
一、记笔记 Vs 写技术教程
在我们十几年的求学生涯中,关于知识的获取基本上都在执行以下步骤: 学习课本上给的教程案例,练习课后的配套习题,如此反复,直到通过考试。
很多学生思维的人会把这种学习方式映射到编程上:学习基础语法,练习几个小的教学案例,如此反复,直到认为学会编程。
在学习编程的过程中,读书时记笔记的习惯变成了抄代码,变量名、if语句是否换行、函数名完完全全照搬书中案例。
不可否认,在初期抄代码是不错的一个入门方式,每次都可以成功的运行代码极大的增进了学编程的信心,但一直抄很明显不是理智的行为,需要调整为写技术教程。
当你自己去写技术教程的时候,你必然会重新回顾一下整个流程,甚至会亲自再操作一遍,很容易发现之前学习过程中的疏漏点,为了弄明白它,你会查阅相关的资料,知识点得到了补充。
其次,由于你写的技术教程是发布于网上,为了让更多人看明白、更多人认可,肯定会尽可能的讲清楚,在讲清楚的过程中,对于所学的知识更加全方位的了解。
二、害怕未知 Vs 接受未知
学生时代大家总是会如饥似渴的学习,想尽办法把所有难题都弄明白,学生害怕的是未知,害怕一切不确定的问题,不知道问题是哪个范围,一旦问题找不到方向,总是会陷入焦虑的状态。
由于所学内容被限定了范围,所以总能通过书本、同学、老师、互联网找到明确的答案,即使无法弄明白也明确知道这个知识点属于哪个明确的范围,只是由于自己的问题做不出来而已。
但编程不同,很多编程问题无解的,无人知晓怎么去解决。
为了学好编程,我们必须忍受一定的未知。
未知是永远存在的,这是一个客观规律现实,不因人的意志而改变,和客观现实做斗争是无效的行为。
其次,有些未知的事情就是无解,把时间精力投入到无解的事情上属于浪费,有些未知的事情是因为当下的知识贮备不足以解决,需要忍受这一时的未知、咬咬牙坚持学习后面的内容才能得出答案。
三、按部就班 Vs 不断回溯
课本上的内容都按部就班阶梯式上升,如果没有学会前面的 A 内容,后面的 B 内容根本搞不懂。
由于未知的存在,学习编程过程中总是有一些问题会拦住我们,我们需要做的是先记录它,然后搁置在一旁,继续前行,继续学习新知识、练习新技能、接触新领域,不断的积累,不断的成长,以后时不时回溯一番,把它拿出来重新审视,说不定在学到某个新知识、练习某个新技能、接触某个新领域的时刻突然豁然开朗:哦,原来是这么一回事。