>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 13066 个阅读者 刷新本主题
 * 贴子主题:  从《精通Spring》和《精通Vue.js》的写作分享学习新技术的经验 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2021-09-22 19:07:10     消息  查看  搜索  好友  邮件  复制  引用

有不少学编程的小伙伴们向我请教,说现在要学的计算机技术太多了,结果什么都学不精,很困惑,不知道如何让自己有突破,成为有底气,有实力的技术大牛。接下来,我想从自己写书的过程,和大家分享我学习新技术的心得。

从2016年开始,我先把原先的Java编程和Java Web开发等书籍做了升级,接下来又开始写JPA与Hibernate,再写Spring和Vue。目前除了《精通Vue.js:Web前端开发技术详解》已经在由清华大学出版社排版中,其余书籍均已经出版。那么多的API、流程、源代码、配置、解决方案在我的脑子里一一过目,整理成文。这些知识从哪儿来的?不是天生就存储在我的脑子里,也是我通过学习获得的。

今天要透露一个秘密,当我写Vue的时候,对Vue了解只是停留着可以用来做开发的程度,等把书写完,就把Vue的框架结构,运作原理,用法等,全部事无巨细地深入专研了一边,对每个技术细节都如数家珍,还要自己设计范例程序,把知识深入浅出的表达出来。

只要提到介绍某个技术的作者,大家就觉得这位作者肯定是这个领域的专家。专家也不是天生的,需要靠后天的实践和学习,来精通某个领域的技术。过去我的好几本非常畅销的书(比如曾经很热门的Struts),当我开始动笔时,也是只会熟练运用而已,没有对整个技术全貌有入木三分的认识。等写完Java Web、Struts和Hibernate,就对它们了如指掌了,而且这时候对Java语言有了更深刻的理解,从Struts和Hibernate本身的实现细节中,我看到了运用Java编程思想和语言来构建复杂的实用框架的各种技巧。这时候回过头来再写《Java面向对象编程》,就驾轻就熟了,这本书不只是停留在介绍Java语法的层面,而是融合了编程思想、设计模式、虚拟机运行原理和性能优化等各种知识。由此可见,写书的过程也是我对知识的学习、积累、提炼和融会贯通的过程。

现在,Vue这本书完稿了,如庖丁解牛一般,我对这个框架的脉络结构,运行流程有了精微细致的认识。根据我过去写作的经验,我相信这本书一定不负众望,可以帮助大家更省力地学会用Vue3开发前端应用。下面就介绍一下我的学以致用的学习新技术的经验。

(1)要学习一门新技术,首先要安下心来,给自己做一个心理动员,制定一个学习计划。这个计划可能要几个月,要做好坚持到底的心理准备。如果不花时间,肯定是没法扎实的学好知识的。因此,如果又想学,又没时间,就只能自寻烦恼。如果要学习,就要权衡利弊,安排出时间。

(2)遇到难点不要轻易放弃。就拿我的写作过程来说,虽说现在知识信息很容易获得,通过复制粘贴也可以拼凑成文,但这样是绝对写不出一本通俗易懂的书出来的。我写书要花至少大半年的时间,去全职地写一本书,我必须先让自己彻底消化吸收,搞明白这门新技术,才能动笔把它写出来。这是一场深度的技术旅行,有时也会遇到一些阻碍,比如编写的程序得不到预期的效果,或者官方文档说得很含糊,不知所云。有时为了调试一个程序,或者为了彻底搞明白官方文档上一句话的真实意思,会花掉一两天甚至一周的时间,这个时候不要轻易放弃,尝试用各种办法去解决问题。

当你经常这样去解决问题的时候,不仅会获得解决这个问题的方法,而且会增长处理其他问题的灵感。遇到一个新的问题时,就会在冥冥之中想出一些调试方案。比如一个程序运行时出错,不知道错误在哪儿,好像是莫名其妙,毫无线索。而那份灵感会帮助你左右突击,找到线索。当灵感不起作用时,过去成功解决问题所树立的信心,也会让自己有耐心用最笨的办法回到起点,先把程序中的代码删除一部分,简化成最简单的程序,如果运行通过了,再逐渐增加代码,最后找出实际出错的环节。

(3)在学习的过程中,一开始入门阶段阻力比较大。当我最初学Vue的时候,第一个简单的程序还比较容易搞懂,但是,接下来要稍微深入一步的时候,面对前端开发以及Vue特有的一大堆术语和概念,第一印象是纷繁复杂。再说有些参考书实在写得粗糙,即使一个字一个字看懂了,拼在一起,还是不知所云,看书如同嚼蜡,索然无味,这时失去了耐心,索性很快地翻书,一目十行,把整个章过一边,脑子里只是塞了一堆乱麻,理不出头绪来。这应该是很多程序员看一本介绍新技术书时的体会。

我写作也是如此,写前面三章的速度最慢,因为我自己还没有理出清晰的头绪。这时候就是锲而不舍地去啃参考书,看不懂就放慢速度去看,一本书讲不明白,就多看几本书,还要看官方文档,再参考网上的各种各样的文章。这些网上的文章,有些讲得比较正确,有些讲得含糊不清,也是很花时间的一件事,要寻寻觅觅,阅读各种各样的文章,再加上自己的理解消化,终于能解决心中的问题。如果参考资料都不能提供明确答案,就需要设计一些程序来测试框架的运行原理,或者直接看源代码。总之,只要耐着性子不断找答案,就能找到。

