发表时间:2017-12-04 10:45:14 浏览次数:57
谈谈我对提升价值方法的一些思考,不是什么成功经验,只希望能给暂未找到路子的一线同学提供一些启发。
我先讲讲我之前的一些不好的经验,
1、知识积累不等于剪报。我曾经很热衷于收集各种信息,放到邮件里、evenote里,但实际经验是,收集完以后就再也没去看,等过几年一看,已经过时了。read it later经常变成read it never。我的看法是,趁新鲜,感觉读、理解、甚至可以做一些实验。我们得相信我们的大脑,大脑理解了以后,过一段时间可能细节会模糊,但pattern肯定会深深地印在你的脑海里,细节可以虽然用google唤醒。
2、知识体系的构建需要靠啃教科书。这个到目前为止我还是认可这个观点,因为很遗憾我没有接受过计算机相关学科的教育,大学里跟计算机相关的唯一教程是教我们如何检索论文。但有个问题是,这对我们来说现实吗?我们有太多的理由让我们在一堆教科书前停步,一年能读下一门基本就是极限了,但问题来了,有那么多门学科等着我。幸好,经历告诉我们,知识体系的维护,啃教科书只是需要,不是必要。当我们解决完一个技术问题,如果多花1、2个小时,就可以对相关领域做一次知识探底,脱离山寨的重点不在于你能不能解决问题,而是你在解决问题后愿意付出多少。
接下来给大家介绍一下在工作中读源码的几个方法,可以小试一下:)
1、善用碎片时间。工作过程中不可能给你一段很长的时间去学习,除非休年假的时候。最富裕的碎片时间在哪里?当你看到一个陌生的类或方法时,果断戳下去,一层一层戳,至少看到完全是你熟悉的代码为止,如果一直都是陌生代码,我一般是戳到native那层位置。做这个一般只需要花你的1-3分钟,一天中你可能会戳个几回,你会发现一段时间后,你戳的时间慢慢地减短了。
2、除非是你要测试的代码,或者跟你要测试的代码紧耦合,否则学习时别浪费太多时间在业务代码上,否则会出现两个重点:理解业务、学习实现,两个重点出现的时候,个人觉得最好还是拆开来学,比如花90%的时间理解业务,有些非关键的方法知道他是做什么的就可以了,不详细看他实现,然后再用,10%的时间再深入理解实现。
3、我们可以多花时间在成熟框架的代码上。
目前我感知的最成熟的JAVA代码是Java api。java api带给我们的不仅仅一堆好用的api,降低我们的开发成本,更重要的是,它同时也是我们身边的老师。今年有幸做过一点中间件的测试,在这些内部或外部的中间件的代码里,可以找到很多跟java api里一样的设计、实现。如果你花点时间进去,你可能会有两个感受,a、很多熟悉的代码,原来他里面的实现如此的精妙,赶紧抄到业务代码里;b、原来java还有这么牛x的东西,我/开发写的功能,如果用这个设计,得稳定多少。
除此之外,外部、公司久经考验的项目的代码,也是我们学习的对象,不一一点名了,另外有一点要注意的是,当你的业务代码里,出现一个新的框架或工具时,读懂它,至少读懂你用的那些功能,这是飞苍必要的。
4、说个小技巧,善用maven。虽然淘宝的源码是开放的,有需要的人随时可以拿到源码,但我觉得除非你想改代码,否则没必要co下项目代码。代替的方式是直接通过maven把source包搞下来看、调试。这样做有几个好处,1不需要申请空间权限(节约 5分钟-3小时),2不需要co(节约0-20分钟,视乎工程是否有文档啊图片啊各种坑爹的东西),3、不需要导入到idea(解决0-20分钟,视乎你的idea有多快)。
测试,当你对某段代码,某个实现理解时有疑惑,又没有搜索到权威发布的时候,测试或者说实验绝对是让你了解真相最快的方式。
测试时注意尽可能地将范围缩小,你期望地到什么结果,你得到这个结果最小的成本是什么?我是无法忍受我做一次实验要等着1分钟的build,1分钟服务启动。所以我经常放着几个空的工程,用来做实验。
另外一个,System.out.printf不建议作为单元测试的方式,但在实验时,也是个不错的选择。
归纳
归纳有个一个小技巧,就是联想,或者说关联思考?联想有助于归纳你所学到的东西,并在需要的时候可以演绎出新的知识。联想同类型的业务的现实,可能一开始没有太多可以联想的,但时间长了会好的。
学IT 首选苏州风云教育
风云教育-苏州园区国企,专注java软件开发培训、软件测试培训、VR/AR人才培训、企业人才定制培养的高端IT教育软件培训机构。选择风云教育,不止高薪更是高起点!
了解更多请咨询:0512-62651942
微信咨询:wxm1519541769
QQ咨询:1519541769
网址:http://www.17education.com/