专访酷壳陈皓:有关带队、沟通、成长与变化

原创
开发 项目管理
看过酷壳这个网站的朋友们应该对我们今天采访的故事主角不陌生,他就是酷壳的董事会主席兼CEO兼COO兼前端工程师兼开发人员兼美工兼主编的陈皓(@左耳朵耗子)。身为亚马逊中国的研发经理,他目前的工作是什么样的?他的成长过程中都有怎样的故事?

【51CTO专访】刚刚在深圳结束的ArchSummit大会上,近千名工程师们以“架构师”之名聚集在一起,讨论着有关架构师的种种。程序员的世界就好像一个武林,人们来自不同的师承,不同的派别,而无师自通、跨门派的修行者也不在少数。而当你去一一接触他们,了解他们的时候,会发现每个人都有自己独特的故事。

看过酷壳这个网站的朋友们应该对我们今天故事的主角不陌生。他在酷壳上这样介绍自己

“我不是高手,我也不是牛人,我只是在跟随着我的兴趣和喜好去学习一些技术。”

[[91315]]

陈皓(@左耳朵耗子),14年软件开发相关工作经验,8年以上项目和团队管理经验,6年的软件行业咨询经验。擅长底层技术架构,团队建设,软件工程,软件研发咨询,以及全球软件团队协作管理。对高性能,高可用性,分布式,高并发,以及大规模数据处理系统有一些经验和心得。喜欢关注底层技术平台和互联网行业应用。技术擅长C/C++ / Java和Unix / Linux / Windows。现于Amazon中国任研发经理,负责电子商务全球化业务(全球开店)的研发。

上面的简介是他自己写的。当然,陈皓不会在个人简介中提到自己每天晚上从10点阅读到12点,再更新酷壳到凌晨2点这种事情,而这些细节,对于学习中的人们而言其实很关键。

51CTO开发频道最近在筹备一个有关架构师成长的专题,一方面这是很多对自己职业成长方向不确定的开发者们都很关注的话题,另一方面也是为了我们在10月底的云计算架构师峰会做铺垫(陈皓也是我们会议上的分享嘉宾之一)。因此,我们会去接触很多架构师,去了解他们的经验,以及对架构师的看法。

不过,我觉得更重要的是去了解一种思路,一种观察、学习的方法,而这些都隐藏在他们的故事当中——

那些有关成长的故事。

以下是51CTO本次对陈皓的采访内容实录。

51CTO:您的个人简介我想就不用说了,先谈谈您现在的职责吧。

陈皓:要说介绍的话,就说我是酷壳的董事会主席、CEO、COO、前端工程师、开发人员、美工、主编这些(笑)。

我现在在亚马逊,这边主要的职责,第一个就是带着团队做软件开发项目,另外一个是制定团队的计划,来年的计划。然后还负责一些招聘工作。基本上就这几大块。

51CTO:这边团队主要是一个支持类的,还是一个产品类的?

陈皓:就是一个研发,带着大家去做技术选型、技术架构设计,等等这些东西。

很多技术经理更多的是做计划、管人,但是我不一样,我喜欢技术,所以我更偏的做技术一些。

我在亚马逊做第三方商户全球开店的项目,目前在做的业务是demand forecasting,亚马逊内部的库存需求预测,就是下个月我要卖多少东西,做机器学习。团队里面全都是SDE(软件开发工程师)。也不分什么工。我们都是每个人负责一个功能,然后从头做到尾。从需求分析,设计,编码,测试,到运维,全部做。

51CTO:那最初产品定义是您来制定?

陈皓:产品定义我们有一个product manager,或是Technical Project Manager,用户的需求会到他们这里汇总,然后他们会和研发团队讨论需求应该怎么实现,优先级是什么,怎么简化需求,等等。对于库存预测系统,公司内的采购经理就是我们的客户,这个东西怎么操作会比较好,预测的准不准,他可以进行哪些调整,等等。对于第三方商户的全球开店业务,由Product Manager 去调查第三方商户的需求和现有的运营情况,然后给研发团队提需求。

有时候技术团队也要去见客户,但主要是内部的客户,去问他一些东西,怎么做,做成这样行不行。

51CTO:团队人员搭配是怎样的?

陈皓:团队里面基本上是这样:有一个人非常懂底层,C/C++出身的,对操作系统的底层非常熟,喜欢看代码专研底层;还有一个人是J2EE、Java出身,对Java的架构和各种框架如Spring,Struts这些都很熟;还有一个人对面向对象和软件设计这些比较熟悉。还有人对软件的前端设计比较熟,做过Web Portal的设计;还有人对机器学习的算法和方法非常熟;还有一个人也倾向于底层,但是稍微倾向于网络这边。这些人,每个人都有一块自己非常强的东西,所以他们合作起来也会很舒服,因为他们可以从别人身上学东西,而且自己也能领着别人去做点东西。每个人都有自己的领导力,每个人都有自己的成长空间。我觉得这是让团队比较和谐的原因。

另外,我只是一个支持性的角色,团队主导一切,我只是在旁边支持他们。

51CTO:他们愿意去学习自己不了解的领域。

陈皓:对。没有英雄。也没有闲人。每个人都有自己的长处,在这个长处上他可以领着别人做事情,同时也能从别人身上学到自己比较薄弱的东西。

51CTO:那运维和研发没有明显的划分了?

陈皓:没有,都要做。亚马逊就是这样的,SDE,Software Developer Engineer,被戏称为Someone Do Everything,就是这个意思。

51CTO:那研发和产品之间呢?

陈皓:对于电子商务这边,研发和产品之间还是有明显的界限。因为亚马逊有线下业务,有些业务上的东西,技术人员基本不懂。比如一些法律,关税,物流这些东西,商业上怎么卖会更赚钱,各种玩法,这些东西技术人员并不懂。所以有很明显的划分。有时候,产品经理看到一些机会,会让我们来帮他做一个小工具上线试验一下,等等。当然,产品经理给我们讲为什么他要这么做,原因是什么。

51CTO:那跟他们是怎样做沟通的?

陈皓:一般就是研发经理跟他们沟通,也就是和是项目经理或产品经理沟通。不过我们沟通的时候跟别的地方不一样,不是说产品让我们做什么我们就做什么。我必须要让产品告诉我,你做这个能挣多少钱,为什么要做这个东西,做这个的利益是什么,有什么好处。你说不清楚,我们就不做。

我们团队做计划的时候会有两栏,每个任务都会有两栏。一栏由产品经理填,就是商业影响力有多大。比如我们用T恤的尺寸:T-shirt size estimation,来标注这个东西做出来的影响力。他需要标出来是small,medium,large,还是extra large,还是XXL。然后我这边就会标注我这边需要花多大的力气去做这件事情,我的efforts要花多少,也是标注成T恤的尺寸。然后就要看,哦,这个东西的影响力是XXL,但是我技术投入是small,一个月之内就能完成,那就做呗。那么这个东西马上就得做。如果说这个东西业务影响力是medium,但是我的efforts是XXL,那我们可能就不做了。得不偿失,做它干嘛。所以这就是跟他们的沟通。

另外,亚马逊内部很多技术团队每年的年度计划都会包括几项,比如,必需减少20%以上的维护工作,所以,这会逼着你要还技术债,把能自动化的自动化了……

51CTO:很有意思。那么接下来,来谈谈架构师。您对于架构师是如何定义的?他的能力,以及职责。

陈皓:我觉得架构师就是程序员的一种。因为做程序员必然要做设计,做设计就必然存在架构。所以你写软件就必须要做架构,你要去考虑平台上会有些什么问题,以后怎么扩展,你要去想这些事。但是架构师的能力要比一般程序员高,他还要对业务的理解有深度。T型人才,技术的深度和广度要都覆盖。他要明白哪些事情能干,哪些事情不能干,干了会出现什么问题。

至于技能方面,架构师要去写代码,能够做原型,等等很多方面。职责就是能够发现、能够提出未来可能会遇到的麻烦,然后通过麻烦去想解决的办法。有些架构师总是在一些不存在的问题上去做方案。

51CTO:这里有一个问题就是,架构师有的是程序员出身,有的是运维,有的是DBA。您觉得他们之间有什么区别?

陈皓:我觉得架构师应该都要知道。他的基础应该是多元的,一个T型人才。好比说DBA,虽然我不知道那个数据库怎么配的,但是我大概知道数据库系统的原理是什么,一般会有什么样的功能。他应该要阅读一些这方面的文档,他要知道事务处理,他要知道数据库表是怎么做的,索引建的是什么样的,数据库的模型应该是什么样的,哪些字段能冗余哪些字段不能,必须要满足很强的数据库设计范式。这些都是他必须要知道的。

有些时候我们需要一个架构师去做一个统管,因为下面的实施团队太多了。就像我要盖一栋大楼一样,我有非常多的工程团队,那么我需要一个架构师把蓝图画出来。

51CTO:需要一个从上到下的布局。

陈皓:是的。然后他要督促每个团队,保证这个架构是实现正确的。但是他也不应该是站在上面看,画图纸的人。他画完图纸之后应该要到每个工程现场去,要回到基层,要去编码,去做一些实际的事情。我想,从每个工程团队抽调几个高级工程师来做整体架构设计应该会比建立一个纯粹意义上的架构师要好得多。

51CTO:好的。那么接下来的问题有关您的个人成长。您感觉自己职业生涯当中有没有发展特别飞快的一段时间?

陈皓:这是个大话题。哪段时间我的个人成长最快?我入行头两年是在银行,云南工行。两年以后我去了上海,在上海我过了苦闷的两年。

51CTO:苦闷的两年?

陈皓:是的。就是觉得自己太差了,被人看不起。觉得自己这也弄不好,那也弄不好,而且跟这个社会差距特别大。甚至还有人羞辱我,说我这个那个没做好。还记得第一次面试的时候,到上海,就是低着头面,从头到尾都没有看面试官一眼。他问什么我都是不知道不知道……但是,那段时间是我成长最快的时候。因为那个时候,我知道自己什么也不懂,就会去学习,看书。有时候会去不停地面试,面试的时候别人问的问题你不懂,不懂你就知道自己需要学什么。所以那个时候我学的特别多,找到了一条学习的方法。现在我觉得我自己的学习能力比较强,就是受益于那个时候,学猛了。学的多了就找到了一条方法,一条最适合自己的方法。所以也就不害怕新的技术了。

首先是不害怕新的技术了。然后我知道该怎么去学习基础。一点一点的,从原理上去学。然后,再到了找工作的时候,就不害怕没工作了,因为面试后来就很容易就通过了。就是这样,我觉得这段时间是我成长最快的。

但是真正正儿八经质的提升,还是需要你有了这些基础知识,通过这些面试你只是有了块敲门砖,可以进到一些好的公司里面去,参与一些好的项目。眼界很重要。

51CTO:所以您觉得做好的项目,跟好的人一起共事……

陈皓:非常重要。非常重要。但是,你不能说我没有这些资源的时候我就可以什么也不懂,这就会变成这种情况:你什么也不懂,别人为啥要给你这个机会,为啥这些人会跟你一起做事。就是这样。你首先得改变自己。

还可以再补充一些。一开始别人怎么羞辱我的就不说了,基本上就是那时候别人面试完,他就跟我说,说你出来干嘛?就这个水平,你在银行里面老老实实待着就行了。“你根本就不行。”就这种感觉。然后去做项目的时候,犯了一些低级错误,还给用户造成了损失。还有很多这样的事情。就是因为有这样的一些很糟糕的经历,所以我那时候学习其实不是为别的,就是想证明自己不比别人差,自己能够学好。因为那时候从银行里出来,家里人就会觉得你出来干嘛,很多人都反对。然后前面的这些人又说,你这水平还出来,所以那时候就搞得巨难受。退也退不回去,进也找不到路,就像是爬在悬崖边上的感觉,爬在悬崖中间,上也上不去,掉下去肯定是摔死。所以只能咬着牙,学习下去。就这样,纯属意外。

