10
头图
但行好事,莫问前程。

今天我们采访的嘉宾是 @江南一点雨。他本是管理学专业,戏剧性地接触 Java 之后便一发而不可收。他在 Java 开发的道路上一路勤勉奋发,不仅出版的技术书籍一路畅销,他的开源项目也获得了超过 26k 的 Star,付出终有回报。他没有太多业余爱好,生活似乎比较“枯燥”,最开心的事情就是专研技术。本期我们很荣幸地邀请到了他,让我们一起听听他的精彩故事和心路历程吧。

Q:向大家简单的介绍一下自己吧~

我目前是一个 Java 工程师。我大学学的是管理学,属于经管学院,大二开始自学 Java,毕业的时候是 2015 年,那会安卓还是比较火的,所以一开始先做了两年的安卓开发,后面才转到 Java 这个坑上面来。到今天为止,算上之前的安卓开发经验,差不多也有 8 年左右的开发经验了。目前我出版过两本技术图书,一本是《Spring Boot + Vue 全栈开发实战》,还有一本是《深入浅出 Spring Security》。第一本书比较大众一些,目前来说算是企业级应用开发相当主流的一个技术栈,按照一般出版社这种类型的图书的销售情况来看,算是一本比较畅销的书了。第二本书比较小众,销量一般些。

Q:你学的是管理学,为何会转行做 Java 开发呢?

现在回头看的话,很多事情也是充满了戏剧性。我大学刚入学是属于经管学院,大一的时候我去听过中文课,准备大二再修一个中文的双学位,这是最开始的计划。大二有校公选课,当时没选上我想选的课程,甚至一开始我都没挤进学校选课的系统,等我进到系统的时候,就只剩下一些大家都不想选的课程了。其中有一门课程就是《Java 语言程序设计》,没办法,我就选了这个。

上这门课的老师比较幽默风趣,不仅给我们讲 Java 的知识,而且还讲了 Java 的前途。当时安卓刚刚兴起,可以用 Java 来开发。听老师讲了之后,我就感觉 Java 语言比较有意思,而且将来的前景也很好,所以就又从中文转到 Java 了。就这样阴差阳错的学了Java,老师讲得确实不错,然后就也喜欢上了这门语言。大学的时间还是比较充裕的,有很多时间去搞自己喜欢的事情,基本上我的时间都花在了 Java 上面。从第一次接触 Java 到现在算的话,差不多有 11 年了。

其实在 Java 之前我还接触过 C,但是学 C 的时候就没有什么兴趣,C 比较枯燥,很多东西要自己写,Java 的话可以非常快速地做一些自己想要的简单的小系统,确实很有意思,有一种成就感。毕业找工作的时候是通过校招,当时其实也没有说必须要做哪个方向,比如做安卓开发或者是 Java 或者是前端。当时拿的 Offer 里有安卓的,也有 Java 的,但是当时安卓比较火一些,就选了安卓。刚开始做了两年的安卓开发,后来就转到 Java 上面来。

Q:目前主要的工作内容是什么?主要使用哪些技术?

目前的话还是做 Java 开发,企业级项目接触的多一些,技术栈的话,主要还是 Spring Boot、Spring Cloud,还有中间件、微服务、云原生也会涉及的多一些。

其实中途有一些做管理的机会,但是我个人感觉自己还是更适合做技术,我在管理岗位上差不多干了两年,然后自己主动辞掉了。可能随着年龄增长,以后的看法会发生变化,但是目前还是觉得技术更适合我。这个其实跟个人的性格有很大的关系,关键是自己做得开心。

Q:工作至今有哪些变化和成长?

主要是两方面,一个是技术上的提升。我从大二开始确定要学 Java 之后,到大四毕业差不多有三年的时间都花在这个事情上面,但是工作之后技术上的提升会更快一些。对于工作中需要用到的技术点,如果完全依赖工作本身去提升的话,可能会比较慢。当然也跟你做的项目有关。如果是做互联网项目,一般来说可能会有高并发,用户量也会比较大,会接触到很多比较前沿的技术。但如果是做企业级应用的话,它强调一个稳定,就是技术要非常成熟,这个是重点,而且企业级项目一般来说业务比较复杂,但是并发用户量不会特别大,这种情况下技术上的成长可能就会相对慢一些。

所以如果是做这种企业级项目的话,就需要自己主动去学习了。我一般是看文档,再一个就是看书。我习惯于系统的学习,比如说我会确定一个学习方向,就像我平时写博客,基本上也都是按照专题来写,不会一段时间写 MySQL 的,一段时间写 Spring 的,或者一段时间写 Spring Boot 的,我会把一个点全部写完,再考虑下一个。系统地掌握一套技术以后,在工作中如果遇到类似的问题,就不会眉毛胡子一把抓,比如去网上搜解决办法,搜到哪个就是哪个,也不知道原因,虽然确实解决了问题,但其实很难进步。只有把整个体系从头到尾捋清楚了之后,再遇到问题,可能自己思考一下就能解决,就不需要借助这些搜索引擎了。我也是毕业那年才开始写博客的,现在再翻看以前写的博客,还能感觉到当时的那种稚嫩。从博客就能感受到自己技术的一个成长过程。

还有一个是性格上的变化。其实我性格还是比较内向的,一开始我没太意识到这可能会给我以后的工作带来一些问题。后来参加校招面试的时候,有一个公司,差不多有四五轮面试,已经面到最后一轮了,是一个群面,把所有的岗位放在一起面。当时也是有一点点自卑,因为到最后一面跟我一起面试的很多是西交大的学生,而且他们都穿的正装,我穿了件卫衣,看起来就很随意。跟我一起进场的人,有面技术的,有面销售什么的,面销售的那些同学就特别的能说,我当时就有点胆怯了,群面就表现得比较差,最后一面就挂了。这个公司也算是一个挺不错的公司,因为比较内向,错失了一个比较好的机会。然后我就觉得性格上后面需要多多锻炼了,工作之后就自己努力克服,现在就好很多,讲课或者参加技术沙龙,相对来说就比较顺手了,不像以前那样。这个就需要自己逼着自己去说,不然的话就很难进步了。

Q:最近最大的感悟是什么?未来有什么规划或者目标?

近期不管是网上还是自己身边,裁员的消息还是比较多的。我就在想,如果这个事情真落到我身上,我还是有一点自信可以不用担心这个问题,因为我一直保持着学习的状态,哪怕再找工作肯定也没问题的。我也认识很多做技术的人,下班之后就约一群人去打麻将,或者去打游戏等等,完全不再去学习。对于我们技术人来说,我一直认为还是要保持一个学习的心态,还有一个学习的状态,不断地去更新自己的技术栈,不管外部环境怎样变化,是不需要担心所谓的 35 岁危机的。选择做技术的话,保持一个学习状态也算是一个比较基本的要求,不能保持一个学习的状态,不仅是停滞不前,而是不进则退。

短期计划就是打算先把 Spring 源码搞完,有机会的话后面可能会再出一本 Spring 源码相关的书,更远的目标暂时没有了,没想那么多。

Q:目前你已经写了近 500 篇技术博客,为什么会坚持做这件事?

首先说写博客的契机,就是校招的时候,我发现不少面试官会问,诶有没有写过博客?我那时候是没有写的,我当时就意识到这个问题,然后拿到 Offer 之后回到学校就开始写,应该是 2015 年 4 月 15 号发了第一篇。我想这个可能跟我一开始想学中文有关,因为写博客也是一种表达,也算是以另一种方式致敬最初的梦想。

当时坚持写了小半年,差不多 10 月份左右,有人通过博客给我发了私信,一个公司的技术总监,想让我去他们公司做安卓开发,薪水翻倍,跟我刚毕业的薪水相比诱惑力还是挺大的,而且我当时才毕业五个月而已。从这个时候我意识到写博客可以带给我很多机会,不仅仅是在记录技术,也能给我的职业生涯带来很大的帮助,所以就坚定了写下去的决心。再后来积累的文章越来越多,收获也越多。出版社的编辑基本上就是通过博客找到我来约稿,也因为写得多了,就有一点点小名气,参加一些技术活动,扩展自己的眼界,认识了很多同行,提升了见识,整体来说收获还是蛮大的。

我还是倾向于系统的分享。工作中遇到的问题我可能会写得少一些,因为工作中有的东西不是特别方便写,所以我就自己搞,系统性地写这些技术栈,会更好一些。

有的时候我觉得我的生活其实挺枯燥的,下班之后基本上还是搞这些东西,也没有其他爱好,就周末可能出去玩一下。有的小伙伴可能会比较喜欢打游戏,但是我感觉有点浪费生命。不过这种事情怎么说呢,自己开心就可以了。你让我去打游戏,我觉得挺枯燥,你要让别人来写博客,肯定也觉得挺枯燥的。对我来说,写博客会比较充实,也会有一些安全感。因为不写的话,好像就跟这个社会要脱节了一样,写的话就会感觉今天的技术生活很充实,又掌握了新的东西。

