应老师的要求将王概凯老师的架构漫谈总体读了一遍,接下来谈一谈我读了之后的感想,大致上就是用自己的语言谈一谈短浅的理解。
首先我们要了解一下什么是架构?
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
- 并对这些切分出来的部分,设立沟通机制。
- 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
把所有需要完成的工作分成多份不同的工作,不同的人根据自己的特长做适合自己的工作而不必去做所有的工作,人与人之间通过沟通(不同的工作的人之间的沟通可能是不同的)构成有机的整体,从而是所有的工作完成。比如社会上有农民,医生,警察,老师,商人等等不同的角色,不需要每个人都去做生产,诊断,教学等所有工作,每种职业做好自己的工作就可以,通过交易和沟通变成有机的整体,从而得到粮食,安全保障和教育等资源。
2为什么要出现架构?架构的意义是什么?
没有架构的话,每人都需要做所有的工作,这样的效率十分的低下,就比如如果你想成长为一个心智健康的人,那么你需要独立完成接生,种地,教育等等工作,这涉及到很多的工作以及很多的技能,如果全部一个人干的话,精力肯定是不够的,精力不够就不可能向各个领域的更深层次挖掘,生存肯定是首要问题,这样的话每个人都要为基础的生存问题而忙碌,没有心思创新,社会就无法进步,也没有能力应对发生的一些灾难,比如此次疫情,如果没有架构后果不堪设想,每个人自己的生活都是问题的话又怎么能去研究疫苗,建设医院?所以架构的作用是毋庸置疑的。
架构解决谁的问题?
我认为架构解决的问题可大可小,他可以解决小到家庭,学校,企业,大到国家,社会,世界。一切都是为了满足人的越来越高的需求,提升质量,减少时间,更有效率的切分空间,并且让空间之间更加有机的进行沟通。
架构首先要确定边界也就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。作者以切土豆的笑话为例进行了讲解。
- 女主人提出一个问题,要切土豆下锅煮。
- 男主人有一个问题,女主人交代了自己必须要完成的一个任务。
每个人都是优先处理自己的问题,自然就选择了 2,完成了这个任务。这也是大部分软件工程师处理的方式,以自己认为对的方式完成自己的问题,没什么不对啊,也难怪能得到我们的共鸣。这个里面犯的错误是什么呢?
- 女主人公提出的实际上是解决方案,而不是烧土豆这个问题本身。女主人当时执行这个解决方案可能有困难,就把执行解决方案作为一个任务,委托给了男主人。
- 男主人得到了一个任务,尽心尽职地把这个任务完成了。
最后的结果是什么呢,男人做了很多工作,并且认为自己做的是对的,因此没有一个人对结果满意。因为真正的问题没有被发现,自然也就没有被解决,那么后续还得收拾残局,还要继续解决问题。事实上自己的工作并没有完成,反而更多了。把原因归结为沟通问题也是可以的,但对于解决问题似乎并没有太多的帮助。因为要改进沟通,这也是一个大问题。搞明白目标问题“是谁的问题,是什么问题”,当然也是需要沟通的。为了帮助自己更快的搞明白,首先要做的事是问正确的问题。架构师应该问的第一个正确的问题就是:目标问题是谁的问题。
要正确的认识问题,需要问两个问题:
- 这是谁的问题?2.有什么问题?
当得到的回答是支支吾吾的时候,我们就知道正确的方向在哪儿,以及需要做哪些事了。以我的经验,问题 1 会花比较多的时间,也是支支吾吾最多的地方,因为架构要解决的问题都是人的问题。但是一旦确定了答案,问题 2 就会变得非常容易。可以这样说,架构师的能力大部分会体现在问题 1 的识别上。
边界确定下来以后便是切分的工作。随着社会的发展,分工是必然的,为什么呢? 这个背后的动力就是每个人自己的利益。每个人都希望能够把自己的利益最大化,比如:生活的更舒适,更轻松,更安全,占用并享有更多的东西。但是每个人的能力和时间都非常的有限,不可能什么都懂,所以自然需要舍掉一些自己不擅长的东西,用自己擅长的东西去换取别人擅长的东西。
切分有以下几个原则:
- 必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要 10 月怀胎,不能够切成 10 个人一个月完成。
- 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。比方说妈妈 10 月怀胎,妈妈有权利处置小孩的出生和抚养,同样也对小孩的出生和抚养负责。为什么必须是这样呢? 因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。
- 切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。
- 切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会导致新的架构的切分
实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。
原文地址:https://www.cnblogs.com/2205254761qq/p/12364788.html