做一名“拧螺丝”的架构师

|0x00 “基本功”的比拼

王兴总结那场“千团大战”时,用一个“基本功”概括了自己为什么能赢。什么是基本功?就是在该做什么的时候做什么,做符合科学符合规律的动作,而不是随大流去“人云亦云”的做事。在2019年给员工的内部信中,王兴提到,“只要练好基本功,就能赢99%的事”。

对于技术人员来讲,什么是基本功?我想,就是从架构师的思维层次上,做好每一件小事。

我们常常称互联网大厂的工作是“面试造火箭,入职拧螺丝”,虽然客观上确实如此,但一家公司之中,造火箭的架构师往往不需要太多的人,但需要大量懂火箭的工程师。架构是一种思维方式,思维方式是可被训练的,只有大量能够思考到未来发展的工程师凝聚在一起,一家公司才有了技术力量的“灵魂”。

2012年,微信与米聊的战争,实际只持续了两个月,雷军在赌腾讯反应不过来,而腾讯却把公司的重心,全部倾斜到了新生的微信上。彼时,QQ还是腾讯的支柱,当微信因为用户量的巨大增长,导致服务架构顶不住巨大流量的压力时,马化腾果断把QQ的核心技术人员抽调到微信,从而打赢了那场未来有10亿用户量的即时通讯战争。如果你是当时的技术负责人,战争降临时,你是否能够顶得住压力?就像拼多多与淘宝的战争,看似旷日持久,但当用户量拐点来临的时候,战争就已经结束了,而这个周期通常只有几个月。

作为数据从业者,我们在年复一年的做着模型的重构,思考着数据的治理,为的不仅仅是把战略落地,而更多的是为了处理好数据业务中长期可持续发展的问题。做数据治理的常常感叹落地实施的难,因为“策略落地”,不仅需要架构师来规划,也需要一大批有“架构师”思维的工程师来实现。做好每一张表的设计与规划,用架构师的思维去考虑,积累起来,才能打赢这场最艰难的仗。

“最牛创业团队”为什么能二十八年打了天下,缘由就是当年那支无敌的红军,我们往往只看到了“军事民主制”的表象,却没有看到全员普及教育的“基本功”,让每一名战士都有了指战员的思考方式,军事民主制才能落地。

如果不从很高的视角来思考,仅仅从自身的利益出发,架构师的知识也是很重要的。“内卷”是现在很火的一个词,那么我们在内卷什么?从我自身的角度出发,就是在淘汰那些没有“架构师”思维,没有前瞻性想法的程序员,从而保持组织整体的技术实力。因为企业付出的用工成本一直是很高的,而市场的增长潜力正在逐步消失,从成本优化的角度出发,一定是希望越少的人做越多的事情,那种“1个优秀的程序员,顶100个普通的程序员”,就一定会进入优化的名单里,因为行业规则是“3个程序员拿4个人的工资做5个人的事情”,那么2个程序员行不行?给你涨薪50%,同时减少1个人的成本,企业还是划算的。

“资本家来到世间,从头到脚,每个毛孔都滴着血和肮脏的东西”。效率优先的社会,就一定会督促每个技术人都成长为架构师。

|0x01 “架构师”的视角

百度百科对架构师的定义是:“在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者”。

但我更倾向于用下面的话来描述:“架构师是将不确定问题确定化的工种”。

为什么会这么讲,因为架构师通常会面临三个问题:

  • 业务的技术架构要面向未来而设计,满足未来N年业务增长的诉求;
  • 系统的业务复杂度超过了单个人甚至是多个人的理解能力;
  • 团队的协作规模超过了单个人甚至是多个人的组织能力。

谁都无法预测未来,谁都无法用自己的力量对抗熵增的系统,但架构师的职责却需要这么做。要想解决“不确定问题的确定化”,首要便把问题定义清楚。只有问题定义清楚了,才能有解答问题的方法。我们可以这么讲:“架构师最大的能力,是定义问题的能力”。