Q:写《Spring Boot + Vue 全栈开发实战》这本书的过程是怎样的?有哪些挑战?

这本书是 2018 年写的,2019 年 1 月份出版的。这也是特别巧的一个事情。当时刚好做了一个 Spring Boot + Vue 相关的项目,有一些心得,就在想要把这个记录下来,刚好在那个时间点,清华社的老师找到我,然后就有了这本书。在那之前其实也有编辑找到我,在那之后也有,但是就不是很巧。在我刚好想写的时候,那个编辑找过来,这个事情就成了。

我觉得最大的挑战可能就是时间的安排。技术研究对于搞技术的人来说应该不是什么大的问题,写作的话因为经常写博客也不是什么特别大的问题,最大的挑战其实是时间。因为我还要正常上班,有的时候可能还要加班,所以时间比较紧张。当时差不多小半年的时间没有周末,基本上早上 6 点半就起来,收拾好之后就开始写到 8 点半,然后去公司上班,晚上下班回来之后差不多搞到 11 点多。写书的话不是说就一直在那写,还需要去梳理思路,把案例整理好,然后才是写,所以整体下来比较费时间。周末的话就跟正常上班一样,就不停地写。差不多小半年的时间,交稿的时候长舒了一口气,确实是挺辛苦的一个事情。

内容上,一方面就是自己的工作经验,另一方面会参考官方的文档,大概梳理一下有哪些章节,但是主要还是结合自己的工作内容,因为工作中的经验对于其他小伙伴来说可能更有帮助一些。官方文档讲究的是大而全,所有的点都有,但是可能就没有突出重点。所以参考文档,不要把技术点落下,再结合自己的工作经验,详细介绍那些需要重点讲的东西。

前面说校招面试的时候,说到其实我有点自卑,所以总是希望能够向别人证明自己,写书的话就是这样一个证明的渠道。最早刚开始写博客没多久,其实就有出版社编辑找我,但当时才刚毕业,我的技术还不足以支撑写一本书所需要的技术储备,所以当时拒绝了,但是也让我知道,只要写博客这个事情坚持下去,写书的话就是迟早的事情。所以我觉得坚持写出来就是一个很开心的事情了。

Q:你的开源项目「微人事」目前 Star 数已超 26k+,可以介绍一下这个项目吗?

这个项目是我在 2017 年年底的时候写的,也是好多故事。当时公司快要倒闭了,9 月份的时候工资就已经发不出了,开始裁人。但是还有一些善后工作需要做,这个事情落到我头上,我就没有立马被裁,但是留下来其实又没有很多工作要做,从 9 月一直到过年之前就比较闲,我想着找点事情做,后来就用比较流行的两个技术栈, Spring Boot + Vue 做两个开源项目,一个是 VBlog,另外一个是 vhr。VBlog 相对来说简单一些,vhr 它是个脚手架,用了 Spring Boot + Vue + Spring Security,以及 MySQL 这些技术。

现在看 Spring Boot + Vue 应该算是非常主流,非常成熟的技术栈了,不管是在 GitHub 还是 Gitee 上都能看到很多相关的开源项目。但是在 2017 年那会,其实这个技术栈开源的项目是非常少的,有 Spring Boot 的脚手架,也有 Vue 的脚手架,但是把两个结合在一起的非常少,所以我也算是比较早吃螃蟹的人了。当时也算是一个巧合。我想做一个开源项目,想用 Spring Boot 做,但是没有网页,不好展示给用户。看了前端主流的几个框架之后,我发现 Vue 可能比较适合 Java 开发者上手,因为它的技术门槛比较低,对于后端工程师来说可以花比较少的时间就能够上手。所以后来就用了 Spring Boot + Vue,我也没想到后来会这么火。

比较大的一个收获,特别是现在回想起来 2017 年的情景,就是,在一个比较浮躁的环境中,要沉下心来做自己的事情,最终就会有所收获。2017 年底的时候,其实也是有好多公司倒闭,好多公司业务困难,身边也有不少裁员,或者一些大的互联网公司在收缩业务的,我记得当时也有不少小伙伴被裁掉,也是有一种互联网寒冬的感觉。我们裁员之后有的人可能会选择提前回家过年,要么就是自己先玩一下,年后再找工作,因为已经九月十月,大家也不急着当年再找工作了。我因为刚好留下来善后,反而就没那么着急,每天就一门心思扑在我这个项目上面。我上下班都骑自行车,骑着车我就在想,诶,今天写的这个功能哪里还可以再完善一下?明天我写一个什么样的功能,让它更有特色一些?那段时间其实过得特别充实,比上班还充实,完全沉浸在自己的兴趣里边,每天就想着这个项目要怎么完善,那时候也根本没有想到这个项目会有这么多人关注。

