专访 | 阿里前辈李智慧:转行做技术,我的20年架构之路!

引言

就程序员而言,日后的职业发展可以走3个方向:专攻技术深度、转团队管理、晋升架构师。

我相信成为一名优秀的架构师,是大多数技术人的追求。但资深架构师的出现几率仅约为0.3%,如果想在3-5年后稳坐金字塔尖,除了扎实的代码功底和项目积累,如何有意识地培养技术广度和架构思维能力,是你当下应该付出更多精力的。习惯了架构思维,你可以从更高的层次、更高的角度去思考你现在做的事情,做出更正确的决定。

北城码农邀请到前阿里技术专家李智慧老师聊聊他的架构师成长经历和思考。

如果你有以下三个疑问,建议花5分钟通读。

1.什么样的人适合做架构师?转行的人有戏吗?

2.架构思维在工作中有什么作用?懂架构是不是就万事大吉了?

3.架构的核心思想都有哪些?

嘉宾介绍

李智慧,曾任阿里巴巴技术专家,Intel大数据架构师,拥有20多年编程与架构经验;设计开发过阿里巴巴的分布式存储系统Doris、阿里巴巴印度站、基于Hadoop的大数据仓库Panthera等;参与过Apache Spark的开源开发,对Spark架构代码进行过多处优化。有5项分布式系统发明专利;是畅销技术书《大型网站技术架构:核心原理与案例分析》的作者,该书被若干高校选为计算机类专业教材;更是各大技术峰会的常邀嘉宾。


以下为专访内容整理

IT君:您是如何走上技术这条路的呢?还记得拿到第一个Offer的场景吗?

李老师:我大学不是学计算机,但是在学校里第一次学软件编程的时候,我就有一种似曾相识的感觉,感觉和编程有某种缘分,这种感觉时隔多年,我依然能够回忆起来,我觉得,对于编程,我可能是有一点天分的。但是当时懵懵懂懂,也并没有太多的思考和规划,第一份工作是在一家国营企业做电工。

工作两年以后,有一次陪一个朋友去当地人才市场,看到有家公司展台前面冷冷清清,过去聊了两句,原来在招程序员,对20年前一个内蒙古小城而言,程序员绝对是一个新鲜事物,难怪冷清。我试着和面试官聊了两句,可能他们实在是找不到人,虽然我既没有编程经验,又不是学计算机,但是他们还是对我表示了极大的兴趣。对我而言,最有兴趣的是,他们开出的薪水条件要比我当时的薪水高好几倍。

可能他们实在是拿不准要不要录用一个电工做程序员,最后给我提了一个要求,让我在一周之内,用Delphi写一个仓库管理软件。以前我在学校学过汇编语言,后来自学过C语言,Delphi语言还是第一次听说。离开人才市场就去书店买了一本Delphi编程的书,用一天时间把书看完,又借朋友的电脑用两三天的时间把软件写出来,就这样从一个电工走上了软件技术之路。

现在回想这段经历,最大的感受是很多机会都是你毫无准备的时候来临,并且不会给你太久的时间去证明自己。如果你故步自封,或者被惰性牵制没有去突破,那机会就会离你远去了,你又进入了另一个轨道重复的等待机会。

IT君:后来您的职场是如何发展的?给大家介绍一下您的成长里程碑。

李老师:在前面这家公司工作了近两年,开发企业管理软件,主要逻辑就是对数据库增删改查。时间一长,就觉得没有挑战,枯燥无聊,比在国营企业还无聊。但是怎么脱离这种困境?

当时想去北京试试机会,但是了解了一些情况以后,觉得去北京也是做一样的事情,只是换了个地点,工作本身并没有什么改变。于是最后决定报考计算机专业的研究生,提高自己的知识水平,再去寻找更好的工作机会。

我当时报考的是北京工业大学人工智能专业,复试的时候却通知我被调剂到汽车专业了。于是就读了三年汽车专业硕士,毕业的时候才发现,汽车行业就业情况很不乐观,薪水还不如我三年前在内蒙古做程序员的水平,(这里给大家提个醒,选对行业至关重要)就试着投了几个软件开发的职位,很快收到几个offer,薪水也非常满意,于是继续去做程序员。

当时是在方正做一个对日外包项目,这是一个10亿日元的合同,方正专门成立了一个部门做这个项目,由于项目比较重要,部门里几个高手都被派往日本客户现场,国内则是包括我在内几个新招来的人,大家都对这个项目一知半解。

当客户对系统整体架构提出了一些要求,我仔细研究了这些要求后,就很主动去找项目总监问:这些架构需要一些框架和工具支撑,业界似乎没有满足要求的技术方案,我们打算怎么做?项目总监看了我一眼说,那就你来做吧。

于是我就在没有任何准备和经验的情况下,成了这个项目的架构师,带领其他几个新同事开发了一套符合客户要求的技术框架。后来部门的高手从日本回来,部门也扩大到近两百人,虽然这个技术框架并不完美,有各种问题,但是大家没得选择,只能基于这个框架开发整个系统。开发过程中遇到重要的技术问题,都要过来找我讨论,遇到跨层次,跨模块的技术决策,则必须要我拍板后才能统一执行。

这次主动研究和“临危受命”的经历,让我第一次体验到做架构的乐趣,通过技术手段影响项目和团队,使自己的技术审美体现在系统的各个方面,将自己的技术倾向和技术理念渗透到团队所有工程师的意识当中,并由此而引导项目走向成功。

现在看来,当时自己的技术水平比较局限,开发的框架也有不少问题。但是就是在那个时候,我顿悟了关于架构的自我意识,关于技术的作用力,关于技术管理的思想。虽然后来我获得了更多关于技术能力的提升,但是在架构的思想上,我并没有太多超越十几年前的自己。后来看了一些架构方面的书,遇到一些优秀的架构师,恕我愚钝,至少在架构的本质思想上,似乎也没有超越这个高度。


IT君:您现在作为CTO或者首席架构师的角色,站在这个高度,最大的挑战是什么,对自己还有什么要求?

李老师:我面临的最大的挑战是如何创新,如何超越自己。

我有一个悲观的理论:任何奋斗的人,都将以失败结束他的奋斗史。这句话听起来很主观,事实上是可以证明的:一个人如果通过努力获得成功,他必将继续努力以期获得更大的成功。但是人必然有自身的局限,而历史又有他自身的进程,随着成功难度的不断提高,普通人将会触及他个人能力的天花板,而最杰出的人将会触及历史进程的天花板,最终所有努力奋斗的人都将遭遇到最终的失败,越是不甘心,越是失败到怀疑人生。

大概在五六年前我意识这一点后,我就不再单纯的追求成功,不再追求更高的职位,更高的薪水,甚至不再追求事业的成功,因为我自身的能力水平如果就是这样一个高度,那么我越快的得到这些成功,我就越是接近最终的失败。我更关注的是,在当下的事情中,我如何获得更高的能力提升,如何提升我能力的天花板,以推迟我最终失败的到来。

而提升自己唯一的手段就是不断地创新,创新似乎是一件高风险的事,很容易失败。但是这些失败都不是最终的失败,对于创新者而言,不管是否失败,都将对世界和自我获得新的认知,将自身的天花板抬高了一点点。

但是不管如何,人的体力、精力、意志力都有尽头,终会有一天连创新也创不动了,我将会坦然面对那一天,而在此之前,我将乐此不疲地和自己玩一个猜谜游戏:下一个提升我天花板的事情在哪里?

IT君:您曾在阿里任技术专家,带过的项目非常多,可以给大家分享一次印象最深或收获最大的项目吗?

李老师:在加入阿里巴巴第二年的时候,因为前面工作比较出色,我被安排参与另一个部门的一个重要项目,担任这个项目的架构师。

我在阿里巴巴之前并没有互联网的经验,加入阿里巴巴第一年做的也是通用的技术框架,和互联网应用关系不大。刚加入项目组的时候,项目成员对我报以极高的期望,我自己也感觉良好,做了一个庞大而浮夸的规划,在项目启动会上慷慨陈词,博得一片掌声。

但是很快,由于对互联网产品业务和技术方案都缺乏足够的经验,我发现自己根本无法驾驭系统的技术方向。不过当时我已经骑虎难下,为了解决问题,我引入了更加复杂的技术方案,却使整个局面更加失控。这时候公司也看出我能力不足,安排了另一个架构师进入项目,他加入项目组后,很快就扭转了局面,项目步入正轨,而我则黯然退场。

此后大半年的时间我都夹着尾巴做人,低调的做一些具体的开发工作,同时大量学习互联网相关的技术和业务,特别是公司内的项目代码和文档。后来又成功做了几个项目,重新赢得了同事的尊重。

这次项目经历让我深刻的意识到:架构师是技术团队的研发核心,掌控着项目技术发展的方向。后来在其他一些地方我也看到一些陷入泥潭的项目,原因和现象多种多样,但是有一个就是:架构师失去了对项目的技术掌控,架构师自己也迷失在项目之中。


IT君:您认为架构设计的核心思想都有哪些?实践中需要注意什么?

李老师:所谓架构就是整体与部分的关系、以及关键细节的设计。架构的核心思想即是如何把握整体与部分的关系,如何设计关键的细节。但是架构是无一定之规的,即使是同样的需求,在不同的场景之中,都会有不同的难点、重点、关键点。不同的架构师会有不同的理解,甚至同一个架构师在不同的时间也会有不同的理解,进而产生出千差万别的架构设计。

实践中,架构师一定要把握住问题的关键,一定要找到一个可以牵一发而动全身的关键点,在软件设计和开发过程中,只要把握住这个关键点,就可以驱动项目和团队向既定的目标前进。相反,如果架构师找不到关键点,眉毛胡子一把抓,迟早会迷失在各种问题和复杂的关系之中。

据说乔布斯有一种能力叫做“扭曲现实力场”,表面上看这是一种现场表现能力,其实背后的本质是重新定义问题的能力。任何问题都有多个方面,大多数人只能看到一面,乔布斯可以看到问题的其他面,甚至是它的反面。不管是问题的那一面,其实都是问题本质的呈现,反映了问题的本质特征。

当乔布斯用人们从来没想到过的视角,向他们展现问题的反面的时候,他们会觉得事物似乎变得跟以前不一样了,一切都有点光怪陆离,现实被扭曲了。从问题的反面解决问题,解决方法和路径也会完全不同,所有参与的人也都会因此而受益。

架构师在技术领域也需要拥有这种扭曲现实力场,看到其他人看不到的问题的另一面,从一个不同的视角把握住问题的关键,带领项目走向成功。

IT君:谢谢李老师的分享!

李老师在专访的最后建议:每位软件工程师都应有自己的职业规划。对技术人来说,软件架构师就是一个很不错的职业方向。你可能会问:那么应该如何成为软件架构师?需要巩固强化哪些知识点呢?建议你先从了解架构开始,多尝试用架构思维考虑和解决问题,在实践中练习做架构,最终成为架构师。

李智慧的《阿里前辈的架构经》新课首发!详情点此查看

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 王贤(花名贤哥),淘宝技术部技术专家,在分布式系统架构设计、高并发系统设计、系统稳定性保障等领域积累了较为丰富的实...
    Java架构007阅读 969评论 0 3
  • Lisp 与众不同的部分原因是,它被设计成能够自己进化。你能用 Lisp 定义新的 Lisp 操作符。Lisp 就...
    庞贝船长阅读 1,654评论 0 1
  • 数据库 1.数据库类型 ①:mysql(正在学)②:oracle③:sqlserever④:mongdb 2.服务...
    Dusk_e081阅读 228评论 0 0
  • 进程 正在运行的一个应用程序 线程 执行任务的单元 多线程 一个进程可以执行多条线程,每一条线程可以同时执行任务 ...
    石头撞地球阅读 147评论 0 0
  • 图层动画,场景动画,阴影动画
    张云钱阅读 548评论 0 1