架构师,当然是脑力劳动者,但是,同样是脑力劳动也存在重大的差别。有一类脑力劳动的成果,是比较容易被评价的。或者能够判断其对错:比如考试的分数;或者能够比较其高下:比如两个人下棋分出输赢;或者能够交由市场来判断:比如某种UI/UE设计,我们可以通过数据统计,了解其受用户欢迎的程度。

但是,架构设计只是软件开发过程中的一个环节,而在这个多人协作的场景中,我们很难单独评价架构的优劣。由于硬件、软件、部署、人员、测试、用户、市场等众多的差别,即使是非常相近的两个系统,我们也很难判断两个架构孰优孰劣。比如:eBay的架构与Taobao的架构哪个更加优秀?在交付拖延的时候,我们可以将问题归咎于开发团队的效率低下。在出现质量问题的时候,我们可以将问题归咎于测试团队的疏忽大意。在负载撑不住的时候,我们可以将问题归咎于运维团队不够专业,甚至是竞争对手的DDoS攻击。那么,在出现什么样的问题的时候,我们可以将责任归咎于架构呢?

所以,现状就是:架构师是一个很难做好的职业。但是,从某种意义上来说,又是一个非常容易混的职业。(当然,混是另一种需要持续修炼的高端技能。)因此,架构师也是特别需要强调自我修养与职业道德的职业。

什么是架构?什么是架构师?

对于架构的定义,有很多种,我比较同意的一种定义是:“架构是一组关键决策”。这样的决策包括但不限于:使用什么操作系统、语言、框架与类库;是否在架构中使用某种全新的技术方案;优先考虑或满足哪一方面的需求以及如何在技术上实现这一点;更进一步的,面对一个不断发展的系统,哪些部分需要优先重构or优化、哪些决策需要重新考虑甚至修改;再进一步,某些前瞻性的考虑,也是架构决策的一部分,等到问题发生再来解决,同样是架构方面考虑不周。

能够做出这些决策的,就是架构师。或者说,在一个团队中,实际的最终决策者,就是事实上的架构师。无论他被赋予什么样的头衔。在一个团队中,我们总能找到这样的角色(无论他做得是不是称职),而一个优秀的架构师,就是通常能够做出“较多”正确决策的人。

架构师的工作是什么?

仅仅做出决策是不够的,我们可以从时间线上来观察:在做出决策之前,架构师需要足够了解自己的“可选项”,无论是用户的实际需求,还是最新出现的技术和框架,并且都得要有足够深入的理解(否则就是在拍脑袋做决策)。这时,架构师的角色,是一个“研究者”。

在综合各项因素,甚至是相互矛盾的各种需求之后,在考虑到团队的实际能力与交付压力之后,在平衡了先进性与可靠性、扩展性与稳定性、重要性与紧迫性之后,架构师做出了一组决策。这时,架构师的角色,是一个“设计师”。

为了确保自己架构设计能够被正确地实施和贯彻,架构师需要与研发团队密切配合,或者说服、或者引导、或者辅导、或者鼓动、甚至需要某种“强有力的推进手段”,这对于架构师的「硬实力」与「软实力」都提出了很高的要求。这时,架构师的角色,是一个“Top Coder”。

在某些大公司,架构师还需做很多的文档工作,这些文档并不是交付给开发团队的说明性文档。而是某种向上级证明某某方案可行,某某架构有效的证明性文档。这时,架构师的角色,是一个“说服者”。

从上面的描述,我们也可以发现,架构师像是一个千面人:需要与上下前后左右的不同角色打交道;多面手:需要了解甚至掌握诸多不同的知识和技能。要想做好这个工作,提升自我修养是根本之道!

什么是架构师的自我修养?

1. 以理解用户为荣,以想当然尔为耻

架构师不是产品经理,不是市场人员,不是客服人员。但是,如果只懂技术,只考虑技术,不能深入的理解用户的需求(强调一下,用户的真实需求!),就会做出“纯粹追求技术先进性”的想当然尔的架构出来。

2. 以脚踏实地为荣,以夸夸其谈为耻

架构师当然需要很强的表达能力,甚至还需要有忽悠能力。但是,无论是表达还是忽悠,都必须以“实力为基础”。如果不能脚踏实地,积累实力,只会夸夸其谈。那就相当可耻了。

3. 以身先士卒为荣,以指手画脚为耻

还是那个经典的台词“兄弟们跟我上”与“弟兄们给我上”的区别。如果对于一些困难的问题,架构师自己都搞不定,却摆出一副胸有成竹的表情:“这不是很简单的吗?你到网上搜一下嘛,资料大把大把的。”这种做派,就很令人不齿。

4. 以实践检验为荣,以道听途说为耻

如果某种技术,架构师自己都没有做过评测,没有看过框架代码,没有在过去的实践中应用过。却因为一篇文章,一个讲座,甚至某个大公司曾经用过这样的证据,就将一种技术引入到项目之中。这样的决策,很少有不失败的。

5. 以先见之明为荣,以后知后觉为耻

“过度设计”当然是一个贬义词,但是架构师一定要有前瞻能力。不能等到火烧起来了,再去救火。虽然在企业里,的确存在“救火英雄升迁快”的现象。但是,一个优秀的架构师,应该以“消除隐患于无形”为荣。

6. 以兼容并包为荣,以独断专行为耻

在架构领域,很少有唯一解、最优解。大多数时候,我们只能在多个各有优劣的方案中,反复权衡,考虑取舍。这时,开阔的视野、开放的心胸,就显得尤为重要。如果一味的独断专行,听不进团队里其他同事的意见(尤其是那些学习了乔布斯的架构师),就会非常危险。

7. 以主动学习为荣,以固步自封为耻

技术的进步实在太快,曾经有一种夸张的说法:“平均每天诞生一种革命性的、颠覆性的技术”。虽然有很多新技术,都在如此宣称,作为架构师,却必须不断地主动学习,了解,甚至在某些领域做一些初步的尝试。这样的过程,在架构师的整个职业生涯中,都无法停止。一旦产生了“固步自封”的念头,这个架构师也就“不过尔尔”了。

8. 以勇猛精进为荣,以疏忽懈怠为耻

架构师是一份困难的工作,更加重要的是:随着架构设计的完成,架构师的工作,才刚刚开始。接下来的任务,会非常琐碎,也许会更加困难。这份工作的主题是:“架构看护”尽可能保护架构,不会随着时间的推移,随着特性的增加,渐渐变得腐化。很多最初设计得相当优秀的架构,到最后变得不堪入目。说到底,还是要怪架构师没有能够坚持自己当初的决策。

如何提升架构师的自我修养?

在《中庸》里,子曰:“好学近乎知,力行近乎仁,知耻近乎勇。知斯三者,则知所以修身;知所以修身,则知所以治人;知所以治人,则知所以治天下国家矣。”

简单的翻译解释下:好学就能显得有智慧(至少能有知识),力行就能不脱离群众(因不忘本而能具备仁慈之心),知耻就能守底线(有所为有所不为之勇)。能做到这三点,就算是懂得如何提升自己的修养了。懂得如何提升修养,才能懂得如何驾驭团队。懂得如何驾驭团队,才能创作出真正伟大的,甚至风行全球的软件产品来。

这就是我理解的架构师的中庸之道,与诸位共勉吧。

(责编/ 钱曙光,关注架构和算法领域,qianshg@csdn.net)

