架构的产生是为了把事情做的更好。每个人的能力和时间都是有限的,并且因为人的结构的限制,人同时只能做好一件事情,这样就不得已导致了分工的产生。既然分工发生了,原来由一个人生存所必须的所有事情,就变成了很多不同分工角色合作完成这些事情。在每个人都必须完成所有生活必需品的生产的时候,是没有架构的(当然在个人来讲,同一时刻只能做有限的事情,在时间上还是可能会产生架构的)。一旦产生的分工,就把所有的事情,切分成由不同角色的人来完成,由此产生利益最大化。
架构产生的动力:必须有人执行的工作(不需要人介入,就意味着不需要人改造,也就不需要架构了);每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做一件事情);每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,从而缩短时间);人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了);目标系统的复杂性的限制(如果个人就完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,到考虑更多的是如何提高质量,提高个人的时间效率)。架构就是在长期的工作活动后,积累下来的实践。
总结起来,架构就是:
1、 根据要解决的问题,对目标系统的边界进行界定。
2、 并对目标系统按某个原则进行切分。切分的原则,要使不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
3、 并对这些切分出来的部分,设立沟通机制。
4、 根据3,使得这些部分之间能够进行邮寄的联系,合并组装成一个整体,完成目标系统的所有工作。
架构实际上就是指人们根据自己对世界的认知,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。架构的产物自然即使对问题的分析,以及解决问题的方案:包括拆分的原则以及理由,沟通合并的原则以及理由,以及拆分,拆分出来的各个部分和合并所对应的角色和所需的核心能力等。
认识概念的误区,有效的去认识概念,明白概念背后的含义,以及如何利用对概念的理解,快速的进行学习。掌握这些原则,会有助于帮助我们在架构阶段,快速的识别和定位问题。
成长为架构师需要真正投入思考问题。我们在处理问题的时候可能会出现一下问题,犯这样的错误:
1、 被告知要处理一个问题,但交过来的实际上是一个解决方案,不是问题本身。
2、 被告知要处理一个问题,直接通过直觉就有了一个解决方案,马上考虑解决方案如何落地,或者有几种解决方案,选哪个合适(我自己经经常犯类似的错误)。
如何识别问题呢?识别问题的前提就是要搞清楚:是谁的问题。这个问题搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。否则,每个人都做了很多工作,每个人都认为自己做的是对的,因此没有一个人对结果满意。真正的问题没有被发现,自然也就没有被解决,那么后续还得收拾残局,还要继续解决问题。实际上自己的工作没有完成,反而更多了。把原因归结为沟通问题也是可以的,但对于解决问题并没有太多帮助。架构师应该问的第一个正确的问题就是:目标问题是谁的问题。只有真正明白是谁的问题,才能真正的完成自己的任务,真正的把问题解决掉,而不是反过来。
找出问题的主体,是做架构的首要问题。我们要解决的问题一定是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。再进一步,我们一定要明白,任何找上架构师的问题,绝对不是真正的问题。因为如果是真正的问题的话,提问题狗来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更重要。