一、下定决心
2020年7月1日,是我下“决心”要开始学习Java EE企业级编程的日子。为什么要用“决心”这么强烈感情色彩的词汇呢,是因为学习向来就不是一个简简单单一蹴而就的事情,尤其像Java EE这样的高级架构和编程技能的学习,会占用你大量的时间和精力。我自己也会经过一番激烈的思想斗争,到底拿出这么多时间去学习一套如此高级的知识领域,真的会有收货吗?慢慢地,心里越来越坚定,与其在这胡思乱想,还不如把时间省出来都花在学习上来得更充实,所谓吾尝终日而思矣,不如须臾之所学也。所以,下定决心后就不要再迟疑,开干!(不对,是开学!)
二、当前学习成果汇报
跟大家汇报一下我当前的学习成果。自2020年7月1日截止到2020年8月14日,我工作日每天拿出3个小时来学习,每天学习到晚上10:30,周六学习一天,周日休息,至今据不完全统计投入了150+个小时。这段时间我共学习并掌握了:
- Java SE标准库编程
- 反射
- Junit单元测试
- MySQL数据库
- JDBC
- HTML
- CSS
- JavaScript
- BootStrap
- Servlet
- Filter
- Listener
- AJAX
- JSP
- Maven
- MyBatis
- Docker
- Spring基础
- Spring Boot基础
等众多知识和技能。我感到特别充实,正应了那句话,付出总会有回报。接下来我还会继续深入学习Spring框架、SpringMVC框架、Spring Boot高级、Vue、持续集成与容器管理、K8S、自动化测试等在工作中都会用到的众多高级架构和相应领域的知识。我始终相信,艺多不压身,多学习总是有好处的。
三、学习Java EE对我工作的帮助
把学习和工作结合起来,会更加促进学习的积极性。学习Java EE这段时间以来,明显对我自己的工作也产生了很大的积极作用。比如:
- 让我对开发和部署的整体流程有了体验式的认知,与大家的对话会产生更多的共鸣。
- 作为敏捷教练,Java EE及相关知识会帮我在推动自动化测试开发,持续集成和持续部署的工作方面提供极具价值的技术支撑。
- 让我更加深切体会当前团队遇到的痛点,协助我提出更加落地的解决方案。
我相信,随着学习的继续深入,它对我的工作将会继续产生积极正向的推动作用。
四、学习心得分享
和大家分享一下这一个多月我的学习心得。
- 先给自己定一个小目标
做任何事情之前,给自己设定一个目标特别重要。我的心得是除了要设定一个特别宏达的目标外,还要把大的目标拆分成更小的目标,一开始的目标越小越好,因为越小越容易达成,就越容易获得成就感,也就越容易坚持下去。比如我一开始给自己定的目标就是两周内先把Java SE基础部分拾起来。等学习玩基础部分之后,再定下一个目标,再在两周之内把Java SE的高级部分学完。我没有给自己过大的压力,就这样步步为营,一步一个脚印的坚持到了现在,并且还会继续坚持下去。
- 保持初心,不要动摇
当把目标定下来之后,一定要保持初心,不要轻言放弃,不要动摇你的决心。学习最困难的还是贵在坚持,在这个过程中,你很可能会觉得无聊,觉得学到的东西暂时用不到,觉得和我本职工作没关的内容学来就是浪费时间。每当这个时候我就告诉自己,想想初心,不用胡思乱想,多学点东西没有任何坏处,与其吾尝终日而思矣,不如须臾之所学也嘛。慢慢地,也就这么学过来了。
- 重视基本功
我在前期学Java SE的时候投入了特别大的精力,而且重点学习了面向对象中多态的思想和编程技巧,网络编程的基本方法和注意事项以及Java多线程的实现方式等。我相信越是基础知识就越要重视,因为后续的高级架构中一定都是基于基础知识来构建的。事实证明就是如此,比如在学习解耦合思想的时候,在表现层的实现类中用服务层的接口来定义对象实现解耦,就是用了多态的思想。如果你不懂基本的多态知识,就根本没有办法理解多态如何实现了解耦合。基础知识,怎么重视都不为过。
- 每天进步一点点
把学习内容分布到每一天里,不要尝试一下子都挤压到周末学。压迫式学习既不会有好的学习效果,还会影响学习士气。我会每天拿出3个左右小时的时间全身心投入到学习中,每天都进步一点点,坚持2周左右就养成习惯了。
- 打卡,让更多人鼓励自己
在整个学习过程中,我会时不时“恬不知耻”地把学习状态和成果发布到个人朋友圈中。一来是炫耀一下,让自己更有成就感J。当然更重要的是为了打卡,让多更人监督我的学习,获得更多朋友的鼓励和支持,这样我就更不好意思放弃了。如果你也正在学习,请炫耀出来,我们一起督促前行吧。
- 设定完成标准
给自己设定一个学习完成标准特别重要。就像工作中的验收标准一样,我们学习到什么程度才算是学完呢,是看一遍讲义吗,还是听完了教学视频就算完成了。每个人对自己的要求不一样。我对自己这样要求:
- 必须完成:让每节课的Java程序,在自己电脑的IDEA集成开发环境中成功运行起来。并且看懂所有的class类源文件代码和资源文件的配置项内容。
- 选择完成:听完所有教学视频。
- 最好完成:修改源文件,尝试实现自定义的某些功能点。
- 与公司实际工作结合着学
强烈建议,在学完基础知识后,请尽可能去学习公司当前正在使用的架构知识,比如Spring Boot,Vue等。一来是和实际工作找到更好的契合点,二来如果遇到什么学习问题,还能请教身边的专家们,每每从专家同事这里得到答案后,都有一种醍醐灌顶的感觉,让我对公司的开发和部署以及运维的过程有了更深入的了解,更加有助于我和团队之间开展工作。这就是一个让学习效率事半功倍的方法。
- 大胆假设,小心求证
学习其实是一个不断提出质疑与解决质疑后增长知识的过程。在学习的过程中,一定要有“大胆假设,小心求证”的思想。越是随着学习的深入,我就越是对公司中真实的工作框架和方法产生好奇感,于是脑海中就会迸发出很多大胆的假设或问题,比如:
- 合作部门提供给我们的是不是jar/war包,和相应的实现类及相应的方法。
- 在合作部门还没完成代码之前,我们这边调用的mock方法是如何实现的,是提前写了一个假的实现类吗,还是用的反射技术。
- 所谓的测试环境,UAT环境和生产环境,是不同的镜像吗,还是相同镜像下不同的容器,还是相同镜像下相同容器中不同的war包。
- 如何实现负载均衡。有多少台服务器,不同的服务器是用nginx实现的负载均衡吗。
- 不同的服务器访问的是同一个数据库吗?数据库如何备份的。
- 所谓的选择不同的环境,他们背后的逻辑是访问不同的容器服务器吗。
- 测试用的服务器和生产环境的服务器是同一台吗。
- 除了user数据库,还有哪些重要数据库。
然后我会带着这些问题去找专家们请教,各个击破,这个过程特别有成就感。
好了,以上就是我想和大家分享的学习心得,最后再送给大家几句话共勉:
- 不是因为有了希望才坚持,而是因为坚持了才有希望
- 不是因为成功了才挑战,而是因为挑战了才成功
- 只要功夫深,铁杵磨成针
让我们找到更多志同道合的小伙伴,一起学习进步吧。