例如,一个公司的战略,往往不是从技术角度出发的,而是从业务角度出发,有些问题在技术人眼里,甚至是矛盾的。例如今年的目标是“降本增效”,我们要支持更大规模的促销活动,规模增长20%,同时机器成本又要比去年降低20%。这就要求两个方面的能力,一个是对过去经验的总结,如何支持20%的规模增长;一个是对未来形势的预判,哪些技术能够降低20%的成本。当设计的架构同时具备了这两方面的能力时,它才会非常的健壮,同时解决当下和未来的问题。

对一个复杂的技术子系统进行改造,显然是“不确定”的,那么通过定义新的问题,来自上向下推动改革,就是把问题“确定化”了。

在这里插入图片描述

在过去,架构师提出了“中台”的概念。之前技术成本的增加,往往来自于重复建设的成本。为了解决“重复建设”的问题,那么就把能够抽象的业务问题中台化,通过避免重复开发的方式,降低了新业务的开发成本。在现在,架构师提出了“云原生”的概念,因为现在成本的增加,往往来自于业务流量的波动性,例如疫情期间的“钉钉”,为了能够让资源具备“伸缩”效果,实现快速资源创建与回收,我们通过系统上云的方式,来实现资源的动态部署。如果“云原生”是正确的道路,享受了技术红利的业务,就能够在更大规模的促销活动时,通过资源的快速部署来支撑业务,又能够在平时将不用的资源撤下来,从而降低全年的成本。

一个简单的“词”,就将许多复杂的问题简单化了,看得懂大的技术趋势,才能保持技术知识的“前瞻性”。显然,未来搞“云原生”的工程师,会比过去搞“全栈”的工程师,更加的吃香。

|0x02 “知行合一”的困惑

但是,仅仅能够提出治理问题的策略是不够的,就像“行百里者半九十”一样,最后的十步,如何将设想好的策略落地,才是最难的地方。作为架构师,设计了一个很不错的方案,但到底能不能执行,恐怕心理是没有底气的。

我们都理解“知行合一”的内涵,但又往往心存疑惑。

按照传统的观点,应该是知先行后的,但是王阳明却说知行合一。按照哲学的观点,我们应该坚持“唯物主义”,但经历的越多,在很多领域内,“唯心主义”却是占据绝对的上风。王阳明平定朱宸濠之后,很多人诋毁他。有的弟子说:“是因为先生立下了旷世奇功,很多人妒忌你,所以恨你”,也有的弟子说:“是因为尊崇先生的人多了,根据辩证法,那些反对先生的人就会更加卖力”。王阳明却说:“你们的话都有道理,但并不是根本。即便全天下的人都讲我言行不符也毫无关系,这就是自信,真正的自信就是相信自己的良知,良知告诉你什么时候该做什么事,那就去做,不必顾虑不必计较。”

吃透一个领域的问题,就是“知”;解决一个领域的问题,就是“行”。“知”造就了自己的自信,从而为“行”奠定底气。

例如,我么把公司整体的战略,称之为“云原生”战略,从公司的层面,就会制定一些原则性的技术标准;到各个BG/BU的层面,就是各个业务线如何选择自己的技术方案,如果是成熟业务,走中台进行管理,如果是创新业务,就通过自建的方式,先让业务跑起来;再下沉到各个产品线,要考虑子系统的设计方案,我所在的产品形态是怎样的,用什么样的技术结构最合适,这一层才是我们传统意义上所理解的“架构师职责”;具体到每一个技术小二,就要考虑每一行代码的合理性,每一张数据表的可复用性,等等。

作为技术人,我们最专业的能力,是站在技术的视角上,去翻译业务的问题,比如通过“领域模型”来与产品沟通概念上的东西。但翻译的过程不一定是准确的,因为可能因为KPI的压力、因为业务的边界、因为成本的考量、因为自己的“舒适圈”,因为种种原因被“绑架”了,制定了很多的短期方案,这时候就没有把问题想清楚,没有把技术方案“吃”到透,落到执行上,无法解决这个领域的问题,底气就不足,不论是向下推动或者是向上汇报,“知行”就不合一了。

