2009 年 11 月 Google 首次对外公开透露 Go 的存在后,就一直有保持关注。但真正开始使用 Go 语言大规模投产是在 2011 年上半年,当时是在和我们团队的早期成员使用 Go 语言研发分布式对象存储系统。
与此同时,市面上几乎没有发现和我们一样这么大规模玩 Go 语言的个体或组织。客观地说,我们这样做的确很冒险,连 Google 官方当时也没有这么干,且 Go 语言官方正式版都尚未发布,Google 发布 Go 1.0 是在过了一年之后。记得项目启动早期,我们对于要不要使用这么一门还在萌芽生长状态的编程语言来构建线上的大规模系统,内部成员曾各抒己见略有争议。后来根据我们团队成员的经验自我剖析判断下来,确定这事可行 。原本存储系统我们做过好几遍,实际也跑过几个线上大规模运营的自研存储系统,且成员资历都是十几年的资深研发工程师(只有我个人资历最小当时还不到十年)。且早前我们在 2006 年尝试使用 C++ 开发分布式存储系统,后来又有尝试使用 Erlang 替代,直到后来我们注意到问世不久的 Go 让我们是既兴奋惊喜又相见恨晚。在被 C++ 实现并发编程框架折腾得够呛之后,又遇到天生为并发而生的 Erlang,但实际上又被 Erlang 不能满足我们预期的高性能计算而堪折;而当遇到 Go 并实际写了一些程序测试检验过之后,发现不但用 Go 编程写代码很顺溜很开心,关键在执行效率和性能上也是非一般地惊艳。一个把 C++ 的性能优势以及 Erlang 天生的并发特性相融合的产物,且语法语义上要比 C++ 或 Erlang 简约不止几个数量级的编程语言,同时还是一帮世界上顶尖大牛的巅峰之作以及 Google 的大力投入支持,还有经过我们这群爱折腾的码农呆瓜们充分的测试和检验得以确认,何乐而不为。常言道实践出真知,并不是我们盲目冒险决策用 Go,只不过是我们早在几年之前第一个吃了螃蟹且经实践检验得出了的明确的结论而已。
当初使用 Go 语言编程的时候,市面上除了官方网站公开可查阅的文档以外,可以参考的资料读物相当甚少,团队成员也是现学现用彼此交流互补。早期其实并没有诞生写书的想法,只是觉得公司团队壮大起来以后一定需要有份系统的文档手册方便新人上手学习,对我们自己来讲这本身就是一个强烈的刚需,没有任何理由不去执行。然而,后来内容越写越丰富,微博上等技术圈子里也知道七牛用 Go 且很吃香,就有出版社机构慕名前来找到我们,再后来就有了出书这回事儿。但在当时,我们只有为数不多的几个人,都是研发重活揽了一堆事情,是写代码赶工期还是出书是个很纠结的态度取向问题。在经过团队成员一致达成共识后,秉着 “技术驱动创新”,“美好的事物就该分享”,“独乐乐不如众乐乐”,“一个人走得虽快但一群人才能走得更快更稳” 等一系列等推动人类文明向前发展的各种鸡汤洗礼陶醉之后,我们自发地默同接受新增任务并开始组织团队协作完善《Go语言编程》一书,开放分享技术经验心得的同时收获反馈和喜悦,希望有更多的人和组织能够参与进来用 Go 去谱写他们的故事和美妙篇章。后来,事实也的确证明:越来越多的个人和组织以及大大小小的互联网公司都开始使用 Go 语言去承载他们的海量业务,以及听闻个别开发者终于习得 Go 心经之后实现了他们内心积压已久的技术理想。海外甚至都开始有长篇大论开始分析探讨 “Why is Golang popular in China?”,用 Google 搜索 Golang 热度最高的至今一直是中国。放到当时去看,这块大陆是有多么荒芜;今天再回过头来看,江山又是如此多娇。尽管当时白天要忙写代码晚上要忙写书最终仓促出版留下了些许审校上的遗憾,但不管怎样,那都是一段义无反悔的铿锵岁月。