• 《漫谈架构》---读后感


      今天阅读了老师推荐的架构资料--“架构漫谈”,感到受益匪浅。这是由资深架构师王概凯执笔的系列专栏,kevin主要以自己的架构经验为基础,循序渐进,逐步对什么是架构、怎么做好架构、软件架构如何落地和如何写好程序等问题进行讨论。下面我先给大家介绍一下架构的基本概念,谈一下通过阅读资料自己对架构的理解,再围绕架构相关知识以及架构师如何工作来进行讨论。

      架构漫谈主要包括九篇文章,其题目分别是:“什么是架构”、“认识概念是理解架构的基础”、“如何做好架构之识别问题”、“如何做好架构之架构拆分”、“什么是软件”、“软件架构到底解决什么问题”、“不要空设架构师这个职位,给他实权”、“从架构的角度看如何写好代码”、“理清技术、业务和架构之间的关系”;

      在第一篇“什么是架构”的阅读中,kevin提到了架构产生的原因:

      1. 必须由人执行的工作(不需要人介入,就意味着不需要改造,也就不需要架构了)

      2. 每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象)

       3. 每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见 2,从而缩短时间)

       4. 人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)

       5.目标系统的复杂性使得单个人完成这个系统,满足条件 2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)。

      当一群人或者一个项目组同时工作的时候,由于每个人的能力是有限的,而且每个人的专长是有所不同的,所以为了达到资源利用最大化,我们需要对现有的资源进行重新的分配,然后获得任务的个体与其他的个体进行有效的沟通,共同完成一个目标。而架构总的来说就是:给系统制定边界(需要需求分析),然后将目标系统按照模块进行拆分,最后将拆分好的内容分配到个人手中,做好每个人在工作中的协调交流工作。

      通过阅读后面二、三章时,自己也领悟到了理解架构和做好架构之前的一个关键点:在分析问题或者在做架构之前一定要抓住问题的根本原因。当我们去解决一个问题的时候,一定要先把问题搞清楚,找出问题的主体,发现项目中存在的隐藏问题这才是一个合格的架构师应该具备的素养。

      在读到“如何做好架构之架构切分”开始的时候,感觉自己对架构切分不太理解。对于切分,作者是这样解释的:虽然在识别出问题的根本所在之后会解决很多的问题,但是总是有问你还是解决不了得,那就需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。而切分又必须要合理,即为了达到调整利益的目的,调整整个项目的运作之中产生的时间和空间上利益冲突的问题以此达到利益的最大化。

       在第五、六章的阅读中,作者就软件的开发历史展开,详细介绍了软件的发展动力以及软件发展带来的效益和这对软件工程师造成了什么样的影响从而导致软件架构这一概念的兴起到发展,以及架构师所要解决的问题,由此可见架构师这个职业是非常神圣的,其帮助团队减少损失、调度资源、使利益最大化,在整个团队开发中起着非常大的作用。

      在后几章的阅读中,我了解到要成为架构师,必须要克服对时间的恐惧和压力,架构师要解决的是别人的问题,而不是自己完成工作的问题,去真正的思考别人究竟有什么问题,这时便能问出正确的问题:如果问题不解决,究竟谁会有利益的损失? 如果问题解决了,究竟谁会有收益,谁的收益最大? 回答了这两个问题就找到了问题的主体。只回答一个是没有用的,因为很多时候这个世界的事情,权责是不对等的。明白了这两个问题,我们只要让事情权责对等起来,让每个人为自己的权利产生的结果负有义务,大部分时候我们自己根本就不需要做什么,问题就都解决了。这就是最高明的架构师。作为一名架构师,要去平衡别人的利益,甚至会调整别人的利益的。只有全心全意的为别人的利益服务,才能拥有强有力的影响力。并且架构师也要有权利去调动组织的架构,才能更好的发挥架构师的作用,更好的把利益的调整落到实处。而具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是很健康向上的。除此之外,对于架构师来说,语言和技术应该是随手拈来才对,因为技术和语言,都是用来识别和解决所服务的主体的权责,保护并提升所服务的主体的权利的,由此可见要成为一名优秀的架构师是很不容易的。

  • 相关阅读:
    angularJS中的MVC思想?
    angularJs初体验,实现双向数据绑定!使用体会:比较爽
    原生JS去解析地址栏的链接?超好用的解决办法
    HDCMS多图字段的使用?
    sublime添加到鼠标右键打开文件的方法?
    Ajax做列表无限加载和Ajax做二级下拉选项
    Atitit.获取某个服务 网络邻居列表 解决方案
    Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
    Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
    Atitit.prototype-base class-based  基于“类” vs 基于“原型”
  • 原文地址:https://www.cnblogs.com/610553824lyx/p/8524974.html
Copyright © 2020-2023  润新知