《架构漫谈》读后感——软件架构师的工作
软件架构是软件开发中一个非常非常重要的过程。我们都知道在一个软件开发项目中,软件架构师是一个团队的核心,他负责整个软件开发的分工和沟通的安排,组织整个
团队进行分工合作,高效率的完成软件开发任务。
在之前的代码编写中,大多数是自己独立开发,编写代码和测试代码。从来没有加入过实际项目开发过程,也少有团队开发分工的经验,所以对这个软件架构的过程一点都
不了解。在小民哥的强烈推荐下,我十分"情愿"的打开了王概凯的架构漫谈系列博客,准备了解一下架构的内容。
架构漫谈分为九部分,每一部分都有不同层次的概念和内容。在第一节软件体系结构课上,我们就完成了前四章的阅读和测试。作者在前四章中主要抛出了架构这个概念,
通过举例的方法,详细解释了架构的出现背景和架构的含义。一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。在最早期,每个人都完全独
立生活,衣、食、住、行等等全部都自己搞定,整个人类都是独立的个体,不相往来,自然没有分工,也没有架构的概念。但是随着社会的进步,慢慢就形成了群落和氏族,群
居人口数量变得十分庞大,一旦多人分工配合作为生存的整体,力量就显得强大多了,所以也自然的形成了族群:有些人种田厉害,有些人制作工具厉害,有些地方适合产出粮
食,有些地方适合产出棉花等,就自然形成了人的分群,地域的分群。当分工发生后,实际上每个人的生产力都得到了提高,因为做的都是每个人擅长的事情。以人类的发展过
程为例子,我们就得出了架构的概念。把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制
,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。
当然,我们作为人类来说,一定是以我们人类为主体去谈架构的。也就是说架构是建立在人的认知世界的基础上,是用来解决人的问题去提出的一个概念。架构是一个比较
抽象的过程,因为它看不见摸不着,但对于软件开发来说,是十分重要的。
架构是解决人的问题的方法。那么如何识别问题呢。作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题。找出问题的主体,是做架构的首要问题。当明白
了问题是什么后,我们需要探寻问题的原因是什么,解决方向在哪,需要做哪些事情,这是我们完成架构必不可少的基础。
一开始我们就提到,架构是分工和建立沟通机制的一个过程,分工一定是架构过程中最重要的一部分。
我们已经知道,随着社会的发展,分工是必然的,为什么呢? 这个背后的动力就是每个人自己的利益。每个人都希望能够把自己的利益最大化,比如:生活的更舒适,更轻
松,更安全,占用并享有更多的东西。但是每个人的能力和时间都非常的有限,不可能什么都懂,所以自然需要舍掉一些自己不擅长的东西,用自己擅长的东西去换取别人擅长
的东西。
我们作为一个软件架构师,切分的内容一定是自己亲自主刀。切分工作一定不是为所欲为切就可以,需要遵守切分的原则。
1.必须在连续时间内发生的一个活动,不能切分
2.切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。
3.切分出来的部分,不应该超出一个自然人的负载
4.切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的
5.确保我们不能违反人性,因为维护自己的利益,是每个人的本性
后面几个部分主要是课后自己观看的,主要谈软件实际开发过程中的架构问题,偏重实践内容。软件是我们日常生活中经常提到的一个概念,我们手机上,电脑上都安装各
种各样的软件,以保证我们工作和学习的正常进行。这是对于普通使用者来说的,但作为一个软件开发者,我们看待软件的角度就与之天差地别。随着互联网浪潮的冲击,软件
的要求和规模不再是之前的满足简单工作需要就可以,软件的规模也得到了极大的扩充。随着软件规模的扩大,做好一个软件也就越来越难了。早期的程序员写程序,主要是为
了帮助自己研究课题。这些程序员熟练了之后,提高了自己的生产力,并发现还可以帮助别人写程序,慢慢软件就变成了一个独立的行业。程序从早期由一个人完成,也逐渐变
成了由很多不同角色的人共同合作来完成。
介绍完软件与架构以后,作者就主要谈了架构师在软件开发中扮演的角色。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用
,更好的把利益的调整落到实处。反过来,具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是很健康向上的,因为每个人的权利和义务就是比较均等的。
并且这类领导对于组织成员权利和义务的对等状况会非常的敏感,会及时的调整组织架构,在问题发生之前就解决了。
看完架构漫谈以后,我们一定觉得架构师是软件开发过程中一个很牛的角色。很多人会觉得架构师只是当领导,分配工作和任务就好了,是不是不需要软件开发专业知识,
不需要代码编写能力就可以担任呢?这种困扰是错误的,因为你如果不对这个领域有绝对的认识和理解,就不可能充当开发的领导者,至少不是一个合格的领导者。在公司里
架构师基本上都是从代码编写程序员中挑出最优秀的,最智慧的,对这个领域理解最深的。
如果我们有心成为一个合格的架构师,就要从现在开始,多学多练。好好提升自己代码能力的同时,一定要多思考,站在一个更高的高度去看待软件开发过程,而不仅仅
是一个“码农”,代码的堆砌者。每一个程序员都要有成为架构师的梦想,那样你就成为了支配代码的人,而不是被代码支配。