最近,“润”一词火遍社交媒体,程序人生趁广大网友热烈“玩梗”之际,由CSDN副总裁邹欣采访了一位从北京“润”到芝加哥的工程师——宝玉,探究其“滋润”成长背后的秘诀。

据公开资料显示,宝玉硕士毕业于美国德保罗大学,是团购鼻祖网站Groupon资深开发工程师,前上海众游技术总监,曾参加中国移动飞信项目的核心开发,也是前微软Asp.Net最有价值技术专家。工作之余,他经常会在各个平台分享自己关于项目管理和软件工程方面的观点及看法。

下面,让我们一起走进这名优秀工程师背后精彩的程序人生吧


(资料图片仅供参考)

兴趣开启程序人生,热爱产生持续动力

邹欣:在程序人生这个节目中,我们找到很多有意思的程序员跟他们聊一聊,他们在编程、工作、生活方面碰到了很多有意思的事情。今天我们就请到了一位很有名的工程师和项目经理——宝玉,请用简单的两三句话介绍一下自己

宝玉我老家是安徽安庆的,99年的时候就读于西北工业大学,当时专业是工程力学。后来大三的时候因为兴趣原因就转到了软件工程专业,毕业之后一直在从事软件开发和开发管理相关的工作。我目前在美国,在Groupon做engineering manager,类似于国内开发经理这一职位。

邹欣:你在大学时就选择了相当于写程序,但我觉得工程力学也很了不起,一般人会觉得学力学还是很难的,为什么要去做编程呢

宝玉这是个好问题。前几天我正好在微博上看一个老师写的微博,他就说你大学毕业之后,其实很多的要依赖于你的自制力去做一些事情。对我个人来说的话,我其实自制力不算是很好的,比如说比较贪玩,所以我小时候学习成绩不太好。后来就是说我如果要继续在工程力学的话,我就需要依赖我的自制力来,然后才能取得一定的学术成就。但是我发现另外一个事情就是,我对计算机对编程真的是热爱,当热爱一件事情之后,就不需要靠自制力了。比如我有点自己的时间,我就会花一部分来写程序,就是纯爱好,不需要有人来催我、来逼我就可以写,这种 ‘热爱’ 是能让我产生这种持续的动力。

入行缘起校园网个人主页空间

邹欣:我记得06、07年的时候你用Community server,那时候就有这种开源软件。相当于接受别人的一些开源软件,然后再自己做一些后续的开发对吧?

宝玉:对,就相当于一些本地化的开发,因为它原始的代码是美国这边开源的。我之所以关注和参与这个项目,是因为我在大学的时候,学校有一个很火的BBS(网络论坛)叫Open Lab。但是在我毕业前,学校给它关掉了,关掉了我就一直觉得很遗憾很可惜,后来毕业之后我就想把它重开。

因为我本身就是学习Asp.Net的,做的工作也是这个,所以我就找这个方面的开源代码。最后找到了之后我就先给自己用,那改了之后发现自己用得很好,我顺便就把这个代码开源出来。其实那也不完全叫开源,那时候没有GitHub,就是说我提供个链接,大家可以下载这个代码地址,然后你再有一个简单的说明怎么安装,很原始的这种阶段。

邹欣:所以说你相当于大三才转去软件学院,然后通过自学自己做一些学校的BBS,就成为了一个应该叫前端,实际上应该叫全栈?

宝玉:其实转专业之前我就已经开始去学了一些编程知识。最开始就是说学校的校园网有非常丰富的个人主页空间,它提供一些个人主页空间,你可以用FTP传上去。同时它有一个二级域名或者是一个路径,你能通过这二级域名访问你的主页。我觉得很有意思,就自己学了一点,接着参加一个学校组织的比赛拿了三等奖。虽然说名次不是很好,但是它就是一个很正向的反馈,就受到鼓励了。

当时学校有很多自己的网站,它需要学生兼职去维护去应聘。因为有了这个比赛的结果,人家一看你还拿了个奖还做过,那说明你还不错,那就很顺利的就录用了。然后你最开始有个小圈子了,这帮人都是做这个事情的,你就可以跟别人学。后来就不满足于在学校里面做,就开始去外面接私活。比如社会上有些人要做一些项目,他找大学生会比较便宜一点,那么(我)就一点一点的最终走上了这条路。

曾被Bug折磨一个多月

邹欣:后来你毕业就找到了工作,然后从一个入门的工程师到后来成为经理、再到总监。在那个过程中,你有碰到过特别有意思的Bug吗?

宝玉:我去年还是前年的时候就遇到一个Bug,折磨了我一个多月。当时是一个前端应用,但是我们要在服务端渲染前端的页面,因为访问量特别大,我们有些就是用的云来监控。我去监控每一个container(容器),即每一个docker内存的使用量,监控的时候就发现某一个版本部署上去之后,内存一路往上涨就说明有内存泄漏,这个问题就很麻烦。以前我们用物理机可以连上去查,现在因为都是云端化了之后,虚拟化之后,你没办法像以前一样连到一个特定的机器上,所以你就很难在服务器上直接去定位。你通过监控这些数据的话,你没有办法直接拿到,也就是说很难对应到代码。所以前前后后花了一个月时间,最后就用了最笨的办法:把当初版本删一半留一半,采用了最简单有效的二分法,后来定位到是一个包,这个包是我们当时用的一个Preact。正常公司可能用前端流行框架是React的有一个Preact比它体积小一些,API是一样的。

发现它是因为我只要用到某一个版本,它内存就一定泄露,然后我就缩小范围。大概缩小了范围之后,我找到了一个办法:把云端的端口映射到本地。这样我就可以用Chrome Dev Tool连上去抓snapshot,最后各种方法加起来终于定位到他官方的一个泄露,因为Preact不像React这么流行,它们没有说像我们这种用户量大的,因为用户还比较少,所以这种问题出来之后不太很容易发现,最后(我)就把Bug报给它,然后就解决了。前前后后花了一个多月,特别痛苦。

邹欣:谈完Bug,我们谈些特别具体的,比如说你现在主要用的语言是什么?你主要的工作环境是什么?

宝玉:我个人现在还是会有一些开发的工作,这纯粹是爱好。因为我日常工作已经不需要我有太多的编程(工作),主要是指导为主。我以前最爱的语言是C#,后来是JavaScript,现在是TypeScript。而TypeScript其实有点介于C#和JavaScript之间,它的类型检查看起来好像是一个很简单,有时候甚至有点累赘的功能,但是在一种场景下是特别好的,那就是在重构代码的时候。

你代码写了很多了,有时候单元测试的问题在于,如果你的代码重构了之后,你很多单元测试就相当于无效了,你肯定要重新写单元测试。但是你的type是很明显的,比如说我删了一个类型,然后加了一个类型,我一一检查这个类型,我马上就知道不会出现这种低级错误,这是一个很明显的好处。另外就是说你在设计项目结构的时候也会更简洁,你的包别人用的时候,它有类型之后就不用查文档了,其实还是好处很多的。

国内外文化“对对碰”

邹欣:对比国内和国外的工作,你觉得两个国家、两种企业文化有什么不一样吗?

宝玉:我观察到很明显的一个不同的地方,第一个就是说我个人感觉我离开中国的时候,那时候加班还没有那么严重,现在据我所知就是加班这个事情是越来越严重了。在这边我真的是没有加过班,除了有时候我一件事情我可能没忙完,我自己想把它做完,那我就主动的在家可能花了点时间。只有这种情况,没有公司要求说大家要996,就没有发生过。据我所知其他公司也极少听说会有这种情况。

还有另外一个不同的就是在对于年龄和性别的歧视上面,在中国你是实实在在能感受到的,就是说国内的IT环境对女性不是那么友好。包括我有时候发现自己以前在国内做管理的时候,有时候说了一些冒犯的话,我自己现在想起来觉得很不好意思,但是当时不觉得,因为整个环境可能就是有点那样子。 但是我现在在这边,招聘大家不会看你年龄,我当时在美国找工作的时候,我已经35岁了,然后也顺利的找到一个工程师的职位,没有人说你现在多大了,没有人会问这个问题。而且我团队也有两个女性工程师,她们都是非常优秀的。

当然有些不好的事情,我觉得裁员这种事情很频繁,不管是大公司还是小公司,只要是业绩不好,裁员都是毫不讲情面。签的合同也有差别,比如我现在和公司签的合同就是属于如果我想走随时可以走,公司想开我也随时可以开。

邹欣:在国内做工程师和到国外做工程师有什么不同?

宝玉:做事的方式方法确实也是我发现的一点不同,我以前在国内做一些技术决策的时候,就是说我来决定这个ok了,其他人可能也期望你来做决定,他们更期望你你已经帮他定好,他就执行就可以了。

但是在这边的话就遇到很多障碍,很多人哪怕他觉得你是有道理的,他仍然要表达自己的观点。第二他想试探你是不是真的明白这个事情,而不是说你就是用一些名词来忽悠我的,所以这个是很有挑战的,你得不断的去说服。

再选依旧坚定计算机

邹欣:你是1999年,上个世纪上的大学,现在我们到了一个新的世纪。假设你再回到大学,你会有什么不一样的做法吗?

宝玉:有机会回去的话,我觉得有一件事情,就是前面提到的一个话题:怎么去保持你的激情、保持你对这个事情的热爱。这个事情是决定了你一生的事情,如果说我现在还在做我的力学老本行,我觉得可能是完全不一样的一个人生,不会有现在这么精彩的人生,甚至收入各方面都不会现在这么好。

我觉得最重要的一件事情,是去发现、去寻找内心觉得自己热爱,并且最理想的情况就是像我现在这样,我热爱计算机,而且这个行业也还不错。我如果再选我肯定还是会选择这一行,因为我真的喜欢、热爱这个事情,我肯定还会选这样的专业,哪怕我考不上,我也会想办法转到这个专业。

邹欣:有些同学觉得计算机好像比较乏味,找不到什么值得兴奋的地方,你会对这样的同学说什么?

宝玉:我会建议他尝试去做一点事情,用计算机去解决你生活中有问题的事情。我举个小例子,以前我老婆在国内上班的时候,她经常要去给一个网页截图,要全屏的。其实这很繁琐,因为她可能要截几张图,然后把它拼起来。后来我帮她写了个小程序,点一个键整个网页就截下来了。

这个事情其实对一个学编程的人来说,哪怕是刚学,也很容易能完成。你能帮助家人解决他们的困难,你就会发现其中的意义,然后更好地形成正反馈。我相信他如果真的去做出来一点,哪怕一点点能帮助他自己或者他身边人的事情,他一定会有不同的感受,这是我觉得可以去尝试的。

推荐内容