文档章节

刚哥谈架构 (二) 我眼中的架构师

naughty
 naughty
发布于 08/25 07:43
字数 3432
阅读 701
收藏 12

之前在公司,有小伙伴在向别人介绍我的时候,经常会有人这么说:“刚哥是我们的architcture”,如果来人是老外,心中一定是一惊,心中暗叹,“这位匪首看上去貌不惊人,难道已经做到了架构和本人天人合一和最高境界了?” 回头,我不免又要唠叨两句,“同学们,没文化,很可怕,我是架构师 architect,不是架构 architcture” 就像我上次跟大家聊的一样,人是架构要解决的核心问题之一,那么说“人暨架构”,似乎也是有些道理。但是你要是硬说架构师就是架构,恐怕你是对架构师有什么误解。

从企业的角度来看,会定义不同的架构师的角色,像什么系统架构师,解决方案架构师,软件架构师等等。我们要谈论的是软件架构师这个角色。其实很多的软件企业和团队,都没有定义架构师这个角色。在我早期参与的软件开发团队中,主要的角色无非是产品,开发,测试和管理角色。后来的敏捷开发就更为简单的分成三个角色Scrum Master, Product Owner, Dev。在这样环境中,并不是说没有架构师,也不是说不需要架构设计,而是说,架构设计的工作被团队经理,开发等其它的角色所承担。

“一千个人眼中就有一千个哈姆雷特”,每个程序员,每个组织,每个企业也都会有自己心目中的架构师,那么我今天就来聊聊我对架构师这个角色的看法。

我眼中的架构师不一定有颈椎病,不一定秃发,但一定首先是一个程序猿,一个软件工程师,一个码农。

经常看到有小伙伴讨论架构师要不要写代码?我认为这是个伪命题,就像我之前说的,大家根本没有对架构师有一个统一,一致的定义,那么讨论架构师要不要写代码根本就没有意义,有的架构师需要写代码,有的并不需要。但我眼中的软件架构师一定是一个优秀的程序猿,软件开发是一个实践性非常强的工作,你不能指望通过学习几本二十一天入门类的书籍就能对软件开发有一个深入的认识。软件开发并不是有人说的艺术,也不是科学,软件开发需要的工匠精神恰恰是来自于大量的实践。 ‘Talk is cheap,show me your code’, 架构师不仅仅是画画架构设计图,做些炫酷的PPT和演讲,虽然这几样都是我非常喜欢和擅长做的工作。

我眼中的架构师是一个技术领导者。

杰拉尔德·温伯格 (Gerald M.Weinberg) 是我最喜欢的软件类书籍的作家,他是软件顾问和问题解决的专家。他的《成为技术领导者》也是一本值得反复阅读的书籍。

我们经常会有关于领导和领导力的话题和讨论,那么组织中的领导究竟要干什么,我们不是有经理么,经理不就是领导么?我认为领导和经理的区别在于,领导做正确的事,而经理的主要职责是正确地做事。做正确的事通常意味着作出正确的选择,这里的难点在于,什么才是正确的?回答这个问题就要上升到哲学的角度了。墙裂推荐哈佛大学迈克尔·桑德尔教授法学系列课程《公正:该如何做是好?》 一般来说,按照我们之前对软件架构的定义,正确的选择意味着有助于实现软件功能,有助于使得团队可以更好的协同工作,有助于提升开发的效率。温伯格在《成为技术领导者》中说到 “用乘法而不是加法”,好的架构也都是以倍增的方式来改进软件开发的效率,例如云平台Kubernetes,前端框架react等等。在我们日常的软件开发过程中,经常会面对着这样那样的诸多选择,好的架构师能够帮助团队选择最适合的那个,也就是我们说的“正确”的决策,这个很难,但是这还不是最难的。当你做出了你认为是正确的选择的时候,下一步是什么呢?有同学说,那就开始干呗!很多时候,架构师不像是经理,直接管理团队,也就是说架构师并没有最终的决策权。架构师说,“同志们,我看这样做挺好,咱们就这么搞吧!” 团队成员直接怼过来,“为什么要这么搞吧?我看那么做也挺好么”。要让一个好的决策落地,架构师需要说服团队,让大家相信这真的是一个正确的决策。这就像是“狼人杀”游戏中,你作为一个逻辑严密的玩家,通过聆听一轮发言,准确的辨别出所有的狼人,然而你却无力说服队友你是对的。“狼人杀”这个游戏的精髓就在于,这是一个团队游戏,你怎么认为并不重要,重要的是你的团队是怎么看的。

