继《Go 语言原理与实践》之后,小册姐又带来了《Go 工程实践》!这门课程是由掘金与 5 位字节跳动工程师共同出品的,它会贴合实际生产环境,在写代码、测代码、分析代码三个层面,把依赖和工程管理、代码规范、单元测试、性能分析等主题讲清楚、讲明白,帮助大家更好地开发维护 Go 项目。那么,这门课程是如何诞生的呢?让我们从一次线上事故说起……
依然记得,那是一个风和日丽、鸟语花香的上午,阳光明媚,暖风吹得我心陶醉,反正也不用打卡、刚好那天也没晨会,我们基础库团队的小伙伴们迈着懒洋洋的步伐陆陆续续地到了工位。
还没来得及好好享受下这忙中偷闲的好日子,某个上进的“好兄弟”在蓦然回首间意外地发现有几个版本的代码中竟然存在高风险 Bug。这可事关重大,我们赶紧重新分析了一下,确实有高风险 Bug(实不相瞒,当时脑海中有好多只羊驼在踩来踩去)。
本着有坑就得填的大无畏精神,我们团队想快速收敛该问题,推进业务方改造,早早将可能性“事故”扼杀在萌芽阶段,于是删除了几个有 Bug 的版本的 tag。就这样,一个公司级的升级过程既悄然而又热火朝天地展开了。
毕竟坑不是你想填就能填的,就在这时,预期外的事情发生了。公司内的很多团队都发现,即使升级了该基础库,也依然无法完成编译上线的过程,仍然会提示那几个旧版本的 tag 找不到。研究了一段时间后才发现,原来是库与库之间产生了循环依赖,必须解决循环依赖的问题才能从根本上解决这个找不到 tag 的问题。
呵呵,阳光正好,微风正好,不负美好时光,不负卿,真好!
说来话长,长话短说,各种“纠缠”后的结果就是:这次事件让一些团队的上线工作停滞了至少一天,也让我们不得不开始重视 Go 的工程管理和依赖管理(对,我们用的是 Go)。
别看我在分享我这个“踩坑事故”时云淡风轻的,多少还有点戏谑的口气,实际上那天真的让我们头秃,按下葫芦浮起瓢,吃了一个大大的教训。估计类似这样的“事故”在你我他的团队都曾经历过,或者即便没经历过,也多多少少听说过。
常在江湖混,哪能不挨棍,要想不挨棍,还得继续肝。
就拿我们使用 Go 的开发者来说,可能好多对 Go 有了一定了解,也写过一些代码,但在实际生产环境中还是经常会遇到一些问题(就如我们团队遇到的让人头秃的问题),总是处于一种一知半解的状态,解决问题全随缘(好心酸😔)。比如说:
- 不知道如何管理 Go 依赖库,遇到依赖和版本的问题经常一头雾水;
- 知道 Go 的语法却不知道如何写出正确、清晰的代码;
- 写完代码不知道应该如何正确、快速地测试;
- 写完代码运行时发现性能差,不知道如何快速排查;
- ......
究其原因,都是因为我们对 Go 工程化管理和一些实践细节掌握得还不深入。
因此,掘金与 5 位字节跳动工程师又基于此种种痛点共同出品了《Go 工程实践》视频课程(真人出镜),都是针对我们开发者关心的问题,贴合实际生产环境,在写代码、测代码、分析代码三个层面,把依赖和工程管理、代码规范、单元测试、性能分析等主题讲清楚、讲明白,帮助大家更好地开发维护 Go 项目。
最后,课程还会结合一个典型业务场景——缓存的设计与使用,为大家展示一个好的 Go 库应该如何设计。有理论、有实践,是你们想要的 Style。
上新期间可享早鸟优惠价 34.5 元( 原价 69 元) ,现在购买,即可永久解锁,很是划算, 赶紧戳下方👇🏻海报加入学习吧~
《周易》有云:“穷则变,变则通,通则久!”有问题不可怕,可怕的是从不面对和解决,只有“变”了,才能“通”和“久”。期待和你一起加入这门课程的学习之列,我们一起从理论到实战,全方位掌握 Go 工程实践要点,提前避坑,更高效、安全地进行业务实践。