论架构师的自我修养--8荣相关推荐

  1. (转)论架构师的自我修养

    架构师,当然是脑力劳动者,但是同样是脑力劳动也存在重大的差别.有一类脑力劳动的成果,是比较容易被评价的.但是,架构设计只是软件开发过程中的一个环节,在这个多人协作的场景中,我们很难单独评价架构的优劣. ...

  2. java架构师的自我修养是什么

    java架构师当然是脑力劳动者,但是在相同的脑力劳动中也存在主要差异. 有一种脑力劳动易于评估. 或者可以判断是对还是错:例如考试成绩: 或者可以进行比较:例如,两个人下棋以区分赢家和输家: 或者可以 ...

  3. 【本人秃顶程序员】好好讲一讲:到底什么是Java架构师——《架构师的自我修养》

    一.什么是架构师 曾经有这么个段子: 甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我. 乙:羡慕ing,都什么人来了? 甲:CEO.COO.CTO.All of 程序员,还有 ...

  4. 一个Java工程师的自我修养_一个架构师的自我修养

    1.合格的工程师 需要 1~3 年时间,其典型特征是 "在别人的指导下完成开发".主要以积累基础知识,包括编程语言.编程工具.各类系统的基本使用.属于最原始的"基础技能积 ...

  5. 王福强:一名架构师的自我修养

    本文作者为王福强.先后在花旗.阿里等金融和互联网企业担任技术专家和资深架构师.老王与21CTO社区创始人杜江(洛逸)是前同事.他在Java领域不断深耕积粮,终成『砖家』.他将跟大家探(chui)讨(n ...

  6. java高级架构师的自我修养;文末有进阶路线思维导图

    1.架构师的定义 在互联网圈里架构师这个名号的火热程度堪比产品经理,在产品经理没火之前就已经风生水起.乔布斯是苹果的产品架构师,比尔盖茨是微软的首席架构师,马化腾也号称腾讯的首席架构师. 有些人会觉得 ...

  7. 炼丹师的自我修养:如何分析训练过程loss异常

    作者 | 风影忍着@知乎 整理 | NewbeeNLP 本文从数据与标签.模型以及如何通过train loss与test loss分析网络当下的状况三个大方面去总结了神经网络训练过程中不收敛或者训练失 ...

  8. 一个架构师谈什么是架构以及怎么成为一个架构师--转载

    原文地址:http://blog.csdn.net/lifetragedy/article/details/43925857 新年新事,来点轻松的话题.我们调剂一下后再继续讲CAS SSO单点登录吧因 ...

  9. 对话阿里巴巴贾扬清:如何成为一名优秀的 AI 架构师?

    简介: 近期,我们邀请了阿里巴巴技术副总裁.阿里巴巴计算平台事业部总经理. AICon 全球人工智能与机器学习技术大会深度合作伙伴贾扬清光临 InfoQ 直播间,和近 7000 名用户分享了作为一名 ...

最新文章

  1. jira 配置自签SSL证书windowsAD域
  2. 难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题
  3. 【转】指令周期,机器周期,时钟周期,振荡周期有什么关系
  4. C语言 sizeof 函数 - C语言零基础入门教程
  5. 详解promise、async和await的执行顺序
  6. java包装类collection,java包装类的比较、hash和CollectionUtils交集原理探究
  7. mysql 主从同步原理
  8. 数据库表及字段命名规范
  9. 【CGAL】编译(windos)
  10. linux视频对话框,抖音对话框视频怎么做?如何在视频画面上添加对话气泡框?视频加对话气泡的方法...
  11. jquery 菜鸟教程
  12. elasticsearch篇之mapping
  13. 实现加减乘除任意组合的语法解析
  14. 中国计算机大会2017观展总结
  15. UDK 脚本编译运行
  16. 最近玩起了视频,把一点工作总结一下。
  17. 风光储互补发电系统直流微网 风能和光伏采用最大功率点跟踪控制 蓄电池为双向DC-DC变换器,能够充放电,可设置充放电容量极限
  18. 触发器的四种应用场景
  19. Linux重启Tomcat
  20. 某高科技公司java笔试题。

热门文章

  1. 【软考】--软考总结
  2. 力扣leetcode之10.11峰与谷
  3. CF 305B Continued Fractions
  4. Oracle中的日期和字符串互相转换以及格式化
  5. Android文件系统分析
  6. 吕本富:中国互联网太乱 完全没有游戏规则
  7. 数字转日期 pl/sql_PL / SQL程序检查数字是奇数还是偶数
  8. 中科院计算机跨专业考研,往届生跨考北航计算机经验心得
  9. shell中for循环
  10. 用xcode编译c++代码