自研分布式架构 SOFA 背后的工程师 | 1024快乐-阿里云开发者社区

开发者社区> 开发与运维> 正文

自研分布式架构 SOFA 背后的工程师 | 1024快乐

简介: “整个过程可以说一路狂奔。”杨冰后来回忆整个过程。
ed0226f306ca315362c4eee31b65ddb2415a3aea

我们讲了很多分布式架构,今天我们讲讲背后的他们

创新都是被逼出来的,蚂蚁金服自研 SOFA 同样如此。SOFA 走的是一条跟传统金融行业不同的分布式架构之路。要基于不可靠的硬件系统实现金融级的性能和可靠性,要应对支付宝这样的超大规模互联网金融应用,有很多难题要解决。蚂蚁金服构建了一整套处理金融级交易的分布式架构与平台,在金融级的一致性要求和海量并发处理能力上达到了很好的平衡,并在快速容灾恢复、弹性伸缩能力、多地多活高可用保证能力和按需供给的精细化资源调度能力方面沉淀了丰富的实践经验

这十年,有很多的工程师参与,比如:

程立,花名鲁肃,蚂蚁金服 CTO。

胡喜,蚂蚁金服副总裁、副CTO。

杨冰,蚂蚁金服中间件负责人。

今天我们来讲讲他们的故事,是否也会成为你的故事?

面对极限业务场景催生极限的 IT 体系 - SOFA 的缘起


程立,花名鲁肃,摩羯座,工号3896。2004年,支付宝刚刚有自己独立的系统,基础平台还得靠外包团队提供技术支持。而2004年2月,程立还在上海交大攻读博士,一个偶然机会让他接触到阿里巴巴,并以外包架构师的身份协助支付宝网站的建设。一年合作下来,程立决定放弃博士学位,并于2005年2月正式加入支付宝。程立以严谨务实、逻辑严密,被蚂蚁技术团队的同事视作“神一样的存在”。

作为曾经的支付宝首席架构师、支付宝第一代架构设计者,以及支付宝史上最大危机——2008年1月1月停机发布17小时——的救火大队长,可以说如果说没有程立,就没有现在的支付宝。在蚂蚁金服入门手册《拾念》中,记载了支付宝史上最惊心动魄的17小时:2008年元旦,支付宝宣布要停机8小时发布“财务三期”,但各种意外接连出现,当时“财务携款潜逃”、“湿抹布导致服务器宕机”的传言满天飞、没有包裹送的快递小哥发帖跪求支付宝快点回来,程立在关键时刻敲了近两个小时的代码,最终结束了17小时的停机发布。

程立讲述了SOFA的诞生历史:最早的支付宝系统,是由还不太会大系统开发的人员实现的,像程立刚从学校出来就做支付宝第一代架构,因此第一代系统非常简单——就是一个简单的应用,装在一台应用服务器上,使用一个数据库,服务一个大客户淘宝。一个简单的系统,支撑了支付宝从2004年到2006年早期的发展。支付宝早期的系统架构虽然简单,但好处是特别快,产品经理希望怎么改、马上改一下代码就能实现了,比如说支付宝红包,从需求提出到上线就四天的时间,但是到后面,这样一个简单系统无法支撑更多的交易量,也不能支撑更加复杂的业务。

从2006年底开始酝酿,那时候支付宝面临最大的一个问题是业务变得越来越复杂,而工程师数量越来越多,原来的系统被称为monolithic——即庞大的单体系统的意思。这个系统慢慢变得无法装载更多更复杂的业务逻辑,也不能让那么多工程师在一起并行的工作。当时,支付宝希望可以成百上千个项目并行进行,而且每个工程师可以不受干扰的工作,而当业务逻辑增加的时候,系统的复杂度不要成指数级上升。

