专访曾宪杰:大型网站系统与Java中间件实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

摘要:淘宝近10年来历次技术飞跃的参与者、贡献者和带领者曾宪杰做客了CSDN社区问答栏目,担任第四期的嘉宾,带您了解大型网站系统与Java中间件的实践。在活动开始之前,我们采访到了曾老师,一窥他的技术和人生。

编者按:淘宝技术部总监、淘宝技术委员会Java分会会长曾宪杰将携他的新书《大型网站系统与Java中间件实践》做客我们社区问答栏目,担任第四期的问答嘉宾,届时会接受广大网友的提问,欢迎各位网友前来与淘宝网中间件大牛曾宪杰一起碰撞思想的火花。以下为采访正文: 

淘宝技术部总监曾宪杰,他是淘宝近10年来历次技术飞跃的参与者、贡献者和带领者。 

曾宪杰,淘宝花名华黎,现任淘宝技术部总监,淘宝技术委员会JAVA分会会长。2002年毕业于浙江大学计算机系。先后在中科院下属企业、先锋电子(中国)等企业就职,是一个桌面管理系统的软件公司的联合创始人并负责总体技术工作。参与过邮政省级地市集中化生产作业系统的设计开发以及大型企业内部桌面管理安全系统的设计和开发。

2007年6月加入淘宝网平台架构团队,负责构建淘宝自主的消息中间件系统,同期主导了淘宝数据层的创建,这两个产品也是淘宝中间件中较为重要的两个。2010年下半年起开始负责整个淘宝中间件团队,帮助团队成为业内知名的Java技术团队。2012年开始从中间件走向应用系统的研发工作,2013年初负责新组建的淘宝技术部。熟悉C++和Java,在多线程、并发、网络通信及支撑大型网站的中间件领域有较多经验,对新技术有浓厚的兴趣。致力于带领团队在无线、数据、业务 平台和组件化开发方面取得突破。

他也是《OSGi原理与最佳实践》一书的作者之一和《大型网站系统与Java中间件实践》的作者。 

CSDN:请和大家介绍下你及目前所从事的工作。

曾宪杰:目前主要职责是负责淘宝技术部,在技术和管理上都会投入精力。主要的工作会看技术的发展以及新的技术如何应用在淘宝,这里包括了工程和算法相关的,此外无线也是我们重点关注的部分。然后会和团队一起完成技术部的规划以及帮助团队落地,此外是一些管理上的工作。之前负责的中间件团队,在13年4月份的时候,交给了其他Leader负责。

CSDN:能否具体介绍下淘宝网应用架构的变化历程以及架构中的自主研发部分?

曾宪杰:我是07年6月加入淘宝,当时淘宝已经是一个日成交超过1亿元的网站。网站从03年开始基本是一个LAMP架构,后面把应用从PHP迁移到了Java,数据库从Mysql迁移到了Oracle,在07年的时候,基本是一个集中式的应用,除了使用Oracle外,也有自研的搜索、缓存、分布式文件系统等基础设施。

而07年开始,主要的改造工作是围绕着应用和DB的扩展性做的,在应用方面,我们引入了服务框架,解决了应用服务化的问题;引入了消息中间件,完成了应用的解耦;引入了分布式数据层并且完成了数据变更通知以及数据迁移的系统,数据库也从Oracle换成了Mysql,完成了底层的数据库的伸缩性改造,通过这样的改造,使得我们的集中式的网站变成了一个大型的分布式系统,并且在一定程度内,在应用和数据库层面都是可以做到水平扩展的,这为业务的飞速发展以及应对高峰流量奠定了重要的基础。

上述过程中我提到的服务框架、消息中间件、分布式数据层以及支撑这三个重要系统的软负载中心、集中配置管理中心都是自研的。

CSDN:一个大型的高并发高性能网站架构需要从哪些层面去考虑?技术堆栈的选择又应该注意什么?

曾宪杰:对于大型的高并发高性能网站的架构,我觉得主要考虑的方面包括水平扩展性、稳定性、架构相关基础设施的易用性、容错性、异地数据中心支持等方面。

