字节跳动 2-2 级别的 Go 工程师究竟有多强?
时间:2020-10-28 阅读:
16193 次

手机扫码打开
不吹不捧,也不想挑起语言争论的说,如果你是一名后端工程师,那我建议你一定要深入学习下 Go 语言。因为,在未来几年内,Go 语言的市场份额会越来越大,它的前途无可限量。第一,现在有个特别流行的词就是云原生,如果你在小公司,可能听说的比较少。但大公司内部,这东西基本已经成为口头禅了。而云原生体系的那些开源项目,大部分都是用 Go 语言编写的,比如我们熟知的 Docker、Kubernetes、Istio。别的不说,就说 Kubernetes,现在他已经成为了大型分布式系统的标配。如果你说你想掌握 Kubernetes 的原理,那连 Go 语言都看不懂,这个有点说不过吧?第二,Go 语言的优势明显。它出生高贵,背后是 Google 这样的顶级公司。另外,相比于 Java 这样的老牌语言,它不仅简单,上手快,而且在并行和异步编程几乎无痛点。像 C、C++、Java、Python 和 JavaScript 这些语言的并发和异步的编程方式控制起来就比较复杂了,并且容易出错,但 Go 语言却用非常优雅和流畅的方式解决了这个问题(Goroutine 和 Channel)。知名技术专家左耳朵耗子曾经说过,他认为 Go 语言在未来会吞食一些用 C、C++、Java 写的中间层的项目,比如息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等。这话一点都不假,你随便打开招聘网站就能看到,像阿里云、字节跳动、腾讯、百度、蚂蚁金服这样的一线互联网公司,他们都在大规模招聘有 Go 语言经验的工程师,并且薪资也不低,因为他们做的事情都很底层,比如可能是公司的基础平台、基础设施。如果你是一名 PHP,或者 .NET 工程师,那我建议你从今天开始,果断利用业务时间学习下 Go 语言,跟上时代的潮流走。如果你是一名 Java 工程师,但在 Java 的能力提升方面遇到了瓶颈,那你可以考虑下 Go 语言。因为 Go 的市场刚刚起来,人才还没有那么多,竞争也没有 Java 那样激烈。前段时间,我就和一个 CTO 聊,他说现在市场上 Go 的人特别难找,如果候选人能够有 Go 语言的项目经验,或者熟悉 Go 语言,那面试肯定是大大加分项。这其实也是错位竞争。当然,我也不害臊的给你推荐极客时间的 Go 进阶训练营,这个课程,目标是让你在 3 个月时间内,快速掌握、吃透 Go 语言。你好,我是毛剑,目前在一家大型互联网视频内容公司担任资深总监和技术专家的职位。在这里,我参与了大型巨石架构到微服务的完整转型,我们使用 Go 语言作为主要的开发语言,构建了微服务的框架,同时,围绕分布式服务的可用性和数据一致性进行了大量的设计,并结合开源生态补齐了 Go 在微服务可视化上的功能。在演进架构的同时,我们还使用 Go 语言开发了配套的中间件,比如:消息队列、缓存代理、对象存储等等。在 DevOps 领域,我们也使用 Go 语言做了大量的实践,结合 GitLab、Bazel、Kubernetes Prow 实现了完整的 CI/CD Pipeline,包括分布式增量编译、可靠的持续构建和发布系统,以及在线运行时平台(PaaS)等系统。这十多年来,我主要专注于服务端研发以及高性能、高可用的系统架构设计这些领域,对 Go 语言算得上是相当熟悉,我开源的行业内比较有影响力的 Go 项目有:goim 分布式 IM 长连接广播服务、bfs 分布式小文件存储以及 Kratos Go 微服务框架。我是忠实的 Go 语言粉丝,也是一名 Go 语言老手,我曾在 GitHub 上开源了几个基于 Go 语言的项目,如果你想了解我的技术实力,可以点进去看看,毕竟,Talk is cheap,Show you the code。我的 GitHub 主页:https://github.com/Terry-Mao作为 Go 语言的布道师,我也经常参加和 Go 有关的社区分享和演讲,包括 QCon、ArchSummit、Gopher China,GITC 等等这些业界知名的会议。作为公司的技术专家,我还负责公司的 Go 工程师招聘,所以我非常了解一线互联网公司对于 ?Go 工程师的能力要求,以及 Go 工程师在成长过程中,可能会遇到的问题。整个训练营的内容,可以分为三大模块,先是 Go 语言编程实践、再到工程实践、最后是架构实践。每个模块下面又可以分为 4 到 5 个子模块,当然,每个子模块又会细分出篇幅不等的更小的模块,总体算下来,差不多会有四五十个细分模块。我们先说第一个大模块,Go 语言编程实践,我会先从语言本身来讲 Runtime 的原理,包括 Goroutine、Channel 和 GC 等等,只有了解了这几个最关键的 Go 语言特性,才能让我们更好地开展,如:并发编程、网络编程以及异常处理等这些子模块。讲完 Go 语言本身的重点和难点之后,我们会开始讲 Go 语言的工程化实践,工程化意味着我们需要大规模落地到业务开发上,好的项目规范也更利于长期的迭代。这里面呢就包括如何设计项目结构,如何进行 API 设计和包设计,还有配置文件和单元测试等等工程化环节需要解决的重点问题。最后一个大模块,就是架构设计了,我们会讲到当前最流行的分布式架构和微服务架构,当然,也少不了相关的中间件的讲解。我们从 Go 语言实践到工程实践,最后到一个完整的大型分布式系统的实践,由浅到深,从语言到工程,从工程到架构,每个子模块我都会结合我这近 10 年的项目经验和积累来进行案例讲解,而不仅仅是单纯讲述理论知识。因为从实践中出理论,从理论践行实践,一直是我学习成长的模式。
作者:平台,鼠标移到这里,一键关注(个人微信或者微信公众号二维码)。
赞赏金额:20元
微信支付
使用微信扫描二维码完成支付