51CTO:这,真的是想象不到……您这样厉害的人,也有这样的一段故事。

陈皓:比较励志是吧(笑)。

51CTO:也是给后来者们很大的信心啊。那么最后一个问题,您觉得软件行业这两年的变化大么?

陈皓:我觉得还是挺大的。这两年,尤其在互联网上面,还有风险投资,出来了Instagram这样很少的人做出来的很大的服务。互联网跟十年前的那个泡沫不一样了。还有苹果,移动互联网。目前的变化非常大,不像那个时候,我们做软件的时候,就那点东西,那么个框架,没什么好想的。现在的方向就太多了,而且发展太快。变化真的非常大。

51CTO:那么,现在做一个软件开发者是否更加困难了?

陈皓:我觉得倒不是。做一个软件开发者更简单了。因为现在互联网很发达,你可以找到很多共享的知识——相对于我那个时候。第一,知识你容易查到,然后社区很多,文章、分享的人也越来越多。我们那个时候没有的。上网一查,什么都没有。都得去自己琢磨,自己去调查。所以我觉得相比我们那个时候更容易了。第二,工具变多了。现在的工具比那个时候好用多了。我们那个时候就是一天到晚在vi里面,连个自动提示都没有,连个版本库管理都没有。不光工具变多,框架也多了,各种各样的编程框架。我们那时候都是生写。写JavaScript,生写,连个jQuery都没有。没有这些辅助性的、让你提高生产力的东西。J2EE那时候也没有。而且整个(开发环境)都很不成熟。一个服务器的最高配置就1GB的情况下,一个WebSphere起来就占了900多MB——这还能跑什么应用?所以只能去用最基础的系统。所以我觉得现在,无论是环境,还是开发的过程,都更规范了。以前我们做开发的时候就是,什么都不懂就上了,瞎搞,没有什么开发规范,没有人理你,反正你搞得好就搞好,搞不好就搞不好了。全靠自己,包括做测试。我觉得现在的软件开发就是,你一上去,就有好的工具,有好的知识库,有好的社区,有好的开发框架,还有好的流程,方法,甚至还有人帮你做测试,还有人告诉你应该怎么做。很幸福。现在好多人还说这个不好那个不好,开发难什么的。其实容易多了。

但是,有个东西我觉得是现在的软件开发者比我们那时候变得更难的。就是,你享福了以后,你就变懒了。对很多东西的抱怨就开始多了。我们那个时候哪有什么好抱怨的?没啥好抱怨的。干呗。有东西学就赶快学呗。现在呢,学个什么东西还挑挑拣拣的。这就好像以前我没东西吃,只有个糠吃,要是有面包有馒头,我就觉得非常非常好了。现在是,好吃的东西多了我们还学会挑食了,抱怨Java太烂,C太烂,C++太烂,或者说这个框架太差了,不好用什么的。

51CTO:嗯,这是一个心态上的转变。

陈皓:是的。程序员变娇气了。所以这个变难,其实是程序员们自己变娇气了(笑)。

51CTO:好的,那么这次问题就到这里结束。十分感谢陈皓老师接受我们的采访!

责任编辑:yangsai 来源: 51CTO.com
相关推荐

2013-07-25 10:28:46

加班工作效率职场

2014-06-12 08:53:01

团队团队效率

2011-08-29 09:19:25

c语言

2012-07-16 01:20:09

代码效率

2012-06-21 09:43:45

2012-02-02 10:35:12

C++

2012-09-04 09:14:08

2012云计算架构师峰

2011-12-20 10:41:36

程序员

2012-09-03 13:51:43

测试软件测试单元测试

2014-02-24 10:45:00

2012-04-27 10:24:07

2012-07-25 10:16:59

2012-10-25 17:56:43

陈皓云计算架构师大会

2014-04-15 10:13:01

2012-08-02 09:36:58

fork面试题

2012-01-16 09:58:26

2012-10-15 16:13:29

2012年度IT博客大陈皓

2013-01-09 13:55:43

2021-12-22 10:49:42

架构运维技术

2014-07-29 11:35:34

点赞
收藏

51CTO技术栈公众号