而技术方面的选择,如果不考虑现有技术人员的情况,那么建议选择的是有成功案例并且社区比较活跃的技术。

CSDN:其中存在的挑战是什么,架构和实现时需要避免哪些坑?

曾宪杰: 细节是魔鬼,一些架构从比较抽象的角度去看,可能比较简单,但是很大的挑战就是细节,这些细节有具体产品实现的细节,也有和业务相关的需求细节。

从我们的经验,从一个功能的构思到最终完全做好,会遇到很多的问题,另外一个方面是一致性,一致性尤其是强一致性的保障是非常具有挑战的事情,再有一个是完全的自动化,这个部分也很困难,一不留神就容易产生雪崩或者不一致等严重的问题,具体需要避免哪些坑,这个在不同的产品上会不一样。

总体来说,在实现中花掉绝大部分时间是用于思考和解决哪些很异常的情况下的实现。

CSDN:关于高负载网站打造有什么建议?

曾宪杰:现在对于很多架构师和工程师来说,水平扩展是大家都特别注意的问题,我的建议是大家也要去重视垂直的扩展,去提升单点的能力在分布式系统中其实是很重要的;另外,我个人认为,去引入前面提到的那些组件并不算很困难,但是在这之外,我们如何能很好的评估系统的真实能力、了解当前线上峰值的压力、管理好我们应用之间的依赖,以及做好系统降级的工作是很重要的,此外,就是如何做到异地多数据中心。

CSDN:你在分布式数据库中间件这方面有很深的造诣,能否分享一下你们的数据库中间件?与同类数据库中间件相比,它具有哪些特性?解决了哪些技术难点?

曾宪杰:这个只是有一定的了解和经验,不能说造诣很深。就我自己的看法,很多数据库中间件主要解决的是数据库请求的SQL解析和路由的工作,这个在淘宝来说,当然也完成了相关实现。而不太一样的是淘宝的数据访问层,解决了非对称的数据库的数据复制,这个具体指的是源数据和目标数据库系统不是同样数据库并且数据并不是镜像复制的需求,此外,我们的数据层不仅仅解决数据访问问题,也完成了数据库的平滑扩容和缩容处理。在使用方式上,集成在应用中的组件和独立部署的代理两种方式并存,而在数据源的实现上,也提供了三层的可选方式。

非常具体的内容,我是把自己的经验都写到了《大型网站系统与Java中间件实践》一书的章节中了。

CSDN:是否可以分享一下淘宝网在开源方面的使用情况和贡献?

曾宪杰:淘宝网对待开源是积极和开放的,我们自己用到了很多的开源软件,小到一些组件,大到像Hadoop等一些系统。在使用开源的同时,我们会把自己对开源系统的修改以及完成Bugfix反馈给社区,来帮助开源软件的完善和发展,此外我们也把一些自研的系统进行了开源,给到那些需要使用的技术人员,并且也从使用者那里得到了很多的帮助,不论是提出的问题还是提交的一些代码,都给我们自身的软件发展带来了帮助。

CSDN:机构在选择和使用开源技术时,你有什么建议?

曾宪杰:我个人觉得需要考虑这几个方面:

  1. 这个软件目前的功能和它的RoadMap
  2. 软件本身的架构
  3. 该软件开发的活跃度
  4. 该开源软件是否是遵守该领域内的国际规范的
  5. 在同类产品中,要挑选有比较优势的。并且要考虑可能存在的移植代价。这个移植指的是采用了这款开源软件后现有系统的移植,或者是从这个开源软件到其他软件的移植。

CSDN:你现在最关注哪方面的技术?你自己是如何学习并掌握新技术的?

曾宪杰:现在关注的技术不是特别的聚焦,工程和算法的都比较有兴趣。近期相对更加关注的是无线相关的技术以及在目前多端情况下的后端架构改进的相关的内容。