等到书的前面三章写完,就上了正轨,对这门新的技术不再陌生,对那些新的术语也感到熟悉亲切了,在自己的书里提及它们就像称呼熟人的名字一样自然。这时候,即使有些参考书写得很随性,也能轻松看得懂了,就像一个小孩咿呀咿呀说话,有些人不知道他在说什么,而了解他的人就会连猜带蒙知道他在说什么。这时候写后面的章节就势如破竹了,而且在写后面的章时,随着见解的深入,还会不断去完善前面的几章,使它们在知识的广度和深度上扩展。

(4)做练习,动手开发项目。当我把Vue的知识写完后,最后还要亲自动手写一个购物网站的范例出来,我是把原先的只用Spring框架实现的范例,改造为使用Vue和Spring来实现。当前面的章节写完后,我已经能侃侃而谈Vue框架了,可是等到自己动手开发时,并不是完全胸有成竹,不用动脑就能开发出来。我用了两个星期的时间编写代码,把原先的JSP文件改为用Vue框架来实现,并且要编写前端与后端的通信接口,最后终于把包括前端与后端的完整范例开发出来。等到独立完成了范例,又加深了对Vue的认识,明白了各个知识点的具体运用场合。

(5)通过写作来促进自己由被动学习转为主动学习。有一些小伙伴学习一门新技术,是为了工作需要,这也是一种动力。不过,根据我的经验,如果只是为了工作需要,也不一定会对这门技术学得很深入,而只是在某一方面比较熟练,最后会变成不断复制相似代码的熟练编码工。这种不求甚解的学习方式不利于累积自己的技术实力和开阔技术视野。因此,如果要让自己更深入掌握技术,还需要给自己再增加点动力,如果写书不现实,那么不妨尝试写一些技术文章。这样会促使你带着问题去学习,更积极主动地思考和消化知识。

对于我,写作本身给了我足够大的动力,我必须把这门技术了解得又完整又透彻,才能使得书的内容和书名中的“精通”或“详解”是名副其实的。我所创作的书就好像是我的学习笔记一样,有对知识的阐述,又有实例的演练。许多读者觉得我的书讲得特别明白,就是因为写作的思路和学习的思路是一致的。我写作的过程就是由浅到深,由点到面,对技术的探索过程,当我在学习和写作的过程中,我会主动地提出一些问题,比如这个框架为什么要这样设计,它和类似的框架有什么异同,它有什么优缺点?提出这些问题后,再去找答案。然后把答案写到书里。

当读者们沿着书的思路去学习,都会觉得很容易入门和理解。当读者们深入学习,就会与我的思考过程发生共鸣。用心的读者在读书中,也会在脑子里蹦出我所提出的同样的问题,正当迷惑不解时,就会在书的后面内容中看到了所要的答案。

(6)通过锲而不舍地学习,学习能力是可以提高和强化的。在2016年以前,有几年时间,我想让自己调整放松一下,没怎么积极学习新技术。等到2016年开始,又想再捡起写作工作时,一开始也有点畏惧。又要专研一大堆新的技术,怕自己钻不进去了。凡事开头难,等到把《Java面向对象编程》升级完后,就找回了曾经的学习和写作的感觉了。我发现,其实人的学习能力是不会随着年龄而老化的,一直保持学习的习惯,还会让自己学习和理解能力不断提升。只不过,记忆力确实会随着年龄的增长而有所退化。对我写过的书,如果两年不去翻阅,一些细节会遗忘,但是,我只要翻一下书,很快就熟悉过来。看自己写的书,是最容易看懂的,

分享上述写作和学习新技术的心得,希望给正在技术知识海洋里扑腾的小伙伴们一些信心。你看,我可以从不会到会,最终写出一本书出来,而你只要把这些书读懂,一定可以的。

孙卫琴
2021/9/21

程序猿的技术大观园:www.javathinker.net





[这个贴子最后由 admin 在 2021-12-01 09:55:41 重新编辑]
  Java面向对象编程-->Swing组件(下)
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->通过JavaMail API收发邮件
  精通Spring-->绑定表单
  Vue3开发-->Vue组件开发高级技术
  【Vue.js技术专题】Vue组件的数据监听
  【Vue.js技术专题】组件的递归
  【Spring Cloud Alibaba专题】按照集群模式搭建Redis集群
  【持久化专题】为什么JPA和Hibernate的持久化方法都抛出运行...
  【Spring专题】用AOP和SLF4J输出日志的范例
  【Spring专题】@Query和@Modifying注解的增删改操作
  视频:我的Java课堂总动员,带领小白们走马观花看Java江湖
  【持久化专题】用@MapsId注解映射派生主键
  【持久化专题】用@Formula注解映射派生属性
  【持久化专题】@Access注解设定Hibernate访问类的属性的方式
  【持久化专题】映射Bag包(值类型的集合)
  【持久化专题】通过JPA API调用存储过程
  【持久化专题】EntityManager和Session的merge()方法详解
  【持久化专题】通过JPQL查询语句进行批量处理数据
  【Java基础编程专题】为什么说:继承关系最大的弱点就是打破...
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。