从程序猿到架构狮的转变

从程序员到架构师的成长,变化就像从小学生到高中生一样巨大。

不仅是对能力有要求,更重要是对视野的要求,对认知能力的要求,对沟通能力的要求,对组织能力的要求,对适应能力的要求,对执行力和韧性的要求…… 远不是说技术能力成长了,就达到了架构师的要求。更加不是说技术能力有了,培养培养,就可以成为架构师了。架构师都是摔打出来的。

看到过对做架构有一个不错的定义:系统架构的目标是解决利益相关者的关注点

所以你看,做架构的架构师,其实是解决人的利益问题,目标是让各方利益尽可能达成一致,做 trade off 的工作,权衡。技术只是实现这个目标的一种手段,一种重要的手段,手段之一,不是全部,甚至于不是最重要的。执行层面成长起来的、技术能力过关的工程师,想要成长为架构师,首先考验的是你听 + 说的能力,也就是沟通表达的能力。沟通能力才是一个合格的架构师最重要的能力

一、听的能力

这个很有学问。

我们常常假设与我们沟通的都是理性人,他们清楚自己说的是什么意思,他们也确实想要表达这个意思。实际上,几乎不存在这样的理性人。为了避免尴尬、隐藏真实想法,大家说的往往是加以润色的话。即便死党之间畅无不言,潜意识也会偷偷在话里打掩护,顾左右而言他。若是拿别人告诉你的话当个准,九成九会遇到『当初我怎么知道』的情况。

工作中也是如此,系统架构牵扯利益,各方都希望架构师做出有利于己方的设计,所以表达己方利益关切的时候,明明可以『关注』的,他可能用『严重关切』来表达。你没法儿指责他说谎,也许他的表达习惯就是如此,也许是大家对轻重缓急的表达方式不同。但作为架构师,你自己心里就得有个判断:他的话我到底该不该信?信几分?可信的部分在我的架构中轻重缓急怎么判断?

所以,听的能力非常重要。

首先,学会听别人的话外音。

职场上,大部分人是理性的,他们对自己手头的事情能有理性的判断。大多数时候,他们也能清楚知道自己想要什么。只是,他们往往会委婉地表达自己的目的。旁推侧击、敲山震虎、隔山打牛、杀鸡儆猴…… 就是不会直来直去。

作为架构师,你得学会听懂别人背后表达的意思,这是最基本的功力了。

其次,听懂别人背后的意图。

再聪明的人也有犯糊涂的时候。有些时候,跟你沟通的某人,会忽然卡壳,不知道接下来要怎么表达/表达什么。他隐约觉得自己想要个小功能,但就是不知道怎么表达出来。这时候如果架构师对这个人有一定了解,知道他关心的点,知道他的风格,就有可能顺着他的思路去提醒他。

倒不是让架构师去做别人肚子里面的蛔虫。这样做至少有两点好处。

  1. 架构师主动提,比一个有明确利益偏向的人来提,提出来的方案合适得多。他讲不清楚的时候,你能讲清楚,还照顾到他的关切,他接受你的方案的概率也很高;
  2. 如果架构师对利益方能达到这种程度的了解,可以把利益方的偏好尽可能纳入架构设计的考量中去,就可以做好预埋,防止无谓的需求变更。

最后,听懂别人没说出口的话。

有些话,不一定要说出口,就像上面提到的。另外有些话,说的时候还没想到,或者,说的时候就没怎么想,反正可以以后想到再说。

对架构师,后面两种情况真的够呛。你遇到的是一个职场 baby,一个不能为自己的行为负完全责任的人。这种情况下,最好的解决办法是,你能帮他想好,反过来引导他,通过他的嘴讲出来。避免在系统评审会之后,频繁变更带来的成本开销。评审会之后变更架构设计的开销是客观的,成本存在压缩极限;而考虑提前量的开销是可控的,通过人为努力可以使成本逼近零。因此在系统架构设计阶段,尽可能多考虑一些未来的变化,从长远来看,是相当划算的。

这种场景下,考验的是架构师的业务能力、经验和宽泛的倾听技巧。这种能力通过练习可以培养,但成长不会很快。属于二八原理中要花 80% 精力去积累的 20% 那部分。锻炼的时候,要有耐心和信心。

说的能力

说,或者说表达,也是沟通中重要的一部分。对于架构师而言,架构设计就是最好的表达。相对的,就工程师成长起来的架构师,我更提倡学会倾听,而不是表达。

如果硬要说在表达方面有什么建议或者窍门,就下面几句话。

  • 别人说完,自己再说;
  • 说之前,想清楚,尽量言简意赅。话说得太多,在别人耳朵里,就没什么效果了。不如一字千钧有威力;
  • 想表达不同意见的时候,先停顿三秒,再说出口;
  • 有理不在声高
  • 对事不对人,对过人的自己请客吃饭;

培养能力

沟通的能力也是可以靠锻炼来的,不是谁生下来就是《九品芝麻官》里面的包大人。关于沟通的锻炼方法,极限一点的,请自行谷歌销售技巧培训方法。哈哈

最后补充一句,沟通 + 技术能力,是成为一个架构师的必要条件,还不是充分条件。这两条具备了,才可以说你达到了做架构师的最最基本的要求,有可能做出大家满意的架构设计。后面的,有机会再补充。