现在再去回顾那一段时间,我的感受就是,无论什么时候,坚持做自己认为对的事情,不浪费时间,认真去做对提升自己有益的事情,特别像今年这样的就业环境,更应该沉下心来这样去做。等到 2018 年,慢慢这个项目有这么多人关注,还带来很多收获,甚至一些物质上的奖励等等,这在 2017 年做这个项目的时候肯定是想不到的。应了一句“鸡汤”就是,但行好事,莫问前程。

Q:对刚入行犹豫选择前端还是后端的新人,你有哪些建议?

首先,前端跟后端是两个不一样的发展路径,当然我说的是大部分情况,不是绝对的。一般来说大部分项目经理还是后端出身的多一些,前端可能更侧重于跟用户的交互,提升用户体验,我觉得这是前端的工作重点。所以前端接触到的业务相对来说会少一些,后端就比较多。业务接触得多就可以顺理成章的做项目经理,或者是更上一层楼,所以如果将来的职业规划希望往管理方向上去走,那我觉得可能还是做后端会好一些。如果更侧重于提升用户体验,跟用户去交互,做一个比较炫的页面,那也可以选择前端。当然这只是一个大致的方向,也不是绝对的,因为也有一些前端出身的项目经理,但是相对来说还是比较少一些的。有的同学可能会觉得,前端 Node.js 也可以写业务,但是这并没有形成主流。所以从更现实的角度出发,如果将来想走管理路线,那我还是建议做后端。

从难度上来说,不管是前端还是后端,我觉得是差不多的,不会相差太大。我是以后端为主,后端其实要学的东西比较多。除了微服务,数据库各种各样的中间件都要掌握。前端以前可能就是跟用户交互,现在也流行起前端工程化,不再像以前画画图就完事了,也有很多逻辑需要去写,我觉得当下的前端跟服务端的很多东西还是蛮像的。前端发展非常快,很多东西一年两年可能就会有很大的变化。后端很多东西已经特别成熟,光是一个版本更新,功能更新就不会有特别大的变化了。前端可能更需要不停地学习。我以前做安卓的时候就是这样,就是自己折腾一下,诶,今天搞个这种效果,明天搞个那种效果,做服务端就没有这种烦恼了,就写业务就好了。

Q:如果可以重新选择,是否还会选择这个行业?

会。虽然网上大家都说互联网的时代已经过去,计算机就是下一个土木,但是相对于其他行业来说,互联网这个行业的薪水还是比较高的。对于农村出身的孩子来说,如果你想在城市里安身立命,我觉得就只有互联网这个行业能帮你实现,其他的行业感觉有点悬。以前在学校的时候,老师就说这个行业都是一群特别聪明的人,大家在做改变世界的事情。刚毕业的时候确实也真是这样想的,现在工作时间久了虽然这种充满理想主义的想法不是很强烈了,但是也确实还是觉得这个行业比较有意思的。可以自己去做一些小系统什么的,有的可能是为了工作,有的可能是解决生活中的一些问题,都会比较有成就感。

Q:在社区最大的收获是什么?

相比于其他的一些社区来说,思否可能起步晚一些,没有很多技术包袱,很多功能做得很不错。我还经常会看首页下面那个版本号,诶,什么时候又发了一个新版?基本上差不多每周都会有新的版本出来。在这个平台里边,一方面可以开阔眼界,技术也不是闭门造车,我们需要交流思想碰撞。一方面在思否也获取到很多机会,图书出版的机会,一些工作的机会这种。

小编有话说:

@江南一点雨 说,企业级开发通常不会涉及到特别复杂的技术栈,所以很多人可能会停止学习,用已有的知识去应付工作中遇到的问题,到 35 岁危机的时候就会比较被动。他坦言,自己并不担心这个问题,“只要我们一直保持学习的态度和状态,不断去精进自己的技术”,就不用担心会被淘汰或者落伍。他用他的亲身经历和体会向我们表明了,功不唐捐,坚持去做一件事,终将会有所回报。


《思否有约》记录你与编程的故事。欢迎小伙伴们加入访谈,共同分享成长之路,扫描二维码报名吧~


SegmentFault思否
14.3k 声望167.1k 粉丝

SegmentFault 社区管理媛 - 思否小姐姐