4

一些软件架构和架构师的想法

 3 years ago
source link: https://mrbenwang.github.io/post/2019/20190819-about-architect-train/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上周四的时候,公司的唯一一位国内的架构师,来做培训。顺便就记录一下,我的一些思考和想法吧。

在很早以前的时候,我的个人职业规划的目标就是架构师,在后续的工作,学习了解中。越来越认识到,成为一个架构师是如何的困难,渐渐也就淡忘了这个想法。在这次的培训中,他讲解的很多的内容,现在已经忘记的差不多了(完全符合学习金字塔),只能分享一下我个人的观点了。

学习金字塔

抽象归纳的能力

在我的观念中,这是一个非常非常重要的能力。现在的所有的科学结论,都是从这个能力上长出来的。
人类发明的工具,越来越多的代替人类的功能延伸(如望远镜延伸视野,起重机延伸力量);就连大脑也有逐渐被替代的趋势,如现今火爆的人工智能;但我个人认为,目前唯一最难最替代,就是抽象归纳的能力。

架构师的作用,应该是从现实的环境中,自下而上一层层的抽象归纳,将底层的大量问题,归纳为四五个高度抽象的问题;然后,解决这四五个高度抽象问题之间的逻辑问题,说不定还顺带解决了未发现的细节。
比如,就像物理定律的发现,在实际的实验中,归纳总结出规律,验证规律;再总结,再验证,不断地的循环。然后,达到普遍使用的情况。我现在想到的就是,麦克斯韦方程组可以解释宇宙间一切的电磁现象,恰当的数学形式才能充分展示经验方法看不到的整体性

如下图的举例,要解决实际的问题,解决方案的产生,应该是由从下而上来层层抽象归纳;但是在实际中,很多人都是从上而下来一步步的规划,这样就非常容易产生偏离,成为屠龙术:
可参考,项目管理和系统工程中的WBS工作分解结构

  • 具体的功能;实现代码的部分,大部分都是CRUD 增删改查的场景;
  • 模块,一系列功能的抽象;一般软件开发人员来实现,如人员管理,邮件管理模块;
  • 子程序,多模块的汇总;一般由核心程序员来做,比如,后台管理,邮件监控服务;
  • 领域,多个子程序互相辅助组成;一般是项目经理来划分的,比如,人力资源,财务等原子领域;
  • 单系统,多领域组合成,可以独立运作;大多是项目经理所在的层次,大项目也会有架构师的参与;抽象的层次会,如企业资源管理系统;
  • 多系统;一定是由架构师所决定的层次,要定义各个系统的职责范围,接口协议规则,数据的流转方式等;
  • 最上层是决策层制定的战略目标,比如提高周转率,降低失业率等,这些极度抽象的事物;
举例-软件系统分层

架构限制软件

个人认为,一个好的架构,是要在设计阶段就限制软件开发的发展方向功能范围,不允许到后期,出现南辕北辙的情况。目的也是为了,节约成本(时间成本资金成本)。
假设软件的目标,是制造一个三角形,在前期就通过各种工具定义规则,限定它不会变成四边形或五边形。突然想到,为什么不把三角形称为三边形,网上大概查了一下,只是大家的约定成俗。

架构的作用就是:

  • 定义,软件中的关键组织;比如,定义什么是人员,分哪些部门;
  • 制定软件中的运行规则;比如,接口的定义;协议的使用;
  • 整个软件生命周期中,人员的行为规范;比如,代码规范,文档规范;

大型的软件设计而已

越来越发现,软件架构就是大型的软件设计。有点类似于分形自相似

分析-引用自维基

分析-引用自维基

软件架构,是由一个个小型的软件设计组成;而一个个小型的软件设计,则是由更小的软件设计组成;而这个软件架构又是另一个软件中的软件设计。越来越像,那条著名的衔尾蛇(咬着自己尾巴的蛇)一样。没想到还真找到了,这副物理课本上的图片。

衔尾蛇

说起来很绕,但是如果理解了的话,可以解释很多的社会现象。比如,一个家庭,一个社区,一个县,一个省,国家。在结构上是相似的,也应了成语以小见大。但这也仅仅是结构上面的,千万不能管中窥豹

  • 一个个人在意的指标是:赚了多少现金,有多少现金存款,工作如何,社会关系如何等,这一类非常具象的事物。
  • 一个县市在意的指标是:引入了企业的数字,税收收入数字,犯罪率等,这一类的抽象程度明显高于个人;
  • 一个国家在意的指标是:CPI,PPI,PMI,M1,M2,基尼系数,GDP等等这类,大部分人听都没有听过的名词。更别说理解里面的内涵。因为国家的决策者,所处的高度,决定他们只能通过这一类高度抽象的事物,来**决定这辆“火车”**的行经方向

T型人才和π型人才

不太认同他的关于π型人才的观点,我认为只会存在T型人才。

  • I型人:只拥有单一专长,较无法拥有多领域的专长。
  • T型人:就是瞄准一个领域,不断向下钻研,形状像一个T字。可以使你有基本的广度以及一个专长领域的深度。
  • π型人:具有双专长、熟悉双领域、怀有双视野、适任双职位、拥有双文凭、或精通双外语的人,都可称为「π型人」。

因为,人类目前的领域中,不存在绝对的孤立。某一领域越深入,它的层次越高,就会可能与其他领域相连通。到最后,就到达所有学科的根基哲学

现代的物理学家,为了大统一理论前仆后继,认为宇宙间万物可以用一种理论来解释。

以麦克斯韦方程组为核心的电磁理论,是经典物理学最引以自豪的成就之一。它所揭示出的电磁相互作用的完美统一,为物理学家树立了这样一种信念:

物质的各种相互作用在更高层次上应该是统一的

架构师需要的三个条件

最后,我向他验证了一下,架构师的需要的三个条件。

  • 专业能力,T型的那一竖条;
  • 学习能力,不断扩展T型那一横条;
  • 培养训练,通用能力;整个源自于,我认为大部分领域中,都包含的能力。比如,交流沟通,自制力,团队协作,应变,创新等;

其实很早的时候(大概半个月前),我就有记录这篇文章的想法。可是,最近的行动力,真的真的真的很差劲。可能是受JLPT考试的打击,心态大崩导致的。哪怕非常的空闲,也想去玩游戏,看视频去浪费,也不愿意去学习,来写文章,这类有意义的事情。我目前的状态,还是处于非常😟😟😟。

凡夫畏果
菩萨畏因

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK