如何学习(3):迭代学习,精益求精

古人云「十年寒窗无人问,一举成名天下知」,这是中国古代为数不多的读书人的真实写照。大多数读书人只有十年寒窗,却不见得成名。

在软件开发领域有瀑布模式的软件工程方法论,它将软开发的几个过程「需求分析,概要设计,详细设计,编码,测试,发布」严格串行起来,只有需求分析清楚后,输出需分析文档,才开始做概要设计,依次类推,直到每个过程都完成后才给最终客户发布软件。但很多时候出现双方都不愿意看到的结果,那就是交付的产品并不是客户所期望的。

这两件事情有类似的地方,那就是它们运行在

封闭的系统,只有内部循环

在实际的工作环境中,技术学习是另一番景象。项目组安排一个新任务给你,你需要了解问题本身的各种因素,比如为什么会有该问题。如果你对该问题所涉及的技术一无所知,需要求助技术经理。经过一到两天的学习(没错,只有两天时间)将技术梳理清楚之后,拿出可行的解决方案。然后拿到方案评审会上讨论,评审专对方案按多维度进行“评头论足”,指出该案的缺陷,提出一些建议。给过这一轮PK之后,对该问题和所涉及的技术了解更深入,然后再想方案,进行评审。经过多轮评审之后,最终得到从技术和交付上都比较适合的方案。整个学习过程可能被K过多次,有种头破血流的感觉,但技术成长很快。

最近15年流行敏捷软件工程方法论,它采用小步快跑的方式将「需求分析,设计,编码,测试,发布」一轮一轮执行,每轮称为一个迭代。需求分析,设计,编码,测试在执行时,每个过程都对前一个过程进行验收,确保整个团队的理解与客户的想法是一致的,当然每轮迭代出口可交付的软件(即每个迭代都发布可用的新增功能),然后由客户进行验收。整个过程一旦出现理解偏差,马上进行交流和及时修正,达成交付即为客户所需要的。

同样地,这两个事情也有类似的地方,它们运行在:

开放的系统,存在正向反馈

学习规律与软件工程中敏捷方法论有异曲同工之巧,它需要经历多次循环(迭代)和正向反馈(考试检查,或者应用解决某个问题),才能一步步建立「全栈式知识结构」和实现「系统化知识」。

迭代式学习

作家格拉德威尔在《异类》一书中指出:

人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。

想要成为某个领域的专家,需要达到1万小的专业训练。如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。

在这1万小时的学习中,并不每天学习一点,经过5年之后,才将该知识(技术)掌握,而是不断地进行周期性的迭代过程。实际的过程中按如下顺序进行:

遇到问题 -> 搜索解决该问的知识(技术) -> 使用已有知识去理解新知识 -> 将新知识融入到知识体系 -> 应该新知识

每个过程都会产生冲突,学习的过程就是解决这些冲突的过程。

分享学习计算机网络的经历

最早接触计算机网络是在大三的专业课上,当时对计算机网络不感兴趣,只了解一些计算机网络的基本概念,对协议的细节一无所知,结果计算机网络成了我大学唯一一门不合格的专业课。

报考研究生时,阴差阳错地考取了分布式与计算机网络这个研究方向,幸好遇到一本外国经典的计算机网络教材,深入浅出,通俗易懂。结果不到一个月,我就将数据链路层和网络功能的功能看完了。当看完网络层功能时,合上书本,想到了它与实际生活中的运输交通整个网络体系统是类似(其实与现在发达的物流网络更为类似)。看完网络层之后,理解完数据是如何通过网络层进行互联之后,好像任督二脉打通,所有知识点完全连在一起了,剩下的知识都是协议本身的细节,但网络背后的互联协作却一览无余。

第一份工作,竟然也是跟计算机网络强相关。我在那个项目里面负责VRP(Virtual Router Protocol)协议的测试工作,对TCP/ICMP/VLAN各种协议行为做了充分的测试,还帮同事一起分析出现的各种奇怪行为。在工作之余,我阅读了RFC协议规范,甚至将VRP开源代码修改成多实例模式。

同样在第一份工作,出于对Linux内核的兴趣,将内核协议栈源代码,从网卡驱动开发,IP层协议,TCP协议,UPD协议,到Socket的处理,翻了个朝天。最后还发现一个规律:网络协议栈在实现时,经常使Adpater和装饰模式,原因是协议像水管一样,一层接一层。加一段水道,就可以烧出热开水,再加一段,就可以煮出咖啡,任君组合

然后,然后是到了我现在供职的公司,工作内容与计算机网络不相关。有次客户遇到了个tcp协议的性能问题,老大不知从哪里收到风,知道我对网络比较了解,决定让我出差到客户那处理这个网络问题。当时和客户那边的网络专家一起,经过一周的分析和数据采集,终于定位到是缓冲区由于内存不足而变小,导到大量链接发送速度下降。接下来,部门内的网络问题,我都是以重要角度投入攻关,并形成了很多定位经验。

我就是这样从网络小白,变成计算机网络工程师,整个过程不知经历了多少次迭代,多少次实验对知识的修正。从原理,到协议测试,再后来的协议问题定位。每次知识(技术认知)冲突的出现,都是需要解决的问题,一旦解决之后,能力会得到提升,知识体系更加完善。

小结

学习不会是一蹴而就,也不是经历漫长阶段才能将知识学到,而是迭代式的。每个迭代都有知识进帐,但在多次的迭代学习过程中,才能做到建立「全栈式知识结构」和实现「系统化知识」。

迭代式不习,让你们的知识更系统化,精益求精。


更实时查看文章,请关注我的公众号 「程序员思维」

这里写图片描述

本人资源全部来自互联网,仅供学习参考、交流之用,请及时删除,如果喜欢副本内容请购买正版。 迭代学习控制 孙明轩 第一章 迭代学习控制系统 1、1 迭代学习控制系统概论 1、2 迭代学习控制过程的... 1、3 简单实例 第二章 线性系统的迭代学习控制 2、1 D 型学习律 2、2 PID 型学习律 2、3 正则线性系统的迭代... 2、4 非正则线性系统的迭... 2、5 P 型学习律 2、6 最优学习律 2、7 基于脉冲响应的学习律 第三章 非线性系统的迭代学习控制 3、1 高阶学习律 3、2 滤波器型学习律 3、3 模型算法学习律 3、4 模型参考学习律 3、5 非线性时滞系统的迭... 3、6 非正则非线性系统的... 第四章 鲁棒迭代学习控制 4、1 PID 型遗忘因子学习律 4、2 P 型遗忘因子学习律 4、3 选择学习算法 4、4 鲁棒收敛性 4、5 高增益反馈学习律 4、6 反馈-前馈迭代学习控... 4、7 非正则系统的反馈-前... 第五章 任意固定初态下的迭代学习控制 5、1 D 型学习律的极限轨迹 5、2 PD 型学习律的极限轨... 5、3 带有初始误差修正的... 5、4 其它形式的学习律 5、5 非正则系统的迭代学... 5、6 高阶非正则系统的迭... 第六章 迭代学习控制系统的 2-D 分析 6、1 Roesser 模型 6、2 正则线性离散系统的... 6、3 非正则线性离散系统... 6、4 含初始修正的学习律 6、5 线性时滞系统的迭代... 第七章 迭代学习辨识 7、1 迭代学习辨识的表述 7、2 系统初态已知时的迭... 7、3 鲁棒迭代学习辨识 7、4 系统初态未知时的迭... 7、5 外弹道气动系数辨识 第八章 迭代学习控制的回顾与展望 8、1 研究现状 8、2 研究方向 附录 迭代学习控制理论的数学基础 A、1 Bellman-Gronwall 引... A、2 差分不等式 A、3 向量函数的微分中值... A、4 向量与矩阵的范数 A、5 λ范数 参考文献
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值