所以,作为一个优秀的架构师,除了技术之外,你需要有很优秀的逻辑思维和表达能力,良好的人际关系以及不错的口碑。程序猿是一个很有特色的群体,他们通常都有一个特点,就是非常的“固执”。说服一个程序猿放弃自己的观点,简直堪比送神州火箭登上月球。所以永远不要试图证明程序猿错了,也不要证明他的观点不如你的观点。因为所处的角度不同,我相信自己是正确地的同时并不意味着要证明别人是错误的。

一个好的架构师,作为一个技术领导者的核心能力是影响力。当然这个影响力是建立在能够真正作出正确的选择的基础上的。最糟糕的情况是,作为一个领导者,因为能力不足,选择一个错误的方向,然而因为其强大的影响力,就像乔布斯那样拥有扭曲现实的能力,而你又恰恰拥有一个执行能力很强的团队,那么结果只有一个,你会离你的目标越来越远。

我眼中的架构师是技术和产品的之间的桥梁

我们圈子中经常会流传着程序猿和产品经理之间的各种小故事。作为软件圈里的世仇,他们的故事还可以讲述很久很久

宿命之战:程序员VS产品经理

宿命之战:程序员VS产品经理

  (图片来自https://mp.weixin.qq.com/s/hGIuHzD-9VNsS-JO2z7dWw

我们看到产品和开发作为拥有不同世界观的两个群体,很难理解对方,而我眼中的优秀架构师应该成为产品和开发之间的一个沟通的桥梁,一个能理解两个世界,精通两门语言的的翻译。架构师需要把产品功能翻译成程序猿能够理解的技术语言,同样架构师需要把开发面临的挑战以非技术的语言,转达给产品经理。所以架构师应该同时是产品和开发的好朋友!

我眼中的架构师是一个团队的催化剂

讲一个笑话,我的一个朋友最近加入了一家创业公司,他说他入职的那一天,公司的CEO,CTO,CFO,产品经理,测试,市场,司机,厨子,保安都来欢迎他的入职。我对他说,“你太有面子,公司看来对你很重视呀,派出这么多人来欢迎你。” 他说,“哪里呀,不就一个人么!”

今天的软件开发对团队的依赖程度非常的高,所以架构师首先是这个团队的一个成员,需要有良好的团队精神。诺兰大师在他的电影《盗梦空间》中讲述了一个精彩的关于团队合作的故事。

架构师(筑梦师)无疑是团队中的重要角色,但是一个良好运作的团队,需要各个角色协同工作,离开谁,这个团队都不完美。好的团队应该是1+1 > 2。公司的意义在于通过把拥有不同的背影,知识,思维模式的人组织在一起,创造出个体无法实现的新的创意,新的产品。而架构师正是实现新的创意和产品的催化剂,让团队中的每一个人都能发挥出比之前更出色的作用。

我眼中的架构师是一个导师和布道者

软件行业是一个令人激动的行业,技术和产品的以不可思议的速度迅速的发展着,今天的明星技术和明星产品,过不多久就会成为昨日黄花,软件产品的生命周也越来越短,我想了想我参与的软件产品,至今仍然在运行的,仍然在给用户带来价值的,大概是微乎其微的。所以不断的学习,不断的创新是我们这个行业必须要面对的宿命。我眼中的架构师应该是一个创新和新技术的倡导者,这里我并不是说新技术一定就是更好的或者更合适的选择,但是我们应该持有开放的心态,积极的去了解这些新技术带来的影响。作为导师的架构师,应该在团队中创造这样的开放心态和持续学习的文化。

 

在多年的软件开发生涯中,我和许多优秀的架构师一起工作过,我最后要聊一聊的是我遇到的架构师中的极品。之前在一家德国公司开发ERP产品,我们团队中的架构师来自德国,我们就称呼他为“老卡”吧。这位“老卡”继承了德国人优秀的哲学思维,如果你跟“老卡”讨论问题,他总是采取“否定一切”的哲学态度,首先说你错了,然后会告诉你为什么你错了。最为致命的是,通常你只能理解他说的你是错的这个观点,而“老卡”所有其它所说的内容,你完全听不懂。一般而言,德国人的英语水平是非常好的,所以并不存在因为语言问题而带来的交流困难。“老卡”喜欢用一些古怪的“大词”或者缩写,结合一些奇怪的逻辑,给对方产生一种深不可测的错觉,我想这就是传说中的架构师的终极形态吧!就像这个故事中的应试者:

面试官:你对电脑懂多少?
应试者(普通青年):懂一点,我戴过电子表,玩过任天堂,房间有一台电视……还有,我看过同学用dos开机,两次…
面试官:下一位!
面试官:你对电脑懂多少?
应试者(2B架构师):嗯,那要看是哪一种电脑了。一般的超次掌上型矽单晶片时脉输出电脑(电子表)比较简单,我小学时候常常使用他的解译编码作业流程(闹铃功能)。 至於多功能虚拟实境模拟器(任天堂)就复杂得多,不过我曾经完整测试过许多静态资料储存单体(只玩卡带破关)。长大後我对於复频道超高频无线多媒体接收仪器(电视)开始产生兴趣,每天晚上都会追踪特定频道的资料(指八点档)。 至於传统的数位电脑,我手下的一位工作伙伴(同学)经常在我的监控之下进行主储存矽单体与磁化资料存取器之间的信号交换(指dos开机)……

后来和印度同事聊天,他们好奇的问,你们都是怎么和“老卡”交流的,他说的你们能听懂么?我当然不能给中国人丢人吧,就说能!印度同事投来崇敬的目光,在他们眼中,因为无法理解老卡所说的一切,“老卡”俨然成为他们心目中神一样的存在,能和神交流的,也应该不是凡人吧!

所以我要对有志成为架构师的小伙伴提个建议,如果你的技术不扎实,学习能力不佳,沟通有困难,这都不是事。努力学习如何让别人听不懂你所说的话,渐渐的,你就会成为架构师了。

参考

© 著作权归作者所有

naughty

naughty

粉丝 397
博文 76
码字总数 155808
作品 0
其它
私信 提问
一名Java大佬跳槽之旅,离开京东,14面面试经验和收获

2019年,打算离开京东,换个地方,然后开始了跳槽之旅。 先和boss们打了招呼,然后请假专心面试,2周内请假了6天左右时间,敲定了offer。 然后交接了2周,离开了我大京东。 一、面试情况 1....

别打我会飞
05/08
277
0
架构学习资料汇总

知名网站架构分析 探索Google App Engine背后的奥秘(1)–Google的核心技术 探索Google App Engine背后的奥秘(2)–Google的整体架构猜想 探索Google App Engine背后的奥秘(3)- Google App Eng...

peter8015
2016/04/22
298
0
面试时,部门经理为什么一直不提薪资待遇呢?

本人应届生,上周六去一家公司面试,一起面试的有三个人,面试官一直不提薪资的事情,包括最后时说“你们还有什么问题,除了薪资方面的”,这周通知我二面,我就是不太明白是因为当时是初试所...

明哥聊求职
2018/06/03
0
0
跟着弦哥学人工智能2—HAND-CRAFTED RULES实现的人工智能及其缺陷

隔壁有个妹纸喷我,好高兴....给她回复了下 哎呀,没想到是个妹纸,其实我就随便那么一说,没合计妹纸还专门写个檄文声讨我,受宠若惊 其实你的评论一看就比较专业,所以我就去你博客大概扫了...

传说中的弦哥
2017/10/26
0
0
从菜鸟到架构师(二十一)

从那家公司离职后,我听以前的同事说我第一家公司刚刚上市,也在找老员工回去,公司也越做越大,摸索了这么久,终于找到了正确的方向--大数据。 我鼓足勇气,通过QQ联系到了伟哥:“伟哥,在...

lynnlovemin
2017/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈prototype原型模式

一、原型模式简介 原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。 原型模式的特点: 1、由原型对...

青衣霓裳
20分钟前
6
0
shell mysql 备份

#!/bin/bash time2=$(date "+%Y-%m-%d-%H:%M:%S") /usr/local/mysql/bin/mysqldump -uroot -p ad > /usr/local/mysql/backup/"$time2".sql 变量引用原来是这么用的。......

奋斗的小牛
28分钟前
4
0
Jmeter监控Linux服务器操作

系统:Win7 64位 工具:Jmeter 4.0 要准备好的插件:JMeterPlugins-Standard-1.4.0,ServerAgent-2.2.1 解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins-Standard.jar......

魔鬼妹子
28分钟前
5
0
系列文章:云原生Kubernetes日志落地方案

在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经...

Mr_zebra
29分钟前
5
0
入门必备!快速学会用Aspose.Words在表格中插入和删除列!

Aspose.Words For .Net(点击下载)是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft W...

mnrssj
34分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部