对于新技术的学习,对我来说首先还是去了解这个新技术本身希望解决的问题跟某些现有技术的相关度,新的技术很多,对我来说重点去看的是对我们现在有帮助的,所以我首先要了解新技术到底能干什么,跟我们很相关就会投入比较多经历,否则就是先了解下这个技术能干什么,自己有个印象。另外,去寻找这个新技术和自己现有知识体系的关联是比较重要的,这会让你能更快的学习并且更深的理解,此外,动手做些实践很重要,不过我个人跟之前比,这个部分做的少了很多。

CSDN:如今,你在技术管理者和程序员/技术人员两个身份之间是如何协调的?

曾宪杰:对我来说,首先是调整好自己的心态,让自己能够从内心把角色转变过来。因为现在负责的团队比较大,大概三百多个人,所以我首先会考虑自己作为一个管理者应该做什么事情。就我自己感觉,带这么大的团队的压力远远大于自己做技术,因为作为一个技术人员,自己没有做好,一些事情没看清楚,受到影响的主要是自己,而带领团队,自己会影响到整个团队,这个责任很大。

而这两个角色,我自己的感受是,作为原来一线技术人员需要去抠的细节和一些动手实践,我放到了自己的业余时间,因为我确实是对技术本身非常有兴趣的一个人,业余也没什么爱好,除了陪家人孩子也就是加班了。而工作中,其实还是有比较多的时间是花在技术上的,去了解学习新的技术,去参与团队中比较重要的技术方案,而花在管理上的时间,在技术团队并不需要特别的多。


毕业后的11年 

到7月份就毕业11年了,加入淘宝也6年了。自己一直不太是一个善于写文字的人,这次也尝试用文字回顾也记录下自己这工作的11年吧。

02年本科毕业到现在的11年,呆过四家公司。还是从刚毕业说起吧:

01年开始找工作的时候,是在911之后,我也记不清楚是不是这个时候互联网泡沫破了,反正我的感觉是和上一届师兄比,我们的工作就是一个天上一个地上,当然我们是在地上。记得师兄找工作的时 候,去应聘国内非常著名的通信企业的时候,本科生是能做研发的,而且门槛较低,而我们那一届,本科生只能做销售,而且是非洲。月薪基本跟上一年是打了五折到四折,整一个悲催啊。当时除了能进外企外,待遇最好的是西部某运营商,开出年薪10w的offer,不过要签7年。。。。

因为接触编程时间比较早,自己在编程方面的技能还行,非常不容易(当时给面试机会的工作不是非常多,我曾以为自己会比较简单的在上海找个工作)的在上海找到了一个以为很高科技的公司(当时他们说是搞Linux的)——上海时佑信息系统有限公司。做的是邮政的项目,就是在当年很流行的系统集成商。虽然我在杭州读书,那个时候我并不喜欢杭州,结果4月份去上海实习了2个多月后,就被派去北京出差,学习Uniface,然后去杭州参加和浙江邮政的项目。汗,刚离开杭州没多久就回来了。然后发现其实要做的是邮局的系统,也算是业务吧。不过我除了做一块儿业务外,更多在帮助大家解决一些比较技术的问题,比如用C去写基于FTP的客户端,解决一些诡异的技术问题等。在这里,我也第一次体会到了很多东西,比如我们没有专门的测试,记得我负责的系统第一天在一个支局上线,我就在旁边看他们操作,有问题就想办法先绕过去,然后晚上改代码就更新服务。我记得我还提出上线的时候保持新旧系统运行,我老大说,那你替他们去旧系统录入数据?我说算了。包括开始上线的时候,负责账务的同学经常晚上对账,包括第一个版本直接被业务方劈死并且说不可能按时上线但靠着我在吃粉干时的灵感愣是用较小代价完成改动并按时上线的喜悦,忙并且快乐着。在这家公司,自己也见识了小型机,也接触到了很多实战的东西,包括认识了很多好朋友,尤其当时的技术老大——玉明火,我们也在一起非常诡异的异常的地方,出现的时候弹出一个对话框,请联系玉明火,手机号137XXXXXXXX。后来一次早上,这哥们儿刚要从杭州会上海,在候车的时候接到了一线操作员的电话,他当时一头雾水。