所以,在2006年的时候,支付宝技术团队要做对未来的技术架构做一个选择,当时有两派意见:一派意见是向银行老大哥学习,老大哥已经走了十几年,这条路一定是安全的;另一派意见是走一条新的路,即用分布式的架构去支撑未来的交易支付系统,而这条路在当时还没有人走过。这里的分布式架构,并不是客户端/服务器时代的面向企业级的小规模分布式架构,而是在互联网时代的超大规模分布式架构。经过差不多大概一年左右的讨论和思考之后,支付宝团队做了一个决定,要走一条过去没有人走过的路,于是启动了支付宝第二代架构的建设,即支付宝技术系统的服务化。2007年开始,支付宝启动了对交易系统、商户系统、会员系统、支付清算系统的改造。

就在那一年,支付宝到大连招聘遇到了胡喜(花名:阿玺),他之前已经在前一家公司研究SOA以及OSGi相关技术,于是就加入支付宝团队,帮助程立做下一代架构的转变。胡喜回忆,他在2007年加入支付宝团队的时候,研发人员都比较痛苦。当时的支付宝使用的是阿里巴巴的统一技术框架WebX。WebX是阿里自研发的一套基于JavaServlet API的通用Web框架,在阿里巴巴集团内部广泛使用,2010年底向社会开放源码。WebX比较偏向于前后端融合的架构,能快速搭建一个网站,但是没有考虑到业务发展到一定程度后的复杂度,怎么更好的搭建后台。例如,当时支付宝的一个电子钱包系统叫iWallet,每次系统启动就得五六分钟,开发人员出去抽根烟,回来后如果发现错误又得修改后重新启动,开发人员每天不是在代码编译的过程当中,就是重启的过程当中,一个系统包含了几十个工程,十几个团队并行开发,项目并发也导致了很多的合并冲突和耗时,整个研发效率低下导致很难进行下去。于是,从那开始就着手研究解决支付宝整个架构的变化。

程立给当时要做的这套分布式架构起了一个“SOFA”的名字,其背后有两个含义:一是按照当时的技术趋势,要做面向服务的架构,即ServiceOriented Architecture,但加入了金融业务,所以是Service Oriented Fabric Architecture;二是希望能够像沙发一样,让工程师可以非常爽地工作。所以当时出于这么简单的考虑,就开始打造SOFA。所谓SOA和服务化改造,就是把企业的IT系统以“服务”的方式重新组织起来,再通过“服务总线”连接起来形成可插拔式的企业IT架构,这个架构就是SOA。这里要注意的是,SOA其实是一套面向传统企业IT的架构思想,而且在SOA早期则只有理论框架而无具体的成功实践。

第一代的SOFA其实就解决两个问题:一是当要把系统变成分布式的时候,怎么有一个像“胶水”的机制也就是连接器,可以把分布式系统连接成一个整体;二是希望每一个服务本身是组件化,所以当时第一代SOFA里采用了OSGi(一套Java模块化规范,允许应用程序使用精炼、可重用和可协作的组件构建),这样每个工程师可以专注于各自的组件,最后又能够把这些组件拼装在一起成为“服务”,再把“服务”拼装在一起成为整个大系统。这一整套框架,就是第一代SOFA框架。

有了第一代SOFA技术架构之后,支付宝团队就开始做非常关键的业务服务改造。首先是把支付宝所有用户的核心账务系统变成一个业务服务,从而可以和其它业务组装起来。但是把账务拆出来以后,遇到一个更难的问题:怎么解决分布式服务一致性的问题,也就是分布式事务问题。而在解决这个问题的时候,当时支付宝团队冒了很大的风险,在启动这个项目的时候还并不清楚怎么解决最好,而当时可以参考的行业技术趋势就是SOA以及业界提出的几个SOA框架。

SOA业界那时候提出两个SOA事务的标准:一个是基于Atomic Transaction(原子性交易),叫WS-Atomic Transaction;另一个是基于业务流程编排的事务,叫WS-BusinessActivity;开源社区通过JBoss的TransactionServer实现了这两个参考标准下的事务。当时,支付宝的技术团队就在想,能否用JBoss开源技术与这两个标准去构建支付宝的核心交易和账务?然而,项目开始后的不久,也就三个月左右的时间,当项目进行到一半的时候,发现这两个当时业界的标准和开源实现却根本不可能支持一个实际的应用。

