架构漫谈读后感
今天读了王概凯的九篇架构漫谈,收获颇丰,在这里做下笔记,并围绕软件架构师如何工作进行谈一谈。
王老师用人类发展文明史为例子,在人类的发展进程中,如果我们要处理一件非常复杂庞大的事情的时候我们常常需要进行团队合作,如果选择单打独斗的话会浪费大量的时间和精力,而且一个人在不同方面总有缺陷,不可能一个人可以完成所有的任务,在自己不擅长的方面会更加吃力,因此,如果这个时候我们集合大家的力量,让不同的人选择自己擅长的岗位去做,那么就可以尽可能地放大优点,在保证工作效率的同时还可以极可能的提高工作质量。也借此社会的架构的概念自然出现。在此基础上将社会架构的概念迁移到软件上就是:
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
- 并对这些切分出来的部分,设立沟通机制。根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作
其次是做好架构的基础步骤就是识别问题
先来看我们处理问题的时候会犯什么错误;
- 被告知要处理一个问题,但是交过来的实际上是一个解决方案,不是问题本身
- 被告知要处理一个问题,直接通过直觉就有了一个解决方案,马上考虑解决方案如何落地,或者有几种解决方案,选哪个合适
这也就是我们常常说的甲方乙方进行沟通交涉的时候驴唇不对马嘴
所以在进行沟通的时候要注意的就不仅仅是解决问题,而是应该学会发现问题,这往往比解决问题更加重要。
我们大多数时候都是在埋头解决问题,可我们很少考虑过我们解决的是谁的问题,在聊天中被我们自动忽略的主语成为了我们犯错的主要原因,我们每天忙碌在解决问题中,解决来解决去,最终有可能问题越来越多,有可能走了弯路,有可能解决的不是用户想要解决的问题,还有可能解决错了。因此,在与人沟通的时候我们要明确问题的主语,我们要解决的是什么问题,再切身处地的去思考要如何解决。
那既然谈到了解决问题那我们就要确认清楚到底是要解决谁的问题,解决谁的问题。这才是我们我们打到上面所谈到的解决问题的正确认识的标准。
再次,要做好架构的切分,切分就是对利益进行调整,不能在资本的介入下出现百分之九十九的利益被百分之二的人掌握,这样的利益分配不均会大大降低效率。
- 架构的切分的导火索是人的负载太重。
- 架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
- 架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
其次就是现在行业中最大的问题,就是管理者与程序员的沟通存在代沟.王老师提到,架构师对时间有恐惧,因为架构师和程序员不一样,程序员是明确的为自己解决问题,没有很严格的时间限制,只需要在规定时间解决自己面前的问题即可,但是架构师不是,他要在规定时间内完成对产品的理解,汇聚成易懂的语言传递给程序员,他需要有充分的理解能力和思考能力,善于发现问题,解决问题,准确无误的传达信息,在语言和沟通方面要很擅长。否则,未来,越来越少的人找你合作,逐渐没有收入,被淘汰。同时,架构师最好是领导职位,例如小组长等等,因为他会根据要求分配任务,也就是切分,他要考虑到每个人的利益,为人民服务,才能成为一个人心所向的好leader。所以,架构师需要有实权!!
更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。而在认识问题之后架构师就要开始对其进行切分,因为工作量的庞大,不可能让一个人完成全部工作,那切分的依据是什么呢?必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要 10 月怀胎,不能够切成 10 个人一个月完成。切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会导致新的架构的切分。
浙公网安备 33010602011771号