架构师,是否需要写代码?
中生代高级架构群 中生代技术
小编:架构师是否需要写代码,这个话题已经记不起从何时开始,在攻城狮圈内成为一个经常拿来讨论的话题,上周中生代深度交流群群友们对此问题做了有一个较为深入的交流,小编不是生产者,我只是搬运工。
概要:
1、架构师是神马狮,代码是什么马
2、架构师的成长之路
3、架构师是使用代码作画的大狮
1
架构师是什么狮,代码是什么马
记得那天是这样的,总导演(右导)一抛出话题,群内雄狮们可炸开了锅:
狮子郭:架构师应该写代码,架构师需验证自己架构上想法的可行性…
狮子肖:架构师必须得做到了解现状,方案与实际相符,别和猿类离得太远…
狮子 P:架构最早是源自建筑,没见过建筑架构师码过砖。
狮子木:仰望星空,脚踏大地。
大伙交流得很 high,本狮却觉得心底空闹闹的,我们在讨论架构师是否需要写代码的时候,我们先看看架构师的定义:
系统架构师:一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物 — 某百科
既然是讨论一下架构师是否需要写代码这事,那我们先从何谓架构师开始说说,从某百科拿过来的定义,大家可以看到,架构师既要掌控整体,又需洞悉局部,终极目标是给出解决方案。
本着 “以终为始” 的原则,架构师只要根据具体的业务场景给出解决方案即可,与是否 Coding 本没有直接关系,所以,从定义(完全否定且纠结的 TX 可以选择性观看)上看,架构师不写代码,本狮是认为没什么问题
初步论断:架构师搞定解决方案即可,和写代码本木有关系。
要是在群内下这个结论,火爆(火爆脾气对架构师可不好)脾气的狮子们可能早就开始扔臭鸡蛋过来了,为了防止不必要的意外伤害,我们继续:
什么东西触发出架构这个工作?即触发架构原动力是什么?
Kevin(王凯)老师在什么是架构中聊到,触发架构的原动力:人对某项工作有更高的要求,且独立人的能力和时间相对有限。
个人粗浅理解:架构触发的原动力是目标越来越大,独立人的能力相对越来越弱,随着社会的发展,分工也就必然产生,怎么让 1+1>2 甚至 N 呢?我们就趋向于推举一个人,专注于更好的让我们一群人更高效,愉悦的干活,并且还有更好的回报。架构这个事就产生了,当然,此处不一定是软件系统架构,也可能是组织架构,甚至其他行业领域的架构。
回到最初的问题,软件架构师应该做什么呢?同理,让一群码工能够开心愉快而又高效干活,最终还能达到更高的目标。这么一分析,似乎还是和代码木有什么关系,只要让我们开心的干活,最终达到更高的目标即可。
闲话扯了一丢丢,都没说到点上,到底要说撒呢?
正如狮子 P 所说,架构最初源自建筑,建筑的架构师们基本不码砖,凭啥软件架构师就需要 Coding?本狮在看到如此问题的时候,也呵呵了良久,在实在呵呵不下去的时候,不小心看到几个描述:
软件特性包括(不限于):
1、无形的,没有物理形态,只能通过运行状况来了解功能、特性、和质量
2、软件***了大量的脑力劳动,人的逻辑思维、智能活动和技术水平是软件产品的关键
看到上述描述,不知道看官是否也有所悟,为了尝试解释一下,本狮想起了曾经亲身经历的一个事,大家都知道四川有个非著名茶叶“竹叶青”,第一次去店里准备买点的时候,发现分为“品味”,“静心”,“论道”等几个品种,怎么记也记不清,最后服务员妹子终于忍不住直接说:品味是最便宜的,精心是第二便宜,论道是最贵的,一下顿觉整个世界都敞亮了。
2
架构师成长之路
引自:西乔《架构师成长之路》
说了一堆狮子跟马的事,回到正题,架构师到底要不要写代码呢?那我们再看看架构应该具备什么能力和素养?部分(本着能搬的一定搬,不能搬的创造条件也要搬的原则):
2.1
以实践检验为荣,以道听途说为耻(琅琊榜首庄叔)
每个好架构师都是一个卓越的程序猿(媛),架构师每个方案或者技术的决策,必须经过实践的检验,不能因为一篇技术文章,一个布道师的宣传而随意决策,让攻城狮们到城下才发现没带***,这也是大伙首先提及:
狮子郭:架构师应该写代码,架构师需验证自己架构上想法的可行性。
狮子肖:架构师必须得做到了解现状,方案与实际相符,别和猿类离得太远。
…..
2.2
过硬的技能和全局的视野
技能硬不硬,时间是检验真理的唯一标准,此处无须赘述。
“视野决定格局”,不记得在哪听过了,曾经觉得挺装 X 的,不知道是自己膨胀了还是真的成长了,现在感觉真实在理;个人理解视野源自丰富的经历,且对经历的深度吸收(结合理论)后,以更加深刻的方式去审视、归纳、抽象,做出更加“鞭辟入里”的输出分享。
狮子周:版本控制,持续构建,分布式缓存,分布式存储,多线程,数据库,linux,消息队列。
狮子俊:技术技能上,运维体系,自动化工具,大数据等;
狮子郭:业务流成熟后,大家都是关注高并发,高可用,分布式。
狮子于:眼到,手到,心到。看见的是眼,练习实战是手,鞭辟入里,融会贯通是心到。
2.3
具备必要的管理技能
可能很多架构师会觉得作为架构师,技术是首要的,给出合理的解决方案是关键,至于管理,P 关系是没有的(本狮曾经也这么认为的)。
杨波老师,Kevin 老师在聊聊架构中都有聊到,架构是发现利益相关人(stakeholder),并且解决他们的关注点,管理技巧本狮三脚猫也算不上,YYbook 也没通读过,处理好利益相关方(客户、领导、开发、上下级等)是项目成败非常重要的因素还是有所耳闻,这不,群内有狮子就被此类问题严重困扰。
狮子俞:最最大问题就是没有优先级,突然想起来的东西就加到前面来;管理问题引发了技术问题,导致技术的东西迫于时间可能不能很好的展现和使用。
狮子俞接着说:新团队领导和产品经理都比较特殊,导致把控太难,需要长时间磨合;
狮子聪:需求流程化,定好优先级,开发进度透明化,让领导清楚明白大家都很忙,别想插就插,真要插还是看得出代价的,能够讲明白,能够尽量量化成本和产出的话,老板还是懂得取舍;
狮子刘:我们产品也会临时加需求,我们会根据优先级调整,如果卡时间点,就把优先级相对低的需求放到下一个版本。
广告狮:管理问题,大卫张33博客http://davidzhang33.blog.51cto.com
2.4
以理解用户为荣,以想当然尔为耻(以庄叔金句结尾)
“以客户为中心”这句话在华为内部经常被各大领导频繁提及,之前任老板为华为内部一篇文章《华为宿敌思科,诞生爱情土壤中的技术之花》写下按语:“我不如钱伯斯,我不仅倾听客户声音不够,此处省略数字。。。虽然我不断号召以客户为中心,但常常有主观臆断。尽管我与钱伯斯是好朋友,但又真正理解他的优点有多少呢?”(备注:钱伯斯作为 CEO 第一次参加董事会,钱伯斯迟到 20 分钟,因为他在电话中为一个客户排忧解难)
本狮再次理解一下架构师的客户至少有谁:产品用户,开发甚至测试人员。所以如果架构师们都足够“以客户为中心”,功能(或技术)堆砌而无视客户价值的产品,PPT 架构师等奇葩相信会越来越少,架构师与攻城狮们一定会从此过上和谐幸福的生活。
3
架构师是使用代码作画的大狮
小编搬了很多,还是觉得心中没底,于是继续寻寻觅觅,我们的大狮们又是怎么看这个问题的呢?
3.1
架构师应具备什么技能果和素养?
David Cornish(英国伦敦摩根大通公司的技术架构师):
- 跟技术团队和商务团队都有良好的沟通
- 丰富的设计经验和技术知识
- 分析思维和整合思维
- 冲突解决
Theo Gantos(美国密歇根弗林特 TEKA 公司的咨询师):
架构师是一位博学多才的人。
在各种方法学领域都要有咨询、交际、组织、概念化、抽象思维、逻辑推理、数据建模的能力,自我检讨的能力,快速适应,演讲和沟通技巧,编程知识,写作技巧,销售技巧,个人魅力,金融和投资回报率计算技能,对付难弄、安于现状的人,有幽默感。
Venkatesh Krishnamurthy(印度班加罗尔市 Valtech 印度公司的技术架构师):
有创造力、艺术家、政治家、强有力的意志、优秀的沟通技巧、出色的演讲技巧、有人缘、成熟、表达能力强、勇于决策,并能坚持、挑战者、好的观察者、协商者
3.2
架构师应该写代码吗?
Fred George:
“不编程的架构师的职业生涯是短暂的”;
Donald E. Knuth:
好的设计者必须能够卷起袖子,加入开发队伍,毫不犹豫地参与实际编程。真正的架构师,如果不允许参与编码的话,他们会提出强烈的抗议
Martin Fowler:
一个真正的架构师……应该指导开发团队,提升他们的水平,以解决更为复杂的问题。
他接着说:"我认为架构师最重要的任务是:通过找到移除软件设计不可逆性的方式,从而去除所谓架构的概念。"
TimYang:
那些对技术体系有深入了解及一线体验的架构师,比那些只跟人员管理打交道的人,更有机会利用技术的力量促进变革
江南白衣:
国内的架构师到了三十岁以后很多就往理论上跑,而国外的架构师在往上发展的同时保持下面的编程体验,所以国内多水王,而国外则多大师
再次以 Fred George 结束:
Fred George:
架构师是使用代码作画的大狮。