曾经的 PHP 程序员,现在的 Gopher,我经历了哪些?
想和本文作者——前蚂蚁金服技术专家/Go语言 Contributor 曹大直接交流吗?
请查看文末福利哦
全文共 1771 字,阅读大约需要 6 分钟
作者 | 曹春晖(Xargin)
编辑 | 厂长
作为一个 Gopher 是幸运的,我们永远都站在了时代的最前沿。
01
我也曾经是一个 PHP 程序员,那时候几个要好的同事在一家创业公司里努力奋进,追逐着改变中国的农业 O2O 的梦,但这个梦很快就被资本打醒了。
失业的我要去找寻新的机会,作为一个技术人员,摆在面前的选择看起来有很多,但其实并不多。
几乎所有的公司都希望我的语言经验可以直接迁移,不接受我去面试 PHP 以外的岗位。所以我去了一个可以写 PHP 的地方,在公司内伺机而动,最终如愿以偿地转为了一个 Gopher。
02
我们用 Go 重构了一些公司内的老代码,让这些系统相比 PHP 更好维护,性能更高。不得不说,更换语言之后,我的幸福感急剧上升。从此我不但可以继续写那些我熟悉的业务代码,同时造起轮子来也得心应手。
比如,我可以用 Go yacc 去写一个自己的 SQL parser;可以用这个 SQL parser 做一个神奇的 sql 审校工具;也可以去业界先进的 etcd 项目里学习 raft 算法;还可以在 TiDB 里看看未来的数据库到底长什么样子;更可以去了解各种高并发场景下其它工程师的总结与思考,通过与他们思想碰撞提升自己。
社区让我接触到了国内最优秀的一批工程师,他们层出不穷的想法总是能够带给我灵感。同时随着对 Go 的深入学习,我也接触到了同样优秀的国外工程师。
可能是在 golang-nuts 上请教问题,也可能是在 reddit 上回答一些 Gopher 新手的问题,也可能是在 go 的官方 repo 向官方提 proposal,摆事实讲道理希望官方对语言的某些问题进行改进。
我终于开始觉得我日常在干的是和计算机科学沾边儿的工作,而不是工厂流水线上的螺丝钉工人。
Go 语言的设计本身就像是一个非常微型的操作系统,所以毕业了多年之后,我也重新回炉阅读了上学期间读得云里雾里的操作系统课本,买来了所有流行的讲语言垃圾回收的书(还没读完哈哈)。也读懂了很多曾经带给人心理阴影的大部头。
语言是技术人员之间的一种连接,Go 让我与业务项目以外的工程师们产生了大量的交流与联系。
有时是做中间件的,有时是做网关的,有时是做 k8s 和 etcd 的。这种连接使我的视野不囿于狭小的一隅,我开始逐渐理解技术在不同的领域怎么样产生它的价值,各个领域的人怎么样去运用这样的工具,他们的理想、抱负和抱怨。
这让我对语言的优点和缺陷也有了更深的理解,开始学会以更底层,又更全面的角度去审视一门技术。
我也开始总结自己的使用经验与方法论。说实话,只要有兴趣,也可以用几个月的时间完全调整自己的工作方向。
03
不知不觉间,这门语言已经火遍了大江南北。
即使你不知道每年一度的 GopherCon,你也应该知道声势浩大的 Gopher China,社区活动带动了工程师的激情。我从来没见过这样热闹的社区和这样热情的分享。除去个别公司的广告不谈,大部分工程师的分享都是纯粹而真挚的。每一次的分享总会有那么几个让人眼前一亮,原来项目还可以这样做!
自 2015 年以来,除了绑在 Java 战车上的公司,大部分国内的大公司的新业务几乎一边倒地选择了使用 Go 来编写。
例如:滴滴,百度,字节,高德,腾讯等等耳熟能详的公司都开始将资源倾斜至 Go 来完成他们的新业务项目。曾经在知乎上被当成反面案例的腾讯,现在在某 bu 也有了统一的框架,统一的规范和统一的 CI/CD,时光荏苒,士别三日。可以认为 Go 已经成为了各家大公司之间的通行证。
下面的图来自腾讯研发大数据报告:
尽管早期选择 Go 需要面对各种“是不是基于政治”考量的质疑,在 2021 年的当下,如果你选择使用 Go 来做项目,已经没有什么人可以质疑你了。
这门语法简单,从工程出发,设计较(防喷宝典)完善的语言的魅力在于我们可以短时间学会他,在压测中优化他,在长期使用中精通它。
传统的语言要么要面对复杂的内存安全问题,要么要面对繁复的历史包袱。其它看起来非常完善的语言,在云原生时代,则碰到了各种容器部署水土不服的问题。
即使你不是一个 Gopher,相信你也会对云原生感兴趣。在这个时代,几乎大部分的云原生基础设施都与 Go 有关系,随着时代洪流向前的我们,不去学习云原生的重要组织基因 -- Go 也是说不过去的。
当今 service mesh 和 dapr 对传统架构进行了颠覆,而这些工作中都有着 Go 的影子,可以说作为一个 Gopher 是幸运的,我们永远都站在了时代的最前沿。
路走对了,就不怕远。如果你目前还是一个只会写业务的程序员,希望你也能像我一样勇敢地打破藩篱,成为更好的自己。
END
想纵向提升你的Go语言实操能力吗
想要和世界知名Go技术专家直接交流吗
慕课网特邀2位重重重量级嘉宾,进行技术分享!
大咖群现在免费进入!
群内更有独家学习资料免费赠送哦~
(左右滑动查看)