原创作者,公众号【架构设计思维】,欢迎关注公众号,转载文章请注明出处哦。
所谓架构师,通俗的说就是设计师或结构设计者,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。架构师一直都是程序员技术路线梦寐以求的追求。对一个架构师来说,学习和思考是贯穿整个职业生涯的事情。知识是能力的基础,而思维则是行动的先导,一个人事业上能获得更大的发展,一部分是由于他的专业技术,另外一大部分需要依赖他的软性技能。如果把专业技能称为硬实力的话,那么逻辑思维、解决问题的能力、书面沟通能力、领导力统统归为不可或缺的软实力范畴。在越来越多的技术课程涌现的今天,很少人去重视思维养成对于技术精进的重要性。今天我们就和大家谈谈优秀架构的五大能力:平衡取舍、高瞻远瞩、系统思维、灰度决策、服务设计。
一、权衡取舍
一个软件架构总有会各种各样的问题,没有一个软件架构是完美的,也没有一个架构能普适所有的应用场景。比如,是采用传统的单体架构体系,还是时下风靡的微服务架构体系,你要能够从团队人员层次和能力、组织和公司的发展现状和时机等重点因素中做出权衡,你没法通过数据建模的手段去完成这个工作,你能依靠的,只有你的综合素质和系统思考能力。
从时机上说,如果单体应用就可以满足业务发展需求,那么,就没有必要上微服务,否则,反而增加了整个系统链路的负担。如果团队的成员能力还不足以支撑起微服务体系相关的所有工具化,服务化和平台化建设,那么微服务架构也不是最合适的方向;如果公司业务还处在四处拼杀,生死未卜的时候,公司的现状也不会允许你去搞各种完善的基础性建设,活下来才是第一位的。
对于架构师来说,你要关注的不是“点”,而应该关注的是尽可能多的“点”,进而是连接点的线,到面,甚至到多维空间。平衡取舍能力确保架构在现有资源约束下,做出最合适的的判断。
二、高瞻远瞩
合格的架构师都是好的战略家,前瞻性眼光是他们起码的要求,而系统性的思考则是将这些前瞻性眼光落地的必备素质。架构既看重前瞻,又看重落地,落不了地的架构只是空中楼阁,所以,如何将架构落地,考量的就是一名合格架构师的综合素质和系统思考的能力。因为架构的规划和落地依附于现有的环境因素很多且不可重现,所以,合格的架构师要能够尽可能多的将对架构有过多权重影响的因素考量进来,然后做权衡,抓住重点因素,最后集中兵力重点突破。
在数字化的大背景下,项目的迭代周期越来越快,基本上以天或周为单位,而软件架构的调整确实漫长的过程,可能需要月或年的周期来调。因此,在设计架构师就需要架构师具备预判意识,对不确定的事情做出预判和选择,把握架构的方向。
三、系统思维
系统思维是一种逻辑抽象能力,也可以称为整体观、全局观。系统思维是指在考虑解决某一问题时,不是把它当做一个孤立、分割的问题来处理,而是当做一个有机关联的系统来处理。简单来说就是对事情全面思考,不只就事论事。是把想要达到的结果、实现该结果的过程、过程优化以及对未来的影响等一系列问题作为一个整体系统进行研究。
架构的本质是管理复杂性,抽象、分层、分治和演化思维是架构师征服复杂性的四种根本性武器。掌握了抽象、分层、分治和演化这四种基本的武器,你可以设计小到一个类,一个模块,一个子系统,或者一个中型的系统,也可以大到一个公司的基础平台架构,微服务架构,技术体系架构,甚至是组织架构,业务架构等等。架构设计不是静态的,而是动态演化的。只有能够不断应对环境变化的系统,才是有生命力的系统。所以即使你掌握了抽象、分层和分治这三种基本思维,仍然需要演化式思维,在设计的同时,借助反馈和进化的力量推动架构的持续演进。
架构师在关注技术,开发应用的同时,需要定期梳理自己的架构设计思维,积累时间长了,你看待世界事物的方式会发生根本性变化,你会发现我们生活其中的世界,其实也是在抽象、分层、分治和演化的基础上构建起来的。另外架构设计思维的形成,会对你的系统架构设计能力产生重大影响。可以说对抽象、分层、分治和演化掌握的深度和灵活应用的水平,直接决定架构师所能解决问题域的复杂性和规模大小,是区分普通应用型架构师和平台型/系统型架构师的一个分水岭。
四、灰度决策
所谓灰度决策是指在掌握信息不完全的情况进行的决策。在日常生活中,面对重大事项做决定时,经常遇到需要决定事被道德绑架,而出于对人权的尊重和人类基本的权利尊重,决策常常会使人偏离理想的目标。比如:一个历史包袱很重的系统,代码混乱,多重交接,已经不堪重负,即将要宕机,到底是应该原址重建还是重新搭建一套系统来替换它。这就需要决策者,既要正向思考,采取什么方案更合理;也要反向思考,明白自己的底线是什么,什么事情是可以接受的、什么是绝对不能接受的。每个决策者的底线不同,决策也就不一样。但不管最终的结果如何,希望我们都能做出一个不后悔的决策。
五、服务设计
服务设计是有效的计划和组织一项服务中所涉及的人、基础设施、通信交流以及物料等相关因素,从而提高用户体验和服务质量的设计活动。服务设计以为客户设计策划一系列易用、满意、信赖、有效地服务为目标广泛的运用于各项服务业。服务设计既可以是有形的,也可以是无形的;服务设计将人与其他诸如沟通、环境、行为、物料等相互融合,并将以人为本的理念贯穿于始终。简单来说,服务设计是一种设计思维方式,为人与人一起创造与改善服务体验。这些体验随着时间的推移发生在不同接触点上。它强调合作以使得共同创造成为可能,让服务变得更加有用,可用,高效,有效和被需要,是全新的、整体性强、多学科交融的综合领域。
推荐书籍: