漫谈架构读后感
软件架构师如何工作:
谈起软件架构师,那是无数个程序员码农向往的职业,对于大部分吃青春饭的程序员来说,如何完成职业转型,让自己老有所依是重中之重,而软件架构师便是大多数有着丰富编程工作经验的程序员转型之后的职业。
那么,我们首先来谈谈,什么是架构?
一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。甚至于很多架构师一说架构,就开始谈论什么应用架构、硬件架构、数据架构等等。
用一个最直观的例子来解释一下架构,在原始社会一个人如果想要活下去,他要自己盖房子自己狩猎,自己种植,他要独自完成所有的事情。但是当他的身边聚集了很多族人,每个人有他自己擅长的东西,于是有了分工,你去盖房子,他去狩猎,我在种植。
这样就不需要每个个体做所有的事情,只需要每个个体做好自己擅长的事情,这实际上就形成了社会的架构。
以上例子就是把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动。
也就是根据要解决的问题,对目标系统的边界进行界定。 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。 使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作,这就是架构。
想要清晰地认识到如何运用架构工作,理解一些基础概念是非常重要的,因为概念是人理解这个世界的基础。就比如说:什么是桌子?每个人的回答一定千奇百怪,它可以不是木头,他可以是三条腿,甚至是一条腿,大部分人对于这些每天都习以为常的概念,都自以为明白了,但实际上都是下意识的,并不是主动地认识。而这些微小的误差,经常会在程序探讨中产生致命的错误。
弄明白了概念这个词本身,再来谈谈桌子,桌子实际上是为了解决人坐在椅子上,手还能够支撑在一个平面上继续开展活动的问题,一般会和椅子配对出现。坐在椅子上工作,对着柜子有一个很严重的问题——不知道大家试过没有——就是腿无法展开的问题。当这么坐着超过半小时就知道是什么痛苦了。所以桌子的平面下方一定会有一个足够容纳膝部和小腿的空间,来解决这个问题。解决了这些问题的装置,才能称之为桌子。
弄明白了以上这些最基础的问题,一名软件工程师才向软件架构师迈向第一步。一般来说,如果把真正的问题找到,那么问题就已经解决80%了。这个能力基本上就决定了架构师的水平。
一名优秀的架构师,应该准确识别哪个才是真问题,哪个是假问题。软件架构师在识别问题的时候最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。同时,软件架构师大部分时候是在解决别人的问题,“别人”是谁,是值得好好思考的。明白了问题的主体,这个主体就自然会带来很多边界约束,只有真正明白了是谁的问题,才能够真正地完成自己的任务,真正地把自己的问题解决掉,而不是反过来。
总结一下,要正确的认识问题,需要问两个问题:
这是谁的问题?
有什么问题?
当得到的回答是支支吾吾的时候,我们就知道正确的方向在哪儿,以及需要做哪些事了。以我的经验,问题1会花比较多的时间,也是支支吾吾最多的地方,因为架构要解决的问题都是人的问题。但是一旦确定了答案,问题2就会变得非常容易。可以这样说,架构师的能力大部分会体现在问题1的识别上。