怎样学习(3):迭代学习,精益求精

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

在软件开发领域有瀑布模式的软件project方法论。它将软开发的几个过程「需求分析,概要设计,具体设计,编码。測试,公布」严格串行起来,仅仅有需求分析清楚后。输出需分析文档,才開始做概要设计,依次类推,直到每一个过程都完毕后才给终于客户公布软件。

但非常多时候出现两方都不愿意看到的结果。那就是交付的产品并非客户所期望的。

这两件事情有相似的地方。那就是它们执行在

封闭的系统。仅仅有内部循环

在实际的工作环境中,技术学习是还有一番景象。项目组安排一个新任务给你。你须要了解问题本身的各种因素,比方为什么会有该问题。假设你对该问题所涉及的技术一无所知,须要求助技术经理。经过一到两天的学习(没错,仅仅有两天时间)将技术梳理清楚之后。拿出可行的解决方式。

然后拿到方案评审会上讨论,评审专对方案按多维度进行“评头论足”,指出该案的缺陷,提出一些建议。

给过这一轮PK之后,对该问题和所涉及的技术了解更深入,然后再想方案。进行评审。经过多轮评审之后,终于得到从技术和交付上都比較适合的方案。整个学习过程可能被K过多次。有种头破血流的感觉,但技术成长非常快。

近期15年流行敏捷软件project方法论,它採用小步快跑的方式将「需求分析,设计,编码,測试,公布」一轮一轮执行,每轮称为一个迭代。需求分析。设计。编码,測试在执行时,每一个过程都对前一个过程进行验收,确保整个团队的理解与客户的想法是一致的,当然每轮迭代出口可交付的软件(即每一个迭代都公布可用的新增功能)。然后由客户进行验收。

整个过程一旦出现理解偏差。立即进行交流和及时修正,达成交付即为客户所须要的。

相同地,这两个事情也有相似的地方,它们执行在:

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

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

迭代式学习

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

人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。

1万小时的锤炼是不论什么人从平庸变成超凡的必要条件。

想要成为某个领域的专家。须要达到1万小的专业训练。

假设每天工作八个小时,一周工作五天,那么成为一个领域的专家至少须要五年。这就是一万小时定律。

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

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

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

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

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

报考研究生时。阴差阳错地考取了分布式与计算机网络这个研究方向,幸好遇到一本外国经典的计算机网络教材,深入浅出。通俗易懂。结果不到一个月,我就将数据链路层和网络功能的功能看完了。当看完网络层功能时,合上书本,想到了它与实际生活中的运输交通整个网络体系统是相似(事实上与如今发达的物流网络更为相似)。

看完网络层之后。理解完数据是怎样通过网络层进行互联之后,好像任督二脉打通。全部知识点全然连在一起了,剩下的知识都是协议本身的细节,但网络背后的互联协作却一览无余。

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

相同在第一份工作。出于对Linux内核的兴趣,将内核协议栈源码,从网卡驱动开发,IP层协议,TCP协议,UPD协议。到Socket的处理,翻了个朝天。

最后还发现一个规律:网络协议栈在实现时,常常使Adpater和装饰模式。原因是协议像水管一样。一层接一层。

加一段水道。就能够烧出热开水,再加一段,就能够煮出咖啡。任君组合

然后,然后是到了我如今供职的公司。工作内容与计算机网络不相关。有次客户遇到了个tcp协议的性能问题。老大不知从哪里收到风,知道我对网络比較了解,决定让我出差到客户那处理这个网络问题。当时和客户那边的网络专家一起。经过一周的分析和数据採集,终于定位到是缓冲区因为内存不足而变小,导到大量链接发送速度下降。

接下来,部门内的网络问题,我都是以重要角度投入攻关,并形成了非常多定位经验。

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

小结

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

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


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

这里写图片描写叙述

转载于:https://www.cnblogs.com/gccbuaa/p/7263407.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab宏参赛,MATLAB杯无人机大赛 | 决赛通知!

原标题:MATLAB杯无人机大赛 | 决赛通知!重磅消息——决赛通知!经过近5个多月的准备,MATLAB杯无人机比赛即将迎来精彩的决赛,来自全国10强的参赛队伍,齐聚羊城广州,美丽的中山大学,进…

php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】

本文实例讲述了JavaScript表格隔行变色和Tab标签页特效。分享给大家供大家参考,具体如下:最近一直在看JavaScript知识,偶尔也穿插一点Jquery,感觉Jquery用起来真爽,减少了很多的代码量,而且学习也不是很高。…

java实现gdal栅格矢量化,《GDAL源码剖析与开发指南》一一1.5 GDAL源码目录

本节书摘来自异步社区出版社《GDAL源码剖析与开发指南》一书中的第1章,第1.5节,作者:李民录 更多章节内容可以访问云栖社区“异步社区”公众号查看。1.5 GDAL源码目录GDAL源码剖析与开发指南下载的GDAL源代码压缩包目录如图1-2所示&#xff0…

