我们公司有定期的分享课,好几位开发部的同学–包括android原生、JS前端、python后端–要求我分享网络协议方面的知识,我做过两场培训,一个是讲TLS/SSL协议,一个是讲HTTP协议的设计原则,结果培训完大家反馈有收获,但是太难了,收获又不是很大。我总结大家学习效果不好的原因后得出:
- 必须由浅入深,才能让团队中的新人快速成长;
- 必须系统化、体系化的讲解;
- 必须实时配合抓包讲解;
- 想要讲清楚,绝不是2、3个小时能做到的,至少要有10或者20个学时以上; 而与极客时间团队合作了《Nginx核心知识100讲》后,我的编辑张浩老师也跟我说,订阅了课程的同学反映非常好,也希望我能再出一门课,好好讲一下在Nginx课程里简单介绍过的Web协议。因此便萌生了制作《Web协议详解与抓包实践》这门课的想法。
研发部一位前端同学跟我说:实在学不动了,框架又更新了!我对他说:你必须搞清楚框架为什么更新,框架想解决什么问题,它又是怎么解决这些问题的!互联网变化确实非常快,但是,它的设计原则却没什么变化。我们必须先去理解它的设计原则,再来看实现细节。这也是这门Web协议课的另一个制作思路。
现在编程课已经从小学就开始了,而我上学那会,高中才有象征性的几节计算机课。在我看来,编程是拓展人脑计算能力的基础技能,所以,未来软件开发一定会成为全社会岗位的必备能力!这样的话,大家的学习负担就会非常重,怎么解决呢?我们需要理解,编程技术是为了解决实际问题的,而问题的本质并不经常变化,所以,我们要先学习那些不怎么变化的内容!像数据结构、算法、操作系统原理、Web协议等就是这些不怎么变化的知识点,值得我们首先花精力彻底搞懂它。这也是为什么我要出这门课的一个原因!
我经常感慨,为什么中国唐宋时期如此辉煌,可是近代却饱受挫折,发展缓慢?从吴军老师那里,我了解到,这是因为中国迟迟没有诞生大学!大学的必要性在于,可以让学生系统化的学习知识,只有体系化的知识,才能在我们的大脑中建立起结构化的树状认识,便于我们记忆、输出、使用!所以,我认为碎片化学习是一种新的学习方式,它能充分利用我们的时间,但碎片化必须搭配系统化学习才能有效的达到我们的学习目的!所以,这门课的另一个制作思路,便是体系化、一步一步的向下进行,而不要有跳跃式的讲解。
我现在所在的智链达还是一个典型的创业期公司,这与我之前所在的成熟期互联网公司都很不同,团队底子薄尤其需要快速成长,必须优先学习那些见效快、门槛低、可以利用碎片化时间学习的知识。所以,制作这门课程时,我特别放低了门槛,宁肯多讲些基础知识,再进入到协议的深层应用,也是出于此目的!