你好,我是小小酥,今天在这里我想给你介绍一下我从PHPER转为GOPHER的经历,以及如果你是一名PHPER的话,为什么我建议你也成为一名GOPHER。
说来我初识golang也是在机缘巧合下,2017年当时我所在的公司在资本的撮合下收购了一个创业公司的项目,这其中就包含了整个项目源代码。商业收购完成以后,公司领导在一个月黑风高的晚上拉着我和几个同事说公司会成立分公司去发展这个项目,技术和产品人员需要从现在公司里调度,也讲了这其中有很多的挑战和机遇,这包括大家对这个项目的未知性,项目迅猛增长的业务量以及目前拿到的源代码都是golang实现的,要求我们以最快的速度熟悉起来并要在一个月内重写为php的版本才能保证投入更多的资源继续迭代(别笑,就是这样要求的),领导承诺项目完成以后会有丰厚的项目奖金,还有机会升职加薪,我的GOPHER之旅也就从这一刻开始了~ 新手上路
收到消息的第二天,我就和几个小伙伴被关到小黑屋闭关了,我们协商了一下磨刀不误砍柴工,因此决定先各自把go的语法弄懂,这样保证至少能把项目的代码先看明白然后再说翻译到php的事。于是我打开了某度,在键盘上敲下了“golang教程”几个字符,一篇来自go语言中文网名为“golang教程”的链接显示在了屏幕上(这里特别鸣谢go语言中文网,为国内golang社区的发展有功不可没的贡献),文章篇幅不长,里面介绍了如何安装go环境和go的关键词与基本语法,大致花了俩小时的时间我就把整篇教程看明白了,当时我一度以为自己有学习golang的天赋,所以午饭的时候和几个小伙伴炫耀让他们有不明白的直接问我就好了的时候才发现原来大家都已经学的七七八八了,现在想来倒不是我真的有天赋,而是golang极简的设计哲学保证了大家都能很快的上手go语言。
学完了基础语法,当天下午我们就开始了阅读项目源码的工作,事情变得没有最开始想的那么困难了,接着花了一周我们就把整个项目的源码看明白并划分出了模块。
那么最后就是将golang翻译到php的工作了,作为拥有多年经验的phper,这件事就很简单了,所以最终我们完美完成了这个最初看似艰巨的项目(也顺利的获得了项目奖金)
其实故事讲到这里,你会发现虽然我成功完成了一个将golang项目翻译为php项目的工作,实际上我还并没有在项目中提交过一行golang的代码。但是由于在翻译的过程中随着对golang的深入,我也发现了其中很多的亮点,因此项目结束后并没有停止对golang的学习反而花了更多的时间去研究,这期间在应用层上完成了对gin,grpc,go-micro使用的学习,也对go的调度模型,内存分配,垃圾回收等底层机制做了一定的研究,同时对一些开源项目做了一定程度上的拜读这其中包含codis,go-mysql等。
时间来到了2018年底,因为公司业务的迅速发展,团队需要一款能自动监听mysql变化的旁路工具(在这之前我们的解决方案都是通过业务上的异步消息投递来实现相关的),经过领导和高层的调研,决定由公司架构部自研一套中间件供业务团队使用。我想这是个实战golang的机会呀,虽然我在业务团队但是也给领导提出了想接下这个任务的想法,他说只要我出一份技术方案他能审核通过就让我来负责,我这一年多的偷偷学习当然不是白费的,所以还算顺利的拿出了一份技术方案(未来我会出一个专题来详细讲解这个中间件的架构和实现逻辑),最终我花了两个多月的时间成功的完成了这个项目 (大致功能是能监听mysql的变更,然后根据用户的配置将变更的数据按照配置自动投递到需要执行的脚本上或者kafka里由用户自行订阅,实际上我当时只是实现了整个项目的业务功能,并没有过多的去考虑高可用,数据持久化,订阅幂等性等问题,这些是后续又和架构部的同事一起迭代了好几个版本去完成的,目前这个中间件也是用在了公司超过20个的业务项目里),这算是我线上第一个golang项目。
2019年底,出于对个人职业规划(升职涨薪)的考虑,我选择离开了前东家,来到了现在的公司,因为现在公司的业务本身也是由php写的,但是公司想技术转型到golang,所以我的职位由PHP工程师变为了GOLANG工程师任团队Leader岗,负责公司技术的转型和人员的培养,薪资涨幅超过了50%,2020年至今,我参与了公司内将php单体架构拆分到golang微服务项目的工作,营销中台的搭建工作,以及通过每周一次的培训,我将团队内多名PHPER都逐步培养成为了能独当一面的GOPHER。
好了,讲了我是怎么从一名PHPER转变为GOPHER的故事,最后我想说说为什么越来越多的人开始学GO,以及如果你是一名PHPER为什么我也建议你学GO。
作为一名打工人,我发现现在越来越多之前用php的公司逐步完成了技术的转型,所以市场上每年php的岗位也是越来越少,同比golang的岗位反而越来越多。而薪资上,相信你如果有在招聘网站上对比过,也会发现同年限工作经验要求的岗位,golang的薪资会比php高出20-50%
那么作为一名招聘者,我会发现近两年市场上优秀的PHPER是一年比一年难招,这就导致了公司招不到合适的人,但是业务迭代又很迅速,需要大量的人才,所以不得已想办法在内部开始做技术语言的转型。
所以从市场上来看,因为golang的工资比php高,所以越来越多的phper转为了gopher,导致公司越来越难招到优秀的phper不得已做技术转型,所以市场上php的机会也就越来越少。
最后期望你能关注我的公众号,我将结合我自己这些年从phper转为gopher的经历,以及结合这这两年对公司内部phper培训总结的经验,通过理论结合实践以最贴合phper思维的方式让你一步一步的了解 整体的目标如下:
-
看懂go的程序-学会基础语法
-
写一套web应用-学会gin框架的使用
-
写一套自己的web框架-深入了解gin框架的实现逻辑
-
搭建一套完整微服务工程-学会kratos的使用
在整体目标的推动中,我也会推出一系列go组合拳相关的内容其中包含了go的调度模型,各个数据结构的底层实现,内存分配,垃圾回收等,助力你更深层次的理解go语言。