Go 语言,又称 Golang,是一门由 Google 开发的开源编程语言。Go 语言自 2009 年推出后,因为其简单易学、性能强劲的特点,深受开发者的青睐,使用人数持续增长,还在 2016 年被评为「TIOBE 最佳语言」。在中国谈到 Go 语言,总有一个名字绕不开:Asta 谢孟军,他是 Go 语言中国首席布道师,Go 基金会主席,Gopher China 社区创始人,参与了各种 Go 开源项目的开发,文档等工作,著有开源框架 Beego 和《Go Web 编程》。除此之外,谢孟军还有另外一个身份,智能制造企业积梦智能的创始人兼 CEO。本期 WeOpen Talk 对话嘉宾:Go 语言领军人、积梦智能 CEO、腾源会导师谢孟军,以下为他的分享。我最早接触开源是在大学,以撰写文档的方式为开源项目 Flea PHP 做贡献。当时 Flea PHP 框架的技术文档都是我写的,在撰写文档的过程中,我的技术能力不断提高,文字表达能力也得到了充分的训练。对开发者来说,写技术文档或学习笔记是一种很好的锻炼。技术文档需要和他人协作共同完成,在这个过程中,会提高你的沟通能力和合作能力。而一份优秀的技术文档,需要让别人看懂,所以你要对项目有足够的了解,还要能站在新手的角度来理解技术本身。上大学时,教我们电路 PCB 版的老师说的:设计软件一定要把所有的用户都当成傻瓜。只有把用户当成什么都不知道的「傻瓜」,才能做出很多人性化的东西,才能写出易读的文档,设计出易用的软件。研究生毕业几年后,我进入了盛大创新院。当时的我正在寻找一门语言,既能弥补 PHP 的性能短板,又比 C 语言更易用,刚好看到一篇介绍 Go 语言的文章,便开始接触 Go 语言,打开了 Go 语言的大门。Go 语言正式发布于 2009 年,我使用 Go 语言是在 2010 年。当时,网络上关于 Go 语言的资料非常少,特别是在 Web 开发领域,这方面的攻略和教程几乎没有。于是我把自己的学习方法、路径和心得总结下来,写出了《Go Web 编程》这本书。从写代码到写书,是一个很大的跨越,而此前写技术文档的经验在这时发挥了作用,图书也顺利出版了。得益于市面上这类内容的稀缺,《Go Web 编程》一经出版,就受到了大家的认可。直到今天,还有很多年轻的 Go 语言开发者和我说,是通过这本书进入了 Go 语言的世界。从盛大创新院出来后,我加入了一家新加坡的电商公司,负责后端架构的设计,用 Go 语言开发基础组件,用自己开发的 Beego 框架满足业务需求。那时候 Go 语言并未普及,我还会给团队培训,教大家使用 Go 语言。此时,我在 Go 语言上已经积累了很多实战经历,也持续在为 Go 社区贡献,组织过 Gopher China 大会,在 GitHub 上 Go 领域排名很靠前,还出了一本不错的技术书籍。于是,苹果公司通过猎头找到了我,经过多轮面试和交流后,我入职苹果,成为了苹果数字供应链的架构师,负责中国区制造系统的架构设计和实施。从为开源项目撰写文档,到分享经验出版书籍,再到开发 Beego 开源框架,组织建设开源社区。开源贯穿了我的技术生涯,让我更快地成长,帮助我打开眼界,认识了更多的人,也得到更多的机会,这也是我对 GoCN 社区的期待。
起初,GoCN 只是一群 Go 语言爱好者自发组织起来的社群。当时,我们几个在上海的 Gopher(Go 语言开发者)包了一个咖啡厅,搞了一个线下 meetup,各自分享了一下自己的项目和故事,气氛非常融洽,也都很有收获。
我去了新加坡之后,也在当地遇到了一批志同道合的 Gopher,参加过好几次线下技术 meetup,其中还有一期是在新加坡 Google 总部举办的,体验也特别好,有很多思考和乐趣。当我 2015 年回国后,发现国内线下的技术交流,从质量和数量上都和国外有不少差距,于是就想组织一次 GopherChina 大会,还成功邀请了 Go 语言的三大作者之一 Robert Griesemer。就这样,GopherChina 诞生了。第一届 GopherChina 举办得非常成功,参与者的反馈很好,更多人开始知道和使用 Go 语言,Gopher 队伍迅速壮大。GoCN 社区官网、微信公众号、GopherChina 等各种线上线下的活动也都建设起来,国内的 Go 语言生态愈加繁荣。到了今天,GoCN 已发展成全球最大的 Go 语言开发者社区,每年的 GopherChina 也都成为了行业的风向标,中国 Go 语言开发者数量不断增加,占全球第一。这一切的背后,除了云原生浪潮的推动, 和 Go 语言本身的优点,在开源社区治理上有这么几点,我觉得很重要:开源生态的繁荣,需要不断有新鲜血液的加入。在我还是开源新手,初入开源社区的时候,社区里氛围非常友好,提的一些问题,都得到了非常积极和快速的反馈,一下子就融入到了开源的大家庭里,也认识了很多开源的技术大牛。所以在我成立开源项目,建立开源社区时,我也希望把这种优秀的开源治理带进来,给每一个开发者同样美好的体验。拿现在流行的 Beego 框架举例,在 Beego 诞生初期,我花了大量的时间在技术文档上,写出了我认为市面上最详细的技术文档,包括解决的痛点,案例展示等大多数技术文档没有的内容。后来大家又把它们翻译成几十种语言,保证全世界不同地区的开发者,都能快速了解项目,参与共享,最终形成了良性循环。因为我也是从开发者过来的,知道开发者最关注的,第一是优质的技术干货,然后就是更好的工作机会。我们每年的 GopherChina 大会,都会请国外的 Go Team 来和开发者们密切交流,带大家了解最新的技术动向。大会的分享内容,我也会进行严格把关,保证大家来了之后都会有所收获。在 GoCN 官网,有一个专门的「招聘」板块,有很多公司会在这里发布招聘信息,我们的微信公众号也经常免费帮公司宣传,介绍它们的公司和技术岗位,帮助开发者找到更好的工作。Gopher 能找到好工作,就会更愿意投入在 Go 语言上,不断提高自己。Gopher 的整体实力提高了,公司也会更愿意选择 Go 语言进行开发,招聘更多的 Gopher。Go 语言的生态也就在这种正向循环中繁荣起来了。
2017 年,我选择从苹果离职,成立了一家专注智能制造的公司——积梦智能。做公司和做开源有共同点,但思考的方向很不同。商业公司不仅要有优秀的开发团队,还需要招募财务、市场、管理等各方面的人才,而 CEO 也要必须在这些方面摸索和学习。成立积梦智能是我第一次创业,这其中有很多学费要交,很多坑要踩。创业让我明白,技术实力强,和做好一家公司,完全是两码事。特别是从开发者转到 CEO,面临的挑战更多,需要承担的压力也更大。程序员的时间都在解决技术问题;技术 Leader 的时间用在用技术和管理上;公司 CEO 则是把更多的时间花在了找人、找钱、找方向上。而其中最难的还是找人,找到正确的人做正确的事。如果找的人不对,就会走很多弯路。创业之前,我考虑过两个方向:一个是和 Go 语言相关;一个制造业相关。最后我选择了后者。因为我看到国内制造业还有很多可以提高的空间,这是一个更大的市场,也是一件更有挑战的事情,即使过程更痛苦,但成就感也更大。在苹果做架构师的时候,我有一个很深的体会:国外的大型企业非常重视生态的培养。像苹果,当年的诺基亚、摩托罗拉这样的公司,不仅仅要自己发展得好,还会想办法提高整个生态链上下游伙伴的能力。反观一些国内的企业,则会想办法「压榨」供应链伙伴的利润。即便没有合理的原因或分析报告,也会要求供应商降低价格,这种行为非常影响生态的健康,因为成本的下降,很多时候都会导致质量的下降,供应商就会从各种你看不到的地方把利润抠出来。公司从成立一路走到现在,已经快五年了,大多数创业公司坚持不到三年就倒闭了,而积梦智能还在继续往前走,整体发展也很好,说明数字化转型的市场很有前景,公司也确实在为行业创造价值。这其实和开源建设是一样的道理。开源软件和公司产品都需要为用户带来价值,需要吸引优秀的人才加入,需要不断创新来打造差异化,需要与合作伙伴共同成长,最终打造健康可持续的生态。作为商业公司,要抓住行业趋势,不断创新;而作为开发者,要抓住技术趋势,不断学习。对积梦智能来说,这个趋势是国内制造业数字化转型;对于 Gopher 来说,这个趋势是云原生的兴起,是开源的普及。所以,如果你想让你「恨」的人接受挑战、承受压力,那就让他去创业当 CEO;如果你要为你爱的人挑选一门更好用、更有潜力的编程语言,那就是 Go 语言。END
想要了解Go更多内容,欢迎扫描下方👇 关注 公众号,回复关键词 [实战群] ,就有机会进群和我们进行交流~