因为经常在杭州,再加上公司内部非技术的一些事情,让我产生了换工作的想法,但是在这家公司,真正让我从一个热爱代码的学生变成了一个真正的程序员,真正的能落地到具体的项目中,结识了很多好朋友,也学到了像Uniface,Unix,DB等方面的知识。自己比较深的体会是一定要主动,没有人有义务要手把手教你,但是做技术的,你主动问还是很多人愿意帮你,你自己很主动,能够得到更多的机会和成长。对我的技术老大,印象最深的有两个场景,一个是我正式入职的时候,没过多久他跟我说,没想到你会来,我听了后心就凉了,不过也是,当时是他面试的我,从他的座位和当时的打扮,我以为是个很普通的工程师,我想这个公司一般员工都这么厉害的,后来才知道他是总工。还有一个记忆深刻的是我要离职的时候,公司老板和部门经理加上我技术老大一起谈,公司老板和部门经理想忽悠我留下,我技术老大说,你年轻,有什么想法要坚持,想干什么就干什么吧。然后我坚决辞职了。

03年的9月1号,在学生开学的时候,我去了在上海的第二家公司报道,是上海先锋商泰电子技术有限公司,是日本先锋和商泰株式会社合资的一个公司。去这家公司的原因也很简单,当时换工作的时候投了很多家,给我Offer的也不多。

在这里我做的事情跟之前的完全不同,是加入一个做车载导航器的开发环境的组,另外的组是做车载导航,那个时候,车载导航非常的贵,在欧美是要卖3000美金左右一台的。这期间我的工作基本上是用Windows API以及WTL(我们没有用MFC)去做控件,我们的IDE中的空间基本都是自己做的,没有用Windows本身提供的,主要是一些我们特殊的需求不能满足,我们又没有源码,就自己搞了。可以说在这个公司,让我在Windows GUI方面以及COM组件方面的技术有了很大的提高。我在项目组中也是最年轻的,老大也很照顾我,也给了我很多机会,也感觉到是把我当今后的重点发展对象在培养,包括后面也给我去争取去日本总部工作的机会,当时坦白说对于在一个日资企业工作包括可能去日本工作我内心是有些纠结的,后来大学同学找到我,忽悠一起创业,我就辞职了。因为04年10月中旬提了辞职,公司组织的去三亚的免费旅游我也没有好意思参加,导致到现在我都没有去过三亚。我老大还有公司的总经理找我谈话,虽然内心有些不好意思,不过还是坚定的走了。离职日期是04年11月30号。这里的考勤制度非常严格,不过公司让你加班也完全按照劳动法给钱,不过我自己更喜欢有一定弹性的环境。当然,在这里,自己对于Windows应用开发以及组件化的构建应用有了很多的提高。

离职后去了重庆,当时因为合伙人的关系,我们把公司放在了重庆,起的名字也很好记,重庆快点科技有限公司。我负责技术,当时为了节省成本,跟成都电子科大的一个老师合作,我在04年12月到了重庆后是基本一直在成都的。印象深刻的就是成都的锅魁,也不知道是不是这两个字,反正很好吃。我们项目的进展一般,开始想做基于互联网的远程技术支持服务,后来发现投入比较大,也没有很多投资,就改为做企业内部的电脑管理的系统。在05年8月的时候,因为第一个版本已经ready, 后面需要跟客户有较多的沟通,再加上也希望能够有自己的技术团队,我离开成都回到重庆,开始组建公司全职的开发团队。可以说我和朋友创业的时候,得到了其中一个合伙人的妈妈的很多后勤上的照顾,以至于我觉得那是我结婚前生活条件最好的阶段。在这段期间,我已经放弃了自己之前在技术上的自我追求,公司需要做什么,就去看什么,包括去搞Perl,BDB后来搞Mysql,ASP.net,,JS中间看了解过JSP,还有Linux下的C的开发,甚至包括在Windows下制作安装程序等。07年初的时候,自己想退出了,还是想回到上海、杭州这边。4月底自己离开了。这是进淘宝前呆的最长的公司了,当然,在这里自己在某个技术领域的积累不能算很深,不过感觉自己的综合能力和素质得到了很大的锻炼,包括跟客户的沟通,带团队,技术的快速学习和使用等,以及在面对各种困难的时候去调整自己,其实这些成长,是因为自己有机会去经历,并且也是通过一次一次的错误,得到了成长和锻炼。

