我大学学的是机械专业,到大四才决定要学Java,以后当一名程序员。
到现在,十几年过去了,我现在已经是一家上市公司的技术总监了,管理的技术团队有100多人。很庆幸当初了选择了学Java。
还记得当初学java的时候,一脸懵逼:
- Java 家族成员太多,学个 Java 怎么要学这么多东西?
- 那么多书,从哪本开始看起?
- 怎么学个java,还得学tomcat、mysql?
我学 Java 中对我帮助最大的三段经历
我觉得经历和学习方法对我来说,帮助非常大。
1. 遇到了好基友
说说我认识的两个同行。这两个程序员和我年龄相仿,都姓刘,为了省事,后面统称二刘吧。对我来说,如果用一个词来形容他俩,就是:良师益友。
认识二刘之前,我觉得自己水平还可以:会写 CRUD、JSP,会用 Struts,会扯几个设计模式。现在看来,顶多就是动手能力还凑合,脑子里的知识不成体系。
从认识二刘的第一天起,就被全面碾压。学校、专业的碾压就不用说了,关键是从他们嘴中我听了很多之前都没听过的名词:敏捷开发、重构、结对编程、领域模型……
说实话,当初刚接触这些的时候,我是很排斥的。举几个例子:
- 看到二刘结对编程,心想一个人干活、一个人闲着,这不是偷懒吗?
- 重构代码:程序跑的好好的,我为啥要改我的代码?有重复代码怎么了?有重构的时间,还不如再实现俩新功能。
- 单元测试:代码还写不过来,哪有时间写单元测试,再说了,不是有专门的测试吗。
- 领域模型:别和我说什么贫血不贫血,我的 JavaBean 里就只有 getter、setter。
好在二刘足够有耐心,对我不抛弃不放弃,带着我一起学习、动手。
学 Java 很辛苦,大部分人自制力差,一个人学容易偷懒。找几个好基友一起学,确实提高快。在这里要感谢一下当初二刘对我的帮助。
到现在我和二刘还是好朋友,跟他们一起学到的重构、DDD、TDD、架构模式这些思想,让我受益至今。
2. 找到了组织
这个组织就是BJUG——Beijing Java User Group。从名字就能看出来,是一群在北京工作的 Java 程序员聚在一起的一个小团体。
BJUG 是一个非常活跃的技术社区,我们都有哪些活动呢?
最主要的活动是线下技术分享,分享基本都在周六下午,一下午能分享 2-4 个主题。
现在还能百度到当时的信息,给大家贴几张图。
从这几张图上,大家能看出了,我们当时分享的都是技术干货。在冰云的热心组织下,社区弄得还可以,成为 Top 50 的 Java User Group。
除了技术分享,我们还一起翻译资料、书籍。当然还少不了一起聚餐腐败。
当时在 BJUG 里我好像没做过主题分享,因为不自信,都是充当听众,这也算一个遗憾吧。
总之,经历了二刘和 BJUG 的洗礼之后,后面几年我找工作面试的时候,不吹nb,技术面基本都是平趟。
3. 撸几万行代码
学Java之前,我的的计算机水平:QQ 熟练、红警精通。
最开始我学习靠看书,看《Java 编程思想》,也不知道是书太难了,还是翻译的太晦涩了,看书真看不懂啊,书又厚,我看了几个月愣是一遍都没看完,经常是看了后面忘了前面。
后来我干脆就把书扔一边去了,学完最基本的语法之后直接撸代码!
起初是撸简单的,撸各种常用类、常用方法的例子,这样方便以后拿起来就用。另外,撸的多了,慢慢攒出了自己的一套工具类,包括String、数组、日期、类型转换等等这些的,在三方工具类没有普及之前,这套工具类陪了我很多年。估计很多老程序员,都有一套自己积累的工具类。
后来是撸项目代码,当时找的是著名的 PetStore 项目,虽然是个示例项目,项目很小,但是麻雀虽小五脏俱全。最开始是看一行写一行,照着抄代码。抄了 n 遍之后,感觉都会了,然后自己默写,磕磕绊绊默写出来之后,根本跑不起来,一堆 bug。解决完 bug,能跑起来了,下一步就是把自己写的代码和原始代码作比较,看看差异在哪,琢磨人家为什么要那么写。
撸了一定数量代码之后,我再回过头去看书,可能以前看不懂的,突然就明白了。
撸代码对我度过小白阶段来说,非常非常重要。
我感觉学编程,就和学钢琴、游泳差不多,光看书不动手是真不行。
以上写了很多个人经历,我觉得只有亲自经历的,自己验证有效的,才好意思推荐给你们。
另外,再给大家分享一个学习技巧,就是看大厂的开发规范。
例如阿里的《Java 开发手册》,是阿里程序员们的集体智慧结晶和经验总结。新人看完可以少踩很多坑,而且可以从早期就能养成很多好的编程习惯。
就写这么多吧,看完觉得有帮助,希望你能点个赞,也算是对我码字的支持。当然了,即使不点赞,也要感谢你的阅读。