怎样学习(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强的参赛队伍,齐聚羊城广州,美丽的中山大学,进…

action中写php函数,WordPress中add_action(将函数连接到指定action)

WordPress中add_action(将函数连接到指定action)首先说下WordPress中用的钩子,将一个函数,以一个新的动作命名,该函数就是语法:123add_action($tag,$function_to_add,$priority,$accepted_args);?>参数:$tag(字符串)(必填)$fu…

selenium之截图

selenium支持对当前页面保存截图,使用方法: driver.get_screenshot_as_file(file_path) 代码举例: ...... def get_screenshot(driver, path):保存页面截图n 0if path:passelse:path "D:\\test_data\\screenshot\\error_png.png"…

java excel类库,jExcelApi Java 操作 Excel 的类库

jExcelApi Java 操作 Excel 的类库Java Excel API(JXL)是一个成熟,开源的用来操作Excel电子表格的Java类库,支持读取,修改,写入等操作。这个项目基于GPL发布,而且对中文有很好的支持。● 支持字体、数字、日期操作● 能够修饰单元…

锤子剪刀布 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入描述…

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

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

PHP 递归删除目录中文件

/** * 递归删除目录中文件 * param $pathname * return bool */public static function delDir($pathname)//要删除的目录{ if(file_exists($pathname)) { if(is_file($pathname)) { unlink($pathname); } else { $dir opendir($pathn…

matlab 符号表达式 系数 小数,matlab符号表达式系数

1数学符号matlab符号表达式系数: 数学符号,缺失:matlab表达式系数2838/9数学符号归类,包含运算符号、比较符号、几何符号、代数符号、常用分数、积分等各种符号。数学符号﹢﹣/≌∽≦≧≒﹤﹥≈≡≠…

STM32视频教程《原子教你玩STM32》

源:STM32视频教程《原子教你玩STM32》转载于:https://www.cnblogs.com/LittleTiger/p/7267735.html

海豚php表格,表格选取(1.4.3+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...

## addSelectTable(name值, 标题, 提示, 表格列头 , 表格数据, 选择内容的url])标识符:selectTable>[info]1.4.3或更高版本支持。>[danger] **注意:该功能仅1.4.3版本以上,并且授权版用户才有,普通版没有该功能**。如果您是…

Number Sequence (KMP的应用)

个人心得&#xff1a;朴素代码绝对超时&#xff0c;所以要用到KMP算法&#xff0c;特意了解了&#xff0c;还是比较抽象&#xff0c;要多体会 Given two sequences of numbers : a11, a22, ...... , aNN, and b11, b22, ...... , bMM (1 < M < 10000, 1 < N < 1000…

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

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

Cocos2d-X开发中国象棋《九》走棋规则

在上一节中实现了走棋&#xff0c;这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则&#xff1a; 1&#xff09;将 将的坐标关系&#xff1a;横坐标相等&#xff0c;纵坐标相减绝对值等于1&#xff0c;或者纵坐标相等&#xff0c;横坐标相减绝对值等于1…

php代码expl,php – 参数号无效:参数未定义Explination

我使用一个简单的测试表来尝试调试此错误.我试着写一个脚本,用户可以更新他们的用户信息,我搜索过但没有找到任何具体的帮助我.我的测试代码如下&#xff1a;PHPif(isset($_POST[submitBtn])){//Display Errors{{ PDO::ATTR_ERRMODE; }}$db->setAttribute( PDO::ATTR_ERRMOD…

js学习总结----编写简单的ajax方法库

具体代码如下: ~function(){//ajax:实现ajax请求的公共方法;当一个方法传递的参数过多&#xff0c;而且还不固定&#xff0c;我们使用对象统一传值法&#xff08;把需要传递的参数值都放在一个对象中&#xff0c;一起传递进去即可&#xff09;function ajax(options){//把需要使…

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中运行的进程状态信息。语法格式如下&#xff1a; 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下&#xff1a;…

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

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

pta乙级之路

1017 A除以B (20分) #include #include #include<math.h> using namespace std; int main() { string str; cin>>str; int n,ch[1009]; cin>>n; int lenstr.length(); for (int i0;i<len;i){ ch[i]str[i]-‘0’; } for (int i0;i<len-1;i){ ch[i1]10*(…

oracle禁止修改密码,Oracle 用户密码过期后不允许修改密码的示例代码

--本人是初学者&#xff0c;不知道还有没有更好的方法create table PASSWD_CHANGED(USER_NAME VARCHAR2(20),OLD_PASSWD VARCHAR2(100),NEW_PASSWD VARCHAR2(100))CREATE OR REPLACE FUNCTION my_password_verify(usernameVARCHAR2,passwordVARCHAR2,old_passwordVARCHAR2)RETU…