netlify支持php吗,hexo netlify 搭建简易博客

npm install hexo-cli -ghexo init blogcd blognpm installhexo server将本地文件夹推送到github修改主题git clone https://github.com/jangdelong/hexo-theme-xups.git themes/xups themes/xups修改yml配置文件重新hexo server自己的博客sleepy-poincare-e0ca11.netlify.c…

jps、jstack、jmap、jhat、jstat、hprof使用详解

https://my.oschina.net/feichexia/blog/196575#comment-list A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下:…

oracle数据库日期格式的运算,Oracle时间类型date,timestamp时间差计算

Oracle的时间类型有两种date和timestamp. date精确到秒,timestamp精确到毫秒.1.计算date类型的时间差可以先把年,月,日,小时,分,秒用to_char函数拆分出来,再用to_number函数转换成数值类型.有了这些单独分开的时间就好办了.就再一个个的去减,记得考虑单位换算就行.比如都转换…

url去除掉一个参数php,php怎样去掉url中的参数_后端开发

php去掉url中的参数的要领是:能够经由过程trim()函数来完成。该函数能够删除字符串中的指定字符,并返回已修正的字符串。细致使用要领如:【trim($url,"?");trim($url,"#");】。相干函数引见:(引荐教程&#…

C++之类的静态成员变量和静态成员函数

static静态成员函数 在类中。static 除了声明静态成员变量,还能够声明静态成员函数。普通成员函数能够訪问全部成员变量。而静态成员函数仅仅能訪问静态成员变量。我们知道。当调用一个对象的成员函数(非静态成员函数)时,系统会把…

使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一

好吧,现在我们假设你已经安装好了VS Code开发工具、.Net Core 2.0预览版的SDK dotnet-sdk-2.0.0(注意自己的操作系统),并且已经为VS Code安装好了C#扩展(在VS Code的扩展菜单中输入OmniSharp,安装扩展即可&…

WPF--TextBlock的ToolTip附加属性

大家可能在项目中,有的时候,由于显示的内容过长,所以,需要显示一部分内容,然后后面用省略号,把鼠标放上去,会显示出来全部的内容。 作为一个LowB程序员的我,第一反应是SubString截取…

Laravel框架一:原理机制篇

转载自http://www.cnblogs.com/XiongMaoMengNan/p/6644892.htmlLaravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点。 一. 请求周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。 注册…

Linux高频命令汇总,Linux高频命令

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?findfind path [options] params作用:在指定目录下查找文件1234find / -name "target.java" #在根目录下查找target.java文件find -name &qu…

linux系统时间函数,Linux时间时区详解与常用时间函数

时间与时区整个地球分为二十四时区,每个时区都有自己的本地时间。UTC时间 与 GMT时间我们可以认为格林威治时间就是时间协调时间(GMT UTC),格林威治时间和UTC时间都用秒数来计算的。UTC时间与本地时间UTC 时区差 本地时间时区差东为正,西为…

linux awr 日志,Linux平台生成awr报告

1.使用Oracle用户登录应用服务器所使用的数据库所在的服务器# su –oracle2.输入env命令,查询出ORACLE_HOME 目录3.然后进入$ORACLE_HOME/rdbms/admin目录,查询awr语句(此步骤可以忽略)此处可以直接省略2,3…

HDU 1159 Common Subsequence 动态规划

2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中大…

【Xmail】使用Xmail搭建局域网邮件服务器

下载地址: http://www.xmailserver.org/xmail-1.27.win32bin.zip,当前最新版本 1.27。 解压文件:xmail-1.27.win32bin.zip 1、把其中的 MailRoot 目录拷贝到 C:\; 2、把 C:\xmail-1.27.win32bin\xmail-1.27 目录下的所有文件&am…

uploadify 配置后,页面显示无效果

uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可 转载于:https://www.cnblogs.com/daryl/p/7299471.html

Day39:threading模块、ThreadLocal

一、threading模块 1、线程对象的创建 1.1 Thread类直接创建 import threading import timedef countNum(n): # 定义某个线程要运行的函数print("running on number:%s" %n)time.sleep(3)if __name__ __main__:t1 threading.Thread(targetcountNum,args(23,)) #生成…

linux h5 动画软件下载,技术|7款绚丽的jQuery/HTML5动画及源码

jQuery是一款非常流行的JavaScript框架,利用jQuery,我们可以制作简单的动画效果,但是结合HTML5,这样的动画效果就会变得更加出彩。本文分享了7款jQuery结合HTML5的动画以及源码下载。1、HTML5/SVG实现布谷鸟时钟动画这是一款非常有…

时钟抖动对高速ADC采样系统的影响

在高速数据采样中,ADC时钟信号的稳定性对其性能有至关重要的影响,因为这些抖动会破坏高速ADC的时序。 孔径的定义 孔径时间ta,是指从采样时钟跳变开始,一直到保持电压建立。换言之,孔径是指采样保持电路中开关切换的时…