为什么我们无法避免复杂?

栏目: 后端 · 发布时间: 5年前

内容简介:是因为我们无意识崇拜复杂吗? 本文来自软件开发并不是真正的编程。任何人都可以写一个十行程序。真正的挑战是复杂的系统。如果一个系统如此之大,以至于单个人无法理解并进一步开发,那么模块化等概念至关重要。模块化将系统划分为小单元,这样每个人都可以处理,然后复杂性成为主要挑战,由于这种复杂性,单个人不能再实施一个项目,只能依靠实施团队,这导致了组织方面的挑战。

是因为我们无意识崇拜复杂吗? 本文来自 艾伯哈德沃尔夫

软件开发并不是真正的编程。任何人都可以写一个十行程序。真正的挑战是复杂的系统。如果一个系统如此之大,以至于单个人无法理解并进一步开发,那么模块化等概念至关重要。模块化将系统划分为小单元,这样每个人都可以处理,然后复杂性成为主要挑战,由于这种复杂性,单个人不能再实施一个项目,只能依靠实施团队,这导致了组织方面的挑战。

康威定律

康威定律 在组织和软件开发方面非常重要。它指出系统架构代表实现系统的组织的通信结构。对于软件中的每个模块,都对应有一个组织单元;组织单元之间存在的沟通依赖,对应软件中的模块之间存在同样依赖关系。

然而,康威1968年的论文也描述了其他内容:如果一个组织想要开发一个大系统,由于大型团队中的沟通很困难,因此会在团队特定某个大规模下崩溃。由于沟通和架构相互影响,沟通不良会导致混乱的架构和额外的复杂性。

但康威更进一步:显然,如果可能的话,你应该寻求一个小团队可以实现的优雅解决方案。康威表示,经理的声望取决于团队的规模和他或她负责的预算。这就是为什么经理会争取尽可能大的团队和大预算。

起初这似乎不是问题。如果项目是由一个太大的团队完成的,那么有些人就会坐在那里什么都不做。这需要花钱,但不会危及项目或架构。但康威说, 帕金森定律 将会罢工。帕金森定律解释了为什么一些政府雇用更多员工,但仍然没有完成更多的工作。法律规定任务完全使用所有员工可用的时间。即使可以轻松快速地处理任务,也会有越来越多的人参与,直到组织中的每个人都忙碌为止。因此,在软件项目中,无论是否有必要,所有团队成员都将在项目上工作。因此,组织将成长,沟通将崩溃,架构将变得混乱。

Conway的洞察力现在已有50年历史,它特别有趣,因为它可以解释为什么一个大型重要项目可能有一个糟糕的架构,即使它是一个非常重要的项目也难以进一步发展。

本文所描述的管理者在没有意识到的情况下崇拜复杂性。他们希望尽可能庞大的团队,从而使问题变得复杂,因为大型组织可能导致架构崩溃。

软件架构师怎么样?

不仅管理者而且软件架构师有时会无意识地崇拜复杂性。例如,当我们使用诸如事件源,具有许多层或微服务的架构之类的模式而没有充分考虑特定上下文与复杂性的益处时,就会发生这种情况。

如果您想使用最新,最闪亮的技术,这也会导致过度复杂。毕竟,我们都在寻找技术挑战,并希望实施有趣的项目。现代方法,特别是复杂系统非常适合于此。

我们有时也会解决不存在的技术问题。这可能会产生非常通用或可扩展的解决方案,这些解决方案不是实际要求所必需的,因此会产生太多复杂性。

复杂性作为借口

一个特别明显的复杂性崇拜案例是“这对我们不起作用”。我们面临的挑战远远超过亚马逊或谷歌。“我听说过不同公司的员工。这些陈述令人惊讶:像亚马逊或谷歌这样的公司拥有极其复杂的IT系统。他们的经济成功直接取决于这些IT系统。尤其是因为这些IT系统,它们是世界上最有价值的公司之一。

乍一看,这些陈述可以被解释为具有防御性:亚马逊和谷歌拥有现代化的组织和云基础设施,但在公司更加复杂的环境中,显然不可能建立类似的东西。但也许这句话反映了骄傲。毕竟,你正在应对几乎前所未有的挑战。无论哪种方式,复杂性当然都有缺点,但也有一个优点,即您不必考虑某些方法,如云,持续交付或微服务,因为它们无论如何都无法实现。

因此,我们是否真的总是在避免复杂性是值得怀疑的。如果我们无意识地崇拜复杂性,那么仅仅专注于使设计尽可能简单和优雅的技术是没有用的。因此,实现这些无意识机制很重要。当然,仍然存在许多实际难以解决的复杂问题。

banq注:无意识崇拜复杂其实源自人之内心的自大。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ASP.NET揭秘

ASP.NET揭秘

Stephen Walther、汤涛 / 汤涛 / 中国电力出版社 / 2004-8-1 / 95.00元

本书是美国亚马逊网站同类书长期销售冠军,并受到微软ASP.NET小组项目经理Rob Howard的大力推荐,中文版由中科院专家汤涛老师翻译,经典、权威是本书最好的诠释。 本书共分10部分,31章,囊括了在.NET框架下架建ASP.NET应用程序的各个层面。每一章也都不是泛泛而谈理论,而是围绕实际样例代码来组织,让读者马上可以上手,并且加深理解。书中还包含了两个完整的、立即就可以用得......一起来看看 《ASP.NET揭秘》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具