有句话叫“顺势而为”,在架构的工作中往往会遇到一些“做不到”或者“不想做”的事情,也会通过一些新的思路,或者是新的方案来解决。这并不是说架构师就一定要是一个完美主义者,而是说架构师要学会利用已有的一些基础,去引导系统向更好的方向去转变。能够清醒的认识到事情的不完美,学会把事情思考完整,能够将事情顺利的引导推开,“知行”才有了“合一”的基础。哪怕别人再怎么不认可自己的方案,如果可以写一手漂亮的代码,就像人有了一张漂亮的脸,打起交道来就会少一些戾气,而合作多了,对方认可了你的态度与方法,也就最终能够一起完成一套最可行的方案。

架构是一种能力,它不是头衔。 换句话说,我们需要具备架构能力,但不一定要成为架构师。就像邓公,他被称为改革开放的总设计师,但他不是设计师。我们都向往着“架构师”的神圣光环,但我们需要架构部门吗?或许需要,因为公司大了,也或许不需要,因为每个人都应该是架构师。

|0xFF “拧螺丝”的架构师

回到文章的起点,“拧螺丝”的架构师,就是“把事情做正确”的工程师。

什么叫“把事情做正确”,大概就是培养自己的三个能力:

  • 学习知识的能力:比如如何快速熟悉一个不熟悉的领域,如今随着行业发展瓶颈的到来,深耕一个细分市场成为了主流,这就必然带来更多的陌生知识,以至于影响自己对于技术趋势的判断。当然,在知识大爆炸的年代,学习不再是单纯的记忆知识,而是搜索、过滤、理解、应用的过程。比如多跟有经验的人吃饭聊天,比如能够充分利用搜索引擎找到自己想要的东西,但知识往往很少有成体系的内容,要学会自己建立体系。
  • 尝试新技术的能力:互联网行业最大的特点,恐怕就是技术更新迭代的速度非常快,以大数据为例,从早期的分库分表,但Hadoop的兴起,再到Spark/Impala等各种框架的普及,再到现在“云原生”概念的诞生,大概我们要选择的技术方案,几乎每年都有新的花样出来。而如果不能时刻跟紧这些技术方案,那么技术方案设计一开始,就会有选型落后的风险。而即了解技术全局,又能够深入细节去做分析,是尝试新技术能力的根基。
  • 影响其他人的能力:好的技术方案要想应用落地,除了方案本身的争论之外,大概就是看谁的方案落地的成本更小。不论是其他人自愿的来做改造,还是能够解决某个产品方案的争端,或者是通过某些演讲来推广自己的成果,总有一些方式来获得他人的认同。而人的本性决定了,影响自己的追随者,往往会让事情付出更小的成本,并获得更高的收益。

初来阿里的工程师,大多都是在困惑中度过第一年的,因为“这也要自己做”、“那也要自己做”,用一句话概括,大概就是把每个人朝着“CEO”的方向去培养。尽管我们经常看到对这种方式的批评,但不可否认的是,这种文化更容易培养一批有能力的“工程师”。

《雍正王朝》这部电视剧中,小多子通过一些见不得人的手段,拿到了二叔曾经的地位,但因为自己的能力匹配不上这个地位,也因此在雍正朝备受冷落。很多人被淘汰,不是因为能力不行,而是因为过早的停止了学习和成长。一个人的能力应该是围绕着工作的岗位和职责震荡的,这个震荡范围偏差不会太大,迟早会归于一个相对合理的区间。

技术人要学会追求“最终的正确”,而不是“一开始的正确”。做一名“拧螺丝”的架构师,是为了让自己的能力匹配上自己的层级,而不是为了“架构师”这个Title。

猜你喜欢

转载自blog.csdn.net/gaixiaoyang123/article/details/112432829