阅读王概凯先生的架构漫谈https://www.infoq.cn/profile/1279517/publish
为什么会产生架构?
王概凯先生在第一讲中讲述的很形象了。当一份工作,一个人能力有限或者有限时间内完不成的时候,就需要多个人合作来完成。
公司不会说让一个人负责一个项目,而是一个团队。假设当你的团队拿到一个项目的时候,那么该如何分工呢?谁负责哪一块儿,他们之间如何联系,最后怎么把每一部分有机的合在一起呢?
这时候架构就诞生了,理解王概凯先生提出的产生架构的五个动力:
1.必须由人执行的工作
2.每个人的能力有限(每个人都有自己的一个弱点,分工,把合适的人放在合适的岗位)
3.每个人的时间有限(追求最短时间内完成,要求效率)
4.人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)
5.目标系统的复杂性使得单个人有限时间完不成
什么是架构?
根据要解决的问题,对目标系统的边界进行界定。对系统按照一定的原则进行切分,并且每一部分建立联系,最后再有机的合在一起。
如何做好架构之识别问题?
按照架构的定义,做好架构首先需要做的就是识别出需要解决的问题。
总结一下,要正确的认识问题,需要问两个问题:
1.这是谁的问题?(找出问题的主体,是做架构的首要问题。)系统为谁服务
2.有什么问题?
如何做好架构之架构切分?
之前有一次,我们四个人的团队合作一个小软件项目。但是由于我们四个都不懂都还没有接触过开发app(实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。这一点我们四个没有人做到)。于是我们就盲打莽撞地上手了,结果因为切分的不准确(架构的切分实际就是对系统的利益相关人的利益进行切分,这一点没有做好)。分来分去,最后也不懂得如何合在一起,所以最后干脆一个人就完成了(架构的切分的导火索是人的负载太重。对于这一点,我们就是没有导火索了)。这是一次失败的合作。
什么是架构师?
我认为如果想做一名架构师,首先进入公司,从最底层的程序员开始做起。当然也不能只是埋头做自己的工作,不会的请教别人,也要多帮助别人解决问题,帮别人解决问题就是成长的过程。如果一个人在工作中,只是致力于完成自己的工作,以做好自己的工作为主要目标,那么最多只能成为一个工匠,无法成为一个架构师。最后,干了几年,你积累了很多的经验,别人都向你请教问题的时候,你距离软件架构师也就不远了。做架构师的前提就是你要对软件了如指掌。