原因很简单,一个最简单的核心交易系统和核心账务系统,进行最简单的一个事务,也要经过十几次的消息传递,其中任何一次消息传递如果中断,那么这个事务就失败了,而且失败以后,当时业界的SOA标准并没有提出该怎么恢复失败的事务,同时任何一次交易都经过十几次的消息传递的话,也导致整性能非常低。这样一个系统如果最后发布的话,其实是不能支持支付宝当时的交易量。所以当项目进行到一半的时候,团队就放弃了业界标准及其开源实现,必须找到自己的一条路。

当年,关于分布式事务的一致性,业界另一条路径是基于两阶段事务标准(Prepare阶段与Commit阶段)和开源分布式实现XA,但当时已经知道PayPal曾经走过这条路,结果是导致系统宕机一周,最后系统全部回滚。

所以那个时候,支付宝技术团队就考虑能否自己提个标准,这样一来就简单了:首先是要解决分布式一致性问题,必须要分布式的提交协议,这个协议如果在数据库层实现,效率会非常低下,因为数据库层不懂任何的业务逻辑,只能以一种通用的方式去实现,从而导致无法对上层的业务逻辑层进行优化,所以就想到把提交协议放在服务层。

“那个时候,我们大的想法很简单,既然支付宝系统已经拆成了一个个非常小规模的服务,那么就让这个服务本身具备事务的属性,叫事务性服务。这样一个个小的事务性服务就像一个个小石头一样,可以装到一个大的杯子里,然后再设计一个分布式的提交协议,把这一个个小的事务绑定成一个大的业务事务。而这个服务也不仅是微服务,而其实是一个微交易,把每一个服务变成一个交易,再通过一个编排的框架,把每个交易变成一个大的整体服务。”程立用比较形象的语言解释了现在被称为蚂蚁金服黑科技的分布式事务XTS (eXtended Transaction Service)的由来。

有了这个思路,当时支付宝技术团队就开始去做了。克服的第一个难点是把已经有的交易服务、账务服务等,变成一个个交易型服务,这个难点当时就突破了;第二个难点是要实现一个可扩展(Scalable)的框架,去编排海量的事务,那就是XTS。大概在2008年1月份,SOFA项目就上线了,上线以后至今不断打磨,一直到现在还支撑蚂蚁金服整个的业务交易。

齐心协力不断解决问题 - SOFA 的演进

从第一代到眼下的第五代,SOFA的演进过程其实是支付宝从最早的一个大型的业务与IT交织在一起的单体系统,一边拆金融业务系统(即后来的业务中台)、一边拆底层IT系统(即后来的数据中台、计算中台)的过程,在拆分的过程中还要解决新出现的可扩展性、一致性问题等各种问题,同时不断应付每年都能击穿系统极限的双十一,还要把数据从原有系统一点一点“倒腾”到新系统里、同时管理新增的海量数据,这样一个极为复杂的过程是怎么进行的?有趣的是,这个过程的附加值之一,就是在无意中完成了去“IOE”,因为从单体系统拆分到互联网分布式系统,本身就是用PC服务器机房代替昂贵IOE设备的过程。

“整个过程可以说一路狂奔。”杨冰后来回忆整个过程。“‘萝卜’就这么几个,坑那么多,根本就填不过来的状态。每个中间件产品连‘一个萝卜一个坑’都做不到,很多‘萝卜’是放在两个三个坑里面的状态,你就想有多挑战了。其次,每一年都是翻一番的业务指标倒逼。整个团队的状态基本上是一年大促结束后,春节一过就开始密集准备下一年大促,一眨眼的功夫离双十一就没几个月了,很多系统的技术改造可能要到6、7月份准备好,再全部升级上去,业务还在不断变化,不停有新的想法冒出来,每年就是这么个状态,基本都是开发飞机就把发动机给升级上去了。