离开重庆,只知道想回上海或者杭州,但是并没有目标。那个时候自己也想稍微休息休息,毕竟从工作开始,除了过年就没有怎么休息过。基本都是从上家周五走,下周一去下家报道的。


进入阿里巴巴:是淘宝技术部成就了我,还是我成就了淘宝技术部 

知道我离开后,我的一个非常好的朋友也是大学同学(韩迪,曾经淘宝的熙官)要推荐我进阿里巴巴,那个时候我也搞不清楚他推荐我去具体哪个地方。反正联系我面试的是淘宝网。后来我才知道,当时好像先推荐去阿里软件的,貌似没有合适的岗位,又把我推到淘宝的。实话说,我是很幸运的,我稀里糊涂的就混进了淘宝网的技术部,那个时候淘宝的技术名气不大,也缺人,加上推荐我的人把我介绍的很好(用徐庶推荐诸葛亮的原话),然后考虑浙大计算机毕业的,估计烂不到哪去,我就进来了。说自己混进来的是因为发现自己08年去面试的时候的问题和标准,问07年的自己的时候自己铁挂的。现在回想起来,真的感谢把我卖进淘宝拿了钱只请我吃了个渝香隆的兄弟,也感谢当时的三位面试官给了我机会(行癫、丁典、三丰,其中行癫先后两次是我直接老板,丁典也做过我一段时间老板,三丰是我老板的老板)。如果当时没进入淘宝,我也不知道我这六年会去走什么样的路。

我07年加入淘宝的title是C++工程师,当时淘宝网技术部写C/C++的加上我就三个人,C/C++当时的需求也不大,我做了一个小功能后行癫就让我转Java,要知道我之前是非常b4 java的,不过看到这边大家都搞Java,就学呗,那个时候为了让我练手,给了一个现有功能的改造的任务,就是把当时淘宝店铺里面,商品分类只能是一层的改为两层结构,以及把一个商品只能归属一个分类改为支持多个。那个时候在试用期,我还是挺担心自己能不能顺利搞定任务转正的。。。

顺利转正后,就参与当时淘宝从集中式应用改造的工作,我那个时候被安排去研究消息中间件,也是从这个时候(大概07年9月)开始了自己的Java中间件之路,基本上07年底到08年中,就是在负责消息中间件的设计和实现,那段日子是单纯的快乐。淘宝的消息中间件也是我这辈子第一个自己完成的Java产品,以至于当时我的老板(07年底老板换菲青了)知道我之前没怎么搞过Java就直接负责这么重要的产品(如果挂了,淘宝的交易都会出问题)的时候还是挺紧张的,从上线后没有出现大的问题的时候他的神情我可以感觉到他一块儿石头落地了。其实我当时并不喜欢搞消息中间件,我想做存储,不过我这个人就是替老板分忧的命(以至于12年到今年初的团队名字叫综合业务平台,啥都能整整),看到没有合适的人能做,我就继续做了,然后下半年的时候,菲青找到我说,要搞分布式数据层,又是个我完全不懂的东西,我问没有比我合适的人来做了么?菲青说没有,我说那好吧。从08年底到09年初,基本重心就在搞数据层,然后搞出点雏形后,菲青说,你搞同城容灾吧。我勒个去,我说不是有张三么?菲青说你在淘宝时间久,人和系统熟悉,你来搞吧,好吧,那就搞吧。同城容灾确实不是个简单的活,应用间的依赖梳理,以及依赖的单Active集群的切换,可以用一些技术手段去解决,不过要去做整体容灾测试等,还是非常复杂和麻烦的。09年我只是用技术解决了一些切换上的问题,整体的容灾还是在11、12年的时候,在技术保障部的努力下达成的。在09年,也和同事毕玄同学一起写了一本书,然后我才知道,原来我们技术人员还是有机会写书出书的,而且是自己不用出钱的。

