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

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

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

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

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

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

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

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

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

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

迭代式学习

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

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

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

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

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

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

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

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

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

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

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

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

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

小结

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

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

时间: 2024-12-16 18:10:42

如何学习(3):迭代学习,精益求精的相关文章

机器学习(3):机器的进化-迭代学习

之前介绍的简单线性回归,就是一个回归模型,是一个可用于机器学习的模型.什么意思呢?就是模型的状态(参数集合)是可以进化的,只要合理训练它,模型就能取得更好的预测状态,所以说模型可用于机器学习. 要应用机器学习,一开始就要考虑选择一个良好的模型(分类模型或回归模型),想清楚了,这步是很重要的,如果你选择了一个不对口的模型,你可能花了半辈子的样本挑选与训练,也得不到一个好的模型状态,最终预测不到好的结果.但这里讲的不是怎么选择模型,而是想说,模型是怎么进化的,也就是训练的过程是怎么样的. 又是一些枯

Cocos2d-x 3.1.1 学习日志13--CocosStudio学习必看

听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation类来播放,这种方法简单暴力,应对一些细节要求低的动画场景的时候,这么干无伤大雅.但是当动画帧数稍高的时候就会需要大量的图片,消耗资源很大. 第二种:是由Cocos2d-x提供的Action类来播放动画,这种动画是在帧循环中靠调整每次渲染的坐标来打到动画效果,由于帧循环是1/60秒刷新一次,会让这样播

Python学习教程_Python学习路线:Python3里你不知道的秘密特性

Python学习教程_Python学习路线:Python3里你不知道的秘密特性 概述 到2020年,Python2的官方维护期就要结束了,越来越多的Python项目从Python2切换到了Python3.其实在实际工作中,很多伙伴都还是在用Python2的思维写Python3的代码.给大家总结一下Python3一些新的更方便的特性!希望你们看完后也能高效率的编写代码 f-strings (3.6+) 在Python里面,我们经常使用format函数来格式化字符串,例如: user = "Jane

DNN结构构建:NAS网络结构搜索和强化学习、迁移学习

DNN结构构建:NAS网络结构搜索和强化学习.迁移学习 2018年05月14日 15:23:20 wishchin 阅读数 2537更多 分类专栏: ANN/DNN/纤维丛 前言 谷歌推出的NASNet架构,用于大规模图像分类和识别.NASNet架构特点是由两个AutoML设计的Layer组成——Normal Layer and Reduction Layer,这样的效果是不再需要相关专家用human knowledge来搭建卷积网络架构,直接用RNN把Hyperparameter计算出来,这样

一文让你看懂人工智能、机器学习、深度学习和强化学习的关系

如果说信息技术是第三次工业革命的核心,那么人工智能所代表的智能则是下一次工业革命的核心力量. 2016年,谷歌阿尔法围棋以4:1战胜围棋世界冠军.职业九段棋手李世石,不仅让深度学习为人们所知,而且掀起了人工智能的"大众热".此后,人工智能越来越热,从机器人开发.语音识别.图像识别.自然语言处理到专家系统等不断推陈出新. 同时,人工智能技术越来越多地融入到我们的生活中,出现了智能音箱.智能助理.智能机器人等. 根据应用领域的不同,人工智能研究的技术也不尽相同,目前以机器学习.计算机视觉等

(八)从零开始学人工智能--统计学习:统计学习基础知识

目录 统计学习基础知识 1. 统计学习种类 1.1 监督学习 1.2 非监督学习 2. 统计学习中的基本概念 2.1 统计学习三要素:模型,策略,算法 2.2 欠拟合和过拟合 2.3 如何避免过拟合 2.4 过拟合产生的原因 2.5 最大似然估计和贝叶斯估计 3. 线性回归 3.1 经典线性回归 3.2 岭回归(ridge regression) 3.3 lasso回归和ElasticNet 4. 线性分类 4.1 感知机 4.2 逻辑回归(logistic regression) 4.3 So

【Linux学习】Makefile学习(二)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 40975    Accepted Submission(s): 13563 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

[学习笔记]iphone学习小技巧

1. 版本控制 -- 是否响应某个方法 .查看当前系统版本. eg: [self respondsToSelector:@Selector(presentModalViewController:animated:)]//Yes:表示响应这个方法 [[UIDevice currentDevice].systemVersion floatValue] < 7.0 //判断当前系统是否小于7.0 2. 模态视图动画设置 eg: ModalViewController *modalVC = [[Moda

(转)Predictive learning vs. representation learning 预测学习 与 表示学习

Predictive learning vs. representation learning  预测学习 与 表示学习 When you take a machine learning class, there's a good chance it's divided into a unit on supervised learning and a unit on unsupervised learning. We certainly care about this distinction f

几种分类问题的区别:多类分类,多标签分类,多示例学习,多任务学习

多类分类(Multiclass Classification) 一个样本属于且只属于多个类中的一个,一个样本只能属于一个类,不同类之间是互斥的. 典型方法: One-vs-All or One-vs.-rest: 将多类问题分成N个二类分类问题,训练N个二类分类器,对第i个类来说,所有属于第i个类的样本为正(positive)样本,其他样本为负(negative)样本,每个二类分类器将属于i类的样本从其他类中分离出来. one-vs-one or All-vs-All: 训练出N(N-1)个二类