程立回忆,SOFA早期的开发是完全违背项目管理逻辑,在项目推进的过程中既有研发平台又有研发上层的业务系统,相当于把很多风险都导在一个项目里面一起做,SOFA第一代项目就是靠团队齐心协力,每天都会遇到新问题、每天都要去解决各种问题,但大家背后有必胜信念而且非常拥抱变化,敢于在项目的中后期把前期架构决定全部推翻掉,再用一套新的架构替代。“所以到2008年那次账务三期的发布,那次原定发布8个小时,后来我们发布了17个小时,说明在项目发布过程中,还是有很多问题没有解决,但最后我们硬生生把这个项目给发布下去,而且成功了,现在回想起来,其实是有一点后怕的。”程立笑说。

2008年之后,支付宝技术团队开始确定一个原则,即所有的发布不得停机,必须要确保项目发布没有风险。其次,要结束所有的研究型项目,技术研究要把技术问题解决了,再用到商业系统里面去。而且从2008年开始,每个新技术都不会首先用到最核心的系统里,而是会在相对边缘的业务系统里经过充分考验以后,再用到核心系统里。

在SOFA初期,可以看到做交易和账务这两个项目的时候,业务系统开发人员与技术平台的开发人员是不分的,无论是程立还是胡喜,都是一会儿写业务交易的代码,一会儿写下面的技术平台代码,工程师团队也没有严格区分。后来开始建立中间件团队,杨冰基本上也是那个时候加入,分配一部分人专门研究底层技术,另一部分人专门写上面的应用系统架构,慢慢开始变得越来越正规了,包括对于新技术上线过程的灰度和控制,也会做得更好。

杨冰回忆他在2009年以刚毕业的研究生身份加入支付宝团队的时候,当时服务化拆分的过程是程立、胡喜亲自参与,一边对WebX系统做服务化拆分,一边胡喜写了SOFA框架的原型,杨冰与后面加入的小伙伴就帮助不断完善SOFA。“当时我们还很初级,基本上是程立和胡喜带着我们去实现他们构想出来完整一套思想。当时虽然服务化和SOA的概念很火,但业界的实践远没有现在这么丰富,很多实现机制都是摸着石头过河。业务服务化拆分又是另外一条主线,当时主要是程立、胡喜、倪行军(花名苗人凤,支付宝第一代首席架构师,蚂蚁金服支付宝事业群总裁)参与,这几个人都是既写框架代码和组件代码,又参与业务代码拆分。当时支付宝所有的业务都在演进,支付宝架构团队一方面在业务逻辑拆分和技术架构拆分的过程中熟悉支付宝的业务,一方面在熟悉业务的基础上思考如何从中抽象出可复用的代码、数据和框架,以更好的支持未来的业务。所以当时就是一边在做业务和技术的人肉拆分,一边又把拆分的部分挪到新的框架中去承载。整个过程不是设计好了再搞,而是一边做一边搞。”

XTS框架都是在那样一个过程当中写出来的。因为在原先集中式架构是不会出现事务一致性的问题,拆分以后就出现了这样的问题。当问题出现以后,就一边拆一边解这个问题。当然,解决的时候也不是人为介入,而是构想出技术化的方案,甚至沉淀出来一套技术。那个时候,支付宝系统里的Oracle数据库还在用,小型机等高端传统设备都在用,支付宝的业务系统包括会员、交易等被拆分出来后,就直接跑在X86架构上,这不仅是物理形态和部署形态上的差异,更是由单体应用的开发模式变成SOA化的分布式开发模式,这就是从WebX到SOFA的演进过程。账务系统是最后一个从支付宝拆分下来的系统,随着账务系统的拆分成功,IOE设备也彻底从支付宝系统里下线。

在整个支付宝架构的改造以及SOFA的发展过程中,关于中间件的基本构成和思想是有业界参照的,比如消息中间件、数据中间件、事务中间件等,但SOFA技术团队要做面向超大规模互联网金融交易的分布化改造,而其中的黑科技诸如单元化,则是被业务倒逼出来,完全没有业界参考的实践,“我们找到的一些论文,一些概念,一些类似的做法,但当时支付宝的体量已经很大了,没有人确定这事儿真的能做成,而且是在金融这个高危的业务场景下”。

“套用蚂蚁金服前CEO彭蕾的话,她曾提到过大家做的很多事情就是怎么把马云的决定变成一个正确的决定,而我们在整个中间件工程实现过程中,也是类似的情况。比如SOFA3时代的合并部署,当时胡喜提出这个概念的时候,内部争论非常大,大家都觉得这件事情不靠谱,而且很难做、非常复杂,阻力非常大。最难的事情,是说服团队。但最后大家还是为能做成这件事情,并为公司节省下这多成本而感到骄傲”杨冰回忆。

为了解决新的挑战,蚂蚁金服的中间件技术团队想了各种办法。杨冰为单元化架构当中RPC调用设计的路由逻辑:对于各种业务系统,有的可以升级、有的可以改造、有的不行,那么在RPC远程服务调用时就会有五六种分支去决定到底是本地优先、还是要跨机房、还是要根据业务的分库分表做路由等等。这个逻辑极其复杂,在于既有同构机房、又有异构机房,而异构机房又要把通讯收敛到一个代理,所以又会有代理的存在,导致非常复杂。而为了收管没法升级的系统,甚至该系统的负责人都已经不在的情况,就用一个类似于Service Mesh技术代理,去“伪装”这个服务。“整个架构是很漂亮的,但是工程实现中的每一个细节都很复杂,所有的设计都充满了架构的平衡的智慧。我们在实现整个过程以后,再慢慢把完全没有必要的三四个路由逻辑去掉,变成比较规整的模式。基本是这样的过程,因为不能把支付宝停下来。”

负责过SOFA体系中消息中间件的王磊(花名:文若)回忆,阿里从2008年开始办双十一,第一年只是试一下,所以没有很大规模的宣传,甚至连内部很多人都不知道。从2009年是开始支付宝和淘宝一起参与双十一,当时宣传淘宝商城里面所有的商品都是半价,但是因为2008年时候对双十一的力量并没有清楚的认识,到2009年那一年的时候就突然出现了各种问题。王磊当时负责消息中间件,内部叫做Message Broker,属于消息队列:消息从上游应用通过消息中间件传递给下游的系统,包括当时还在使用的Oracle数据库。“当时正在看这个活动的过程,甚至我们自己也在买东西的时候,突然DBA跑过来说要赶快对消息进行限流,因为下游的数据库马上就要撑不住了,数据库的日志空间马上就要耗光了,如果耗光就会导致数据库宕机,再启动起来就是几个小时以后的事情。当时我们小组是三个人,以前从来没有快速对消息进行限流,最后就只能人工登录上游应用的服务器上,然后在服务器上敲命令做流量控制,一条一条的敲下去,最后保住了下游系统没有被冲垮。那个时候很遗憾,因为不是靠消息中间件去限流,实际上是把上游发消息的应用‘杀’死了。后来,经过这件事情以后,我们就下定决心要做一件事情,就是叫做一键限流,在中间件层面对于消息中心的一键限流能力,就是从那天开始建设的。”这样的故事还有很多。“整个过程就像打怪升级,看到一个干掉一个。”王磊的实践,代表了整个SOFA团队的工作状态,也代表了SOFA与其它互联网分布式中间件的最大不同——沉淀了支付宝/蚂蚁金服十多年来,整个业务与IT体系的最佳共享实践。


就是这样,SOFA 的演进伴随着支付宝整个架构的演进而发展,程立回忆,第一代SOFA比较简单,只是搭了一个框架和模型让系统可以运行,到后期系统运行中做了大量的优化,包括要解决通讯的性能、最高效的容灾、异地容灾架构的建设、单元化改造、LDC逻辑数据中心项目等,所有这些慢慢就沉淀在SOFA里面。而SOFA则逐渐从解决分布式服务和分布式交易的问题,变成一个真正解决金融级系统构建的基础架构问题,所以现在把SOFA改名,从原来的Service Oriented FabricArchitecture改为Scalable Open Financial Architecture:这个框架是可以真正解决金融级系统的异地多活的容灾和扩展问题,而且SOFA的可扩展能力不仅是处理更多的交易,还可容纳更多的业务,能够让几千位工程师甚至未来上万个工程师一起协同工作的可扩展架构;Open的意思是希望这个框架相对可以让业务应用非常容易使用,又能与经典架构系统有机融合,SOFA框架未来不但可以编排蚂蚁金服工程师自己写的业务逻辑,而且可以编排合作伙伴的业务逻辑,成为一个完整的编排框架;Financial则意味着SOFA必须是具备金融级属性,能真正实现金融级的一致性、可用性和稳定性。


跟上互联网迭代速度 - SOFA 的设计

SOFA从第一代发展到第五代,是一个异常复杂而庞大的过程,程立总结SOFA的研发方法论和经验时表示:在整个研发方法和流程上,蚂蚁金服相对于来说是以互联网的方式去做金融,因为蚂蚁金服本身就是一个金融系统,在要求非常严格的同时,也希望有互联网的迭代速度,在这个过程中沉淀下来的经验。


v2-2090a0f5eac96026834ee6abb66973ce_hd.j

首先,注重架构的治理。蚂蚁金服一直有一个架构师团队,既有总架构师团队,同时又把各个分域的架构师集合在一起,始终保持蚂蚁金服的架构在一张图上。蚂蚁金服架构的迭代演进也非常清晰,从一代、二代、三代、四代到现在的第五代架构,都有非常清晰的演进阶段,这是从治理层面进行顶层设计的结果。

第二,关注技术的风险。蚂蚁金服研发任何系统,要比其它互联网公司多付出可能10%的努力,去保证系统风险的可控,所以蚂蚁金服技术风险管控是嵌到流程里面、控制在整个研发生命周期里面,从而实现了非常好的控制。当然,蚂蚁金服的研发效能团队也会把控,让研发人员尽量简单、尽量智能化。

第三,系统优化是在高度分布化的前提下实现的。蚂蚁金服是比较少有的、几千人工作在一条业务流程上面,最核心支付流程从前端到后端分了很多层、每层里面有很多功能,在这个过程中能够保证非常好的分布和集成效率以及质量,就变得非常关键。所以从整个项目管理的需求、分析、分解,到每个团队去实现,最后再做高效的集成、迭代发布,有非常多经验沉淀在研发部署运维平台上。蚂蚁金服的研发部署运维平台经过多代的变化,有段时间也引进了IBM等供应商的整套方法和工具,用了两年左右时间后发现完全不适合蚂蚁金服工作方式和速度,所以转向自研的平台,并不断轻量化。但也不是外界的开源模式,因为也不适用于蚂蚁金服的情况。

第四,蚂蚁金服中间件团队的另一个共识,Design for failure,即假定在任何情况下底层都有不可靠的风险存在。对金融IT系统来说,任何的底层硬件临时故障或网络抖动都有可能被放大到资金损失或整体服务稳定性层面。对于支付宝这样体量的互联网应用,从设计之初就把高可靠、高可用、高性能的能力要转到中间件层和数据库层去保证。下面的IaaS必须要简单,就是允许底层硬件可以挂掉,挂掉以后由中间件和数据库层负责。为什么会这么做?这是由业务的容忍程度决定的,没法沉到底下的IaaS层,但也没有必要让每个写业务代码的人都自己编写一套代码,所以就沉淀到中间件层。

中间件会被所有人用到、会影响所有的系统,像蚂蚁金服现在有几千个系统和上万个微服务、几千号研发人员,怎么能使在中间件层做的每一项工作都能使整体架构都能平滑升级,而不要让业务系统受影响,怎么建立跟其他开发人员之间的连接,如何平衡效率和运维,这是中间件的挑战。