转眼到了10年,菲青把一个内部的Web框架让我牵头去搞,我已经习惯了自己去横向发展了。到了10年9、10月份的样子,自己的职责又改变了。毕玄同学也把他负责的服务框架、容器团队给了我,组成了淘宝的Java中间件团队。到了11年,我从原来的架构组带着团队到了淘宝的产品技术部,在11年中调整的时候,产品技术部的另外一个偏技术的小组和和中间件融合成了一个团队,也就是目前的中间件和稳定性平台。

在11年中的时候,自己就开始对业务开发比较有兴趣,也在寻找机会去接触这块儿,这可能是在淘宝以来,自己特别主动的去寻求的变化,12年春节后,在中间件之外,也开始带领业务开发团队,自己也在业务理解和业务架构方面有了一定的成长和提高。

到了今年,在3月中旬的时候,自己是彻底告别了Java中间件的生涯,负责新成立的淘宝技术部。回首在淘宝的六年,感受最深的就是幸运,幸运自己加入了这样的集体,幸运遇自己每个老板都对自己这么好,给与自己很大的帮助,也幸运自己一直能够和这么优秀的人合作,让自己得到更快的成长。

我的成功除了运气,更多的是努力以及主动性 

除了运气,自己感受比较多的还是努力以及主动性,以及想清楚自己要走的路并且为之去准备和奋斗,很多事情,自己如果看的相对远一些,那么对眼下的选择会更容易做出判断。那份能够让你愿意为之奋斗的事情,比地域、当下的待遇等等要重要很多。而对自身来说,准备了不一定有机会,但是不准备则一定没有机会,能够充实的过好每一天很重要,尤其在单身的时候,尽量的忙起来吧。

最后也想说说现在负责的团队,新的淘宝技术部负责目前淘宝事业群(阿里集团好多事业群中的一个)的应用开发的工作,今年团队会在Web组件化、应用平台化、多终端以及数据化方面去做技术上的突破。具体业务方面负责淘宝前台业务、互动业务、营销业务、CRM、数字出版、视频的工作。需要在无线、数据挖掘、自然语言处理、图像处理、业务架构等方面的资深人才,有兴趣的同学可以邮件联系我,期待一起共同创造更加不一样的淘宝。(采访末尾有曾宪杰的联系方式。)

曾宪杰        

写于2013年6月初



给将要实习和毕业的同学-第一份工作的选择 

现在已经快6月份了,寻找暑期实习工作的同学,应该都有了自己的Offer或者多个Offer了。而对于明年就要离开校园的同学,现在选择实习单位,很大程度上是选择毕业后要加入的公司了。我想,有不少同学,尤其比较出色的同学,在选择的时候会有些困惑和纠结。我想说说我的看法。

我下面谈到的部分,主要是针对研发工程师的,也许对于别的岗位也能有所参考。

同学们要选择自己毕业后的第一家公司,会考虑比较多的因素,从我个人来说,想到的几个主要的因素是:

  1. 地域
  2. 薪资
  3. 行业
  4. 职位
  5. 公司

对于上面的因素,每个同学的排序是不同的,权重也不会相同。对于每个人的选择,我觉得没有对与错,只是每个人会有每个人的看法。

那么,在如何选择之前,首先需要自己对自己做一个评估。并且,也要考虑一下自己的目标。

对自己做评估,做到非常准确,也很困难。但是我们还是要去想几个事情:

  1. 你喜欢什么?
  2. 你现在能够做到什么,具备怎样的知识和经验?
  3. 你有怎样的特质和潜质?

兴趣点很重要,做自己有兴趣的事情,你不会觉得辛苦、更不会觉得痛苦,而是乐在其中,工作不比学校中做些课程实验,想想自己到底喜欢什么。

而你能够做到什么、具备怎样的知识和经验,更多的是对你目前的技能的评估,看看你能够目前胜任怎样的工作。

而自己的特质和潜质,是你成长的推进剂,也是在你所掌握的知识和经验外的非常重要的东东。

想清楚这三块儿,对你的选择会有帮助。而且对于还在找工作的同学,也很有帮助。你要归纳下这三个部分,简历上、面试中让你的面试官知道这些,并且你要给他具体的案例的支撑。

在毕业的时候,想清楚自己比较长期的目标,是非常困难的一件事情。不过,不能因为困难,就不去考虑。还是要想想,自己希望自己3到5年后,成为怎样的一个人?能够做到怎样的一个程度?目标引领我们前进的方向,即便在过程中,我们会调整目标,但这不妨碍我们先确立自己的目标。有了目标,我们的行动就不再盲目。

看到这里,同学们先好好评估下自己,然后想想自己的目标吧。


我的建议:要考虑个人的发展和水平提升,而薪资和发展无关,地域关系也不太大 

那么,下面我想说说我个人的建议。请注意,下面仅仅代表我个人观点。

我看到很多同学在选择的时候,会非常看重地域和待遇这两个因素。其实这个真的是不正确的(我知道,这么说很多同学是听不进去的)。我觉得如果你想长期的做这一行,那么更重要的是要考虑如何能够让自己得到发展和提高。而薪资和发展无关,地域关系也不太大。

先说薪资,我觉得对于刚毕业的学生,千万不要因为A比B一个月高了1K、2K的,就不去考虑A和B哪里更合适自己。如果A和B对自己的发展差不多,选个薪资高的肯定没问题。但是如果把薪资凌驾在发展之上,将来你比你没去的那家公司要更加的后悔。也有同学说,薪资体现了公司对你的看重,那我想说,这个比较不是拿A和B提供的薪资比,而是要分别在A和B的内部横向对比。你才知道你是不是被看重。另外,被公司看重和自己发展的快和好,未必是成正比的。我这里举个例子。

A很重视你,给你很大的空间,让你自己发挥,重点培养你;B没那么“重视”你,给你安排很“常规”的发展计划。最后的结果,一定是在A更好么?这个未必的。对于刚毕业的同学,我知道会有非常厉害的人,不过这个比例注定不会很大。对于大部分同学,甚至也包括非常优秀的同学,你需要的是一个好的环境,而不是所谓的被重视。为什么对于B,我的重视和常规加了引号呢?其实,除了政府企业外,我觉得没有哪个企业是不重视人才的。一般来说,同样一个人,在A被很重视,在B感觉一般,那么背后的现实是,B比A的实力要更加强,人员的水平更高。这就是一个简单的鸡头凤尾的问题。而不要说对于刚毕业的同学了,包括有工作经验的人,环境都非常的重要,不是有那么句话么,一滴水到了一杯奶中,水就变成了奶,一滴奶到了一杯水中,奶就变成了水。好的环境,给你提供了更快成长的平台。好的平台会给你系统的培训;会给你一个周围很多牛人的团队;会给你很多机会,可能你觉得在团队里不是最优秀的,但是如果你能认真的工作一段时间,在出去跟其他同龄人比比,那你就知道结果了。

所以,我想说的是,不要对薪资的看重超过了个人发展。去对你发展有利的环境,用3-5年作为周期,你自己的发展不但更好,总的收入也不会差。而对你来说,更重要的财富是你自己的能力。

