架构漫谈读后感
架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。专栏的目的是希望能抛出一些观点,并引发大家思考,如果你有感触或者新的感悟,欢迎联系专栏负责人Gary(微信greenguolei)深聊。
本文是我读过漫谈架构系列专栏后的理解和感悟:
(一)、架构是什么?
在我看来,架构之所以产生是因为一个工作其工作量太大,一两个人不能很好的完成,所以就要多人合作,共同完成;这时,怎么快捷、高效的完成这一项工作就成了一个问题,然后人们就引进了架构的概念,架构就是对一项工作分工给多人的一种方法、理念。
现代社会越来越庞大,那么就需要更好的架构来对大量的工作进行分工,共同让这个社会平稳的发展下去。
(二)、认识概念是了理解架构的基础
架构实际上解决的是人的问题,而概念是人认识这个世界的基础,自然概念的认识就非常的重要。这一篇文章给我们讲解了概念是什么,读完这一篇文章,我思考了很久,我发现了一个学习新知识的好方法,在学习一项新的技术时,当理解了该技术的含义,作用,那么就能快速的上手了。
(三)、如何做好架构之识别问题
上面说到了,架构就是来解决复杂问题的一种理念,那么首先要找到问题在哪儿?这时就要求我们不能带有主观的思想去了解问题,不能想当然的给出自己理解的问题的解决方案,关于这方面在《你的灯亮着吗》一书中有更加全面、丰富的讲解,推荐大家阅读一下。
存在的前提。架构是指挥这些技术来解决问题的。
(四)、如何做好架构之架构切分
前面几篇讲解了架构是用来解决复杂问题的一种理念、方法,那么提示如何解决的呢?这就要讲到怎样去做架构了,架构用来将复杂工作分给多人来做,让人们不再那么辛苦,让一个问题得以更方便、快捷的解决,这一篇就讲到了如何来切分工作,对各方面的工作进行调整的方法,有几个原则:必须在连续时间内发生的一个活动,不能切分。切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。切分出来的部分,不应该超出一个自然人的负载。切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。
(五)、什么是软件
了解了架构是什么,识别出问题所在,切分对个人来说负载太重的工作,那么我们要做软件,软件是什么呢?我个人认为:软件就是用来帮助人们完成目一项特定的工作所做的工具,它让人们从复杂的工作中解脱出来,由于人们的工作越来越复杂,软件相应的也越来越庞大,这时软件工程师的任务也越来越重,我们需要多个人合作来制作这样一个工具,帮助从事其他工作的人解放出来,这时我们开发软件就要用到架构了。
(六)、软件架构到底要解决什么问题
既然开发软件也要用到架构了,那么架构在开发构成中起到什么作用?
这就要看它到底解决什么问题了:
软件开发可以切分成两个,即部署和代码,所以当我们说软件架构的时候,我们一定要讲清楚,究竟说的是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。
(七)、架构师没有话语权,还架什么构
架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,自然而然的架构师就拥有了强有力的影响力,肯定会是一个leader。但是只是民意上的leader是没有用的,不能完全发挥架构师的能量。
架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。
相反的,具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是很健康向上的,因为每个人的权利和义务就是比较均等的。并且这类领导对于组织成员权利和义务的对等状况会非常的敏感,会及时的调整组织架构,在问题发生之前就解决了。这样这个组织就会具备更好的抗压能力,能够更好的为这个组织的客户服务,这个组织的成员内心一定都是比较平衡的,每个人的能力都能够得到比较好的发展。
(八)、从架构的角度看如何写好代码
在我们代码的实践当中,尽量不要让代码成为系统长大的瓶颈。这是一个很重要的标准,我们的代码怎么才算好,当我们要扩充系统时,如果代码变成了阻碍,那么,从架构方面看,这代码就不是好代码了。
(九)、理清技术、业务、和架构的关系
在软件设计开发的过程中经常会看到,很多所谓的架构讨论实际上只是在讨论某种技术。在很多人的概念里面,架构和技术实际上是等同的。学会了几种技术,就认为自己是架构师了,甚至是学习的技术越多,就觉得自己的水平越高。要知道任何技术都是为了解决某种问题而存在的,学会了技术,并不代表自己能够解决问题,这一点非常的重要。学会的技术的 多少,所带来的差别只是自己解决问题的手段多了罢了。但是手段多了就一定是好事吗? 很多时候,学习的技术越多,越不知道采用哪种技术好,所谓“乱花渐欲迷人眼"。
在我看来,我认为:技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。架构是指挥这些技术来解决问题的。