来自ZeroMQ的软件架构心理学
《ZeroMQ:Messaging for Many Applications》阅读笔记
简约文化
Zero含义:零代理,零延迟,零管理,零成本,也代表贯穿项目的简约文化。
开源社区
如果你想建立真正的大规模和持久的软件,那就把目标放在建立一个自由软件社区上。
开源开发模式
第一种:大企业贡献代码为别人来打破市场格局。例如:Apache基金会
第二种:微型的团队或小公司建立自己的梦想。最常见,可以商业化。
第三种:云集在一个问题领域上的积极和多样的社区。例如:Linux。
ZeroMQ渴望拥有第三种,即Linux的模式。
社区不仅选择最好的问题来解决,而且它在最低限度上仔细地解决了它们,然后在之后几年,甚至几十年中负责维护这些问题的答案,直到它们不再重要。
软件的本质
软件是关于人的。软件的真正本质是人的本质。
编程是假扮成艺术的科学。软件的本质并不是算法、数据结构、语言和抽象。这些只是我们制作、利用并扔掉的工具。
软件架构定义(维基百科):一组需要根据系统推理的架构,其中包括软件元素,它们之间的关系,以及两者的性能。
大型建筑物本身是没有意义的,它们如何对人类利用发挥作用才最重要。而在软件方面,人类利用开始于制作软件本身的程序员。
架构心理学
软件架构的核心问题是由人的心理,而不是技术驱动的。
当团队变得更大或是他们必须跨越更大的工作地域工作时,他们似乎变的更愚蠢。
两个最重要的心理因素是我们人类真的不善于理解复杂性,并且我们真的善于用合作来对大问题分而治之。我们是高度社会化的类人猿,有点聪明,但只在合适的人群中。
如何组织比我们是谁更重要。
同样的团队,通过不同方式来组织,可以产生完全不同的结果。普通人如果连接良好,其表现可以远远超越用差的模式连接的一组专家。
软件架构的心理元素列表
愚蠢
我们的智力带宽是有限的,所以我们都在某些方面无知。由此可见,架构必须简单易懂,每次设计架构都要遵循简单胜过功能这一头号法则。
自私
我们的行为只是出于自身利益,因此架构必须有利于整体利益的自私行为创造空间和机会。
懒惰
我们做了很多假设,其中有许多是错误的。当我们可以花最少的努力获得结果或快速测试假设的时候,我们是最幸福的。
恐惧
我们不愿意承担风险,特别是如果它们可能会让我们看起来愚蠢。对失败的恐惧是人们整体愚蠢地服从并遵循一个团队的一个主要原因。
服从是最幸福的,有清楚的解释和记录,以及公平地强制执行,我们每次都会自然地选择正确的道路。
骄傲
我们强烈地意识到我们的社会地位。
架构必须确保我们制作的每一个部件都有我们的名字。
贪婪
我们最终是经济的动物,架构必须给我们投资于促成这件事情的经济激励。
也许它提高了我们作为专家的声誉,也许它是通过贡献一些技巧或组建来赚钱。
请把架构视为一个市场,而不是一个工程设计。