再说地域,很多人一定要去上海、要去北京、要去哪里哪里。这个地域的选择,和薪资是类似的道理,还是个人发展更加的重要。可能有同学说,北京的IT环境更好。这个没错,问题是,这个环境对于你在不同的时间,帮助是不同的。对于刚毕业的同学,内部环境对你的帮助,是要远远超过外部的环境的。IT环境更好,我能想到的就是交流方便和跳槽方便。对于刚毕业的同学,第二个就别先考虑了,而交流这个部分,对于刚毕业的同学,内部的信息和一些基础的知识,就够你学一壶的了。

说到这里,其实总结来说,告诉大家的就是要考虑你的Offer中,哪个对个人的发展是最有利的。我提到的几个因素中,行业、职位、公司,这个需要综合考虑。在同样行业、同样职位中,选择公司就很重要了。比如,在互联网行业,都是研发的岗位,那么会有很多公司可以选择。个人的发展,跟公司的发展是密切相关的,你肯定要选择目前发展比较快的公司,这里机会更多,这与大小无关。另外,你要看下公司提供怎样的平台给你而不仅仅是让你觉得被重视、给你空间。对于咱们绝大部分同学来说,你们更加需要的还是一个帮助你成长的平台,而不是仅仅给你的是空间,让你折腾。

这个平台,应该会提供给你机会成长,而不是总是原地踏步做重复的事情; 
这个平台,应该会有很多学习的机会给你,不仅仅是培训,还有在实战从学习的机会,还有牛人的指导; 
这个平台,能够让你接触前沿的技术、已经做到或者有机会做到业内领先、能够有最大的挑战。

总结来说,同学们千万不要把地域和薪资放到最重要的部分,而是先挑选对你发展有利的公司,然后再比较地域和薪资。而说到如何去挑选对你发展有利的公司,那么主要是要有自己的目标以及对于可以选择公司的了解。通过师兄师姐、朋友同学、互联网,多去了解目标公司,最后做选择。同学们,对于你们大部分人来说,毕业后更加需要的是一个能够比较系统的帮助你成长的公司,3-5年后,你羽翼渐丰后,每个人会有不同的路和选择。但是刚毕业的时候,还是需要有个好的环境,让自己能够快速成长。刚毕业甚至没有毕业的时候,能够自己去翻江倒海的,不管去创业还是去独挡一面的,是很少数的人。所以,大部分同学,还是要去一个有好的平台和环境的公司。

同学们,看到这里,希望前面的内容能够对你们有所帮助,也欢迎同学们跟我交流。

曾宪杰的联系方式:

Email: huali@taobao.com

Sina微博: @曾宪杰_华黎

Twitter: @vanadies10


目录
相关文章
|
6天前
|
运维 Java
Java版HIS系统 云HIS系统 云HIS源码 结构简洁、代码规范易阅读
云HIS系统分为两个大的系统,一个是基层卫生健康云综合管理系统,另一个是基层卫生健康云业务系统。基层卫生健康云综合管理系统由运营商、开发商和监管机构使用,用来进行运营管理、运维管理和综合监管。基层卫生健康云业务系统由基层医院使用,用来支撑医院各类业务运转。
30 5
|
1天前
|
数据采集 存储 Java
高德地图爬虫实践:Java多线程并发处理策略
高德地图爬虫实践:Java多线程并发处理策略
|
2天前
|
IDE Java 开发工具
Java从入门到精通:1.3.1实践编程巩固基础知识
Java从入门到精通:1.3.1实践编程巩固基础知识
|
6天前
|
JavaScript Java 测试技术
基于Java的电影评论系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的电影评论系统的设计与实现(源码+lw+部署文档+讲解等)
21 0
|
7天前
|
JavaScript Java 测试技术
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
19 1
|
7天前
|
JavaScript Java 测试技术
基于Java的社区人员管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的社区人员管理系统的设计与实现(源码+lw+部署文档+讲解等)
26 2
|
7天前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
32 3
|
7天前
|
JavaScript Java 测试技术
基于Java的图书馆智能选座系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的图书馆智能选座系统的设计与实现(源码+lw+部署文档+讲解等)
29 2
|
8月前
|
NoSQL Java Redis
阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因:
|
8月前
|
算法 NoSQL Java
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)