我的 Java 转 Go 之路

从毕业到现在已经接近两年了,在这段时间里,我日常开发都是使用的 Java,因为大学自学的是 Java,然后毕业找到的工作也是做 Java 开发的。现在做 Go 其实也没多久,但还是想把自己的一些经历和学习经验都记录下来,要是能帮到你就更好了哦!

其实 Go 在这两年一直都挺火的,毕竟是 Google 的亲儿子,又凭借着 docker 和 k8s 这两大杀器,自身又有一些相对于其他语言的优势(例如并发处理、通道),而且近几年 Go 的工作岗位也在慢慢增加,一些大厂都逐渐使用 Go 做为开发甚至主力开发语言。去年(2020) 6 月份的时候,我可能是闲着没事干,就在网上订阅了一个 Go 语言的小专栏,然后跟着学了一些,这算是开启了自己的 Go 学习之路吧。

当然平时还是以工作为主,所以那时候学习 Go 仅仅是出于兴趣,并没有要打算转行到 Go,学习起来也没啥压迫感,挺慢的。学习的方式很简单,就是跟着专栏上的内容,照着敲代码,由于有 Java 的经验,所以基础语法知识这一块学习起来没啥压力。我认为编程其实就是熟能生巧的东西,没啥技巧可讲的,特别是对于一些初学者来说更是如此,很多不明白的东西,自己多动手敲几遍就慢慢懂了。

几个月之后,大概 2020 年 10 月份的时候吧,靠着自己在零碎时间的学习,Go 的大多数基础知识我算是掌握了,并且这期间我还在 Leetcode 上刷了一些题,使用 Java 和 Go,算是对基础知识的一个巩固。这也是一个不错的经验,当你学习一门编程语言的时候,如果想要巩固一下基础语法,那么多敲敲代码,例如刷一些 leetcode 的题目就是一个很不错的选择。我的 github 上面记录了自己刷过的一些题,建议你学习的时候,也可以参考一下,动手实现一些常用的数据结构和算法,并且刷一些 leetcode 题目,是一举两得的事情。

https://github.com/roseduan/algo-learn​github.com

在国庆节放假前夕,我在网上看到了一个简单的数据库模型的论文,内容很简单,我很快便理解了,于是我想能不能使用 Go 来实现一下,借此更加好的巩固自己的 Go 知识。事不宜迟,我便开始了,但是事情并没有我想象的那么简单,看起来容易,但是代码并不好写,完全不知道如何下手。于是我查阅了其他的资料,借鉴了其他的一些项目,到 12 月初的时候,才开始写这个项目的代码。然后整个 12 月,我都在用 Go 写这个项目,大概一个月的时间,项目最初的版本便写完了,我将它放到了 github 上:

https://github.com/roseduan/rosedb​github.com

经过这一个月的代码量,我自认为对 Go 算是入门了。这也是一个很不错的经验,那便是学习的目的在于实践,如果知识只停留在理论层面,那么你对它的理解和认识一定是模糊的,一定要去实践一下,才会发现更多的为什么,才会真正搞懂自己在理论学习阶段的很多没搞懂的东西。

如果你也正在学习 Go,并且不知道有啥好的实战项目,那么强烈建议你看一下我的这个项目,这是一个很简单的数据库,我把它命名为 rosedb(我的英文名字是 Rose),Go 的大多数知识都用到了,一定会是巩固 Go 知识的一个绝佳的素材。你可以自己先耐心的看,然后再试着自己写,或者给这个项目提交代码,完善功能。

到了 2020 年底,我有了跳槽的想法,于是开始找工作,我在我的简历上写了 Java 和 Go,投递简历的时候,Java 和 Go 的岗位都有投递。先后面了几家公司,有两家 Java 的,有两家 Go 岗位的,在面试 Go 的时候,面试官都让我介绍一下我的开源项目 rosedb,这其实说明,如果你的简历上有不错的开源项目,不管 star 数量多不多,都会是一个不错的亮点 ,因为这至少能证明你的动手能力、编程能力等等都是不错的。

现在在 B 站的工作主要是用 Go,进入到实际的项目之后,才发现其实我还是有很多不懂的东西, 比如我们项目中使用到的 gRPC 和 GORM,于是我在阅读项目代码的时候,会结合着官方文档学习一下这些技术,也会针对一些比较重点的内容,买一些书籍结合着来看,然后在实际项目中不断踩坑历练,对于一些业务相关的基础技术就能够很好的掌握了。

现在回头来看,其实当初我并没有要转语言方向的打算,只是碰巧学习了一下 Go,然后找工作的时候恰好找到了 Go 开发岗位的工作,算是误打误撞吧。这里也给看到这篇文章的小伙伴一些良心的建议,其实国内的这些互联网公司,技术总体来说还是服务于业务的,所以无论你学习的是什么技术,只要能够在业务中产生价值,让你拥有成就感,我觉得就是一件挺好的事情。关注技术热潮不是什么坏事,但是切忌心浮气躁,看着什么火就去学什么,到头来很可能什么都学不精通,最好的便是专注于某一个领域,在精力有余的情况下,学习一点自己感兴趣的东西,这也可能也会给自己的未来增加一些不确定性。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 2年前 自动加精
roseduan
讨论数量: 15

围观一下大佬

2年前 评论
roseduan (楼主) 2年前

大佬,一直在关注你开源的数据库项目

2年前 评论
roseduan (楼主) 2年前

666啊,短时间内将go学到那么好,还入职了b站 :+1: 还有一个开源数据库:flushed:

2年前 评论
roseduan (楼主) 2年前
╰ゝSakura

羡慕,我也想进B站

2年前 评论

请教一下大佬,B站现在都用Go在做什么业务的开发,关注Go有一段时间了迟迟没有下手是因为发现大部分的公司好像还是用Go在做一些中间件的开发,以及一些网关、流量控制等功能,个人还是比较倾向于做web server

2年前 评论
roseduan

@supercroft 中间层和 web 都有的

2年前 评论
supercroft 2年前

请问下是什么专栏呢,可否分享一下地址

2年前 评论

我也是打算把它变成一个职业亮点去学的,本身除了语法,其他的东西都是通用的.

2年前 评论

终身学习

2年前 评论

博主,你好,请问那个简单的数据库模型的论文的地址有没?我也想看一下,谢谢!

2年前 评论
roseduan (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!