被问到SOFA 跟别的微服务平台有什么不同,杨冰举了个例子“如果有两套架构在顶层设计的时候,一套将平衡倾向了「成本最优」,一套则倾向了「风险最小」,在实现过程中就会有千百次设计决策会依据这个大原则做出「架构平衡」,到最后出来的架构会完全不同,就像 CAP 理论中的平衡一样,什么样的业务决定着会孵化出什么样的技术,技术最终还是为业务服务的。

给年轻工程师的一些建议 && 欢迎加入我们:

2018 GIAC 大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了《数字金融时代的云原生架构转型路径》和《从传统服务化走向Service Mesh》等演讲,就此机会,高可用架构社区编辑魏佳和王渊命对蚂蚁金服技术团队的杨冰和黄挺进行的访谈。

在访谈中提到工程师的职业发展,杨冰给出了自己的建议

杨冰:其实这方面的鸡汤是很多的,我就说一下多自己个人的感受,因为这个也不算我个人原创的,我是看到一些东西,结合我自己的体会。前一段时间摩拜的创始人后来套现离开了,发了一篇比较负面的文章,说你的同龄人现在在干吗什么的。后来又有了一篇比较正面的文章,我觉得分析得挺好的

第一个,年轻人在做选择的时候,要看点线面,首先选择比努力更重要,怎么选择呢?我面了很多的年轻人,大家非常看眼前的。我分享一下,一个是看微观,一个是看宏观。看宏观是说,你在选择的时候,你要把自己投在一个大面上是好的,有机会让你成为亿万富翁的或者是欣欣向荣这个方向去发展的,你行业要看得准,方向要看得准。第二个,你看线的时候,你要看这几个赛道当中有几家公司,你削尖脑袋也要前去,或者是尽量优先去考虑,而不是说随便找一个就可以了。第三个,再到点是指微观的,有可能你在面上OK,线上面不是最佳,在点上面可能要去做一些平衡。你可以在年轻的时候带着一个向前看的心,多选择到一个投资自己或者是自己能够学到更多东西的地方去,差不多就是线、面选好之后,在点上做平衡。比如说有一家公司很好,在线上明显优于另外一家公司的,但是那个团队没有特别牛的人,只是说这家公司很好,你进去可能会带着这家公司的光环,但是你学不到很好的东西。光环没有了之后,你原先可以做的事情,在你到了另外一家公司之后你是做不了的。所以你宁可去选择大方向正确,弱一点,但是那边有一个牛人或者说你能够成长的公司。我觉得这个就要看自己在宏观和微观上的平衡了。

第二个,靠谱比聪明更重要一点。我在看团队的一些人,包括养,包括发现走得快的⼀些人,都是一些站在比较高的角度或者是完成事情比较靠谱的人。改变环境其实是挺难的,如果说你可以改变自己来适应这个环境,招数不一样的话,你在哪里都可以做好。如果你觉得这个公司,这个庙已经装不下你,你自己再怎么变,这个能量已经到了天花板的话,你就换一个地方。你一定要想办法去改变自己,去为这件事情负责。

第三个,如果说年轻人的话,我们面试的时候还会比较看稳定性。虽然说刚刚讲了那么多,但是其实如果说大家无论是做业务还是什么,其实可能3年为期,很多东西一年、两年是很难有沉淀的。你一旦从一个地方换到另外一个地方,人际关系要重新建立,信任关系要重新建立,你的机会要重新去获取。你再不断重复,在新的地方去证明自己就会消耗掉很大力量,你就很难再往上全走了。所以他在深度和广度上就会出现一个瓶颈。我们会在看人的时候,如果真的是招比较有潜力或者是比较好的人才的话,不仅是看稳定度和忠诚度的问题,也是在看他是否有耐心沉淀下来在这个领域里深耕一段时间的。我个人结合一些东西,我觉得这三个点是比较重要的。


作为工程师你有什么难忘的故事么?

欢迎留言与我们分享

f9dec28616a15f2d5dc04d18e4e336db9f92f3b2

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章