下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

什么是软件架构师?如何成为一名合格的架构师?

作者:课课家教育     来源: http://www.kokojia.com点击数:1327发布时间: 2016-06-28 08:00:47

标签: 软件架构架构师软件设计

  一、什么是软件架构

  软件架构涉及到软件本身的业务体系,和所虚拟的业务体系。

  软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。

  每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。

  所以当你说软件架构的时候,一定要说清楚是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。

  有人说,架构是进化出来的。架构实际上是量在不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化

什么是软件架构师?如何成为一名合格的架构师?_软件架构_架构师_课课家

  二、什么是架构师

  明白了什么叫架构,那什么是架构师呢?架构师是软件行业中一种新兴职业,在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。他必须对开发技术非常了解,并且需要有良好的组织管理能力。

  下面来讨论一下,如何成为一名合格的架构师:

  在工作中,如果一个人只是致力于完成自己的工作,以做好自己的工作为主要目标,那么最多只能成为一个工匠,而不能成为一个架构师。架构师的能力要求很高,包括有:兼具多领域知识和技术前瞻;兼具抽象思维和深度(问题到本质);兼具感性(沟通)和理性(平衡)。

  当你的工作是社会分工中的一环,需要帮助别人解决问题,并且把别人的问题当成你自己的问题时,你就有了时间压力,潜意识里会自然而然的有一种对时间的恐惧。这个恐惧在潜意识里就会想方设法推动你采用各种手段,即使加班加点,以便及时地完成工作,换取报酬。

  如果你还活在这个恐惧里,是不可能成为架构师的。要成为架构师,必须要超越这个恐惧才能够看清楚,去解决别人的问题,而不是只解决自己工作的问题。因为仅仅完成自己的工作,不一定就解决了别人的问题。如果别人的问题没有解决——即使你认为你的工作完成了——你的工作实际也没完成,因为你的工作是否完成,是别人说了算的,不是你自己。

  这个对时间的恐惧和压力,其实就是你把完成自己的工作当成了你的最大利益。如果别人的问题没有彻底解决,就会觉得自己的付出不值得,你的利益实际上是受损了。这和你以为的恰恰相反,因为你得到的工作会越来越少,别人会越来越不愿意依赖于你。

  同时也说明,你对自己所从事的工作还没有足够的自信。你解决自己的问题都有困难,才会在意,并感到恐惧。如果你把完成别人的工作当成是你的最大利益,这个对时间的恐惧自然就会消失,这个时候就自然而然的开窍了,就知道怎么去发现问题了。只有做到这一点,才能在自己所服务的领域建立起自信,成为一个合格的架构师。

  要克服对时间的恐惧和压力,刚开始可能有点困难,因为没有自信。但只要成功了一次,自信就开始慢慢建立起来了,这个时候也是你慢慢变成架构师的时候。

架构师

  三、如何发现“是谁的问题”

  当你真正专注于别人的问题时,你的理想、抱负、对技术的追求都不算什么了。这些理想、抱负以及对技术的追求,不就是要达到自己的利益吗?只有帮助别人解决了问题,这些理想抱负和对技术的追求才可能实现,否则这些追求又有什么意义,能得到什么利益?

  这时就会真正地开始思考:别人究竟有什么问题?其实这和你面临的问题一样,别人的问题也是想如何获取更多的利益。当你想通了这一点,自然也就能想明白别人的问题了。此时你就能问出正确的问题:如果问题不解决,究竟谁会有利益的损失?如果问题解决了,究竟谁会有收益,谁的收益最大?回答了这两个问题就找到了问题的主体。只回答一个是没有用的,因为很多时候这个世界的事情,权责是不对等的。明白了这两个问题,只有让事情的权责对等起来,让每个人为自己的权利产生的结果负有义务,大部分时候你根本不需要做什么,问题也都解决了。这才是最高明的架构师。

  四、架构师的权利和义务

  架构师是要去平衡别人的利益,甚至会调整别人的利益。一旦架构师是全心全意的为别人的利益服务,自然而然地,架构师就拥有了强有力的影响力,肯定是一个领头羊。但如果只是民意上的领头羊,不能完全发挥架构师的能量。

  架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好地把利益的调整落到实处。所以很多公司设了架构师的职位,但是并不具备调动组织架构的权利,那么这个架构师的职位就形同虚设。架构师只能够通过建立某些流程来行使架构师的权利,比如强制架构review,反而会造成很多内部不必要的冲突,最终都会导致这些流程流于形式,得不偿失。相信很多人都已经经历过这些,但很少人会去探讨原因。

  相反地,具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是健康向上的,因为每个人的权利和义务是比较均等的。并且这类领导对于组织成员的权利和义务的对等状况会非常的敏感,会及时的调整组织架构,在问题发生前就避免了。这样的组织就会具备更好的抗压能力,能够更好地为这个组织的客户服务,这个组织的成员内心一定都是比较平衡的,每个人的能力都能够得到比较好的发展。可能你又会说,这不是管理学的知识吗?是的,但也是架构的问题。所有架构的核心就是组织架构。或者说,一个合格的组织领导人,一定必须是一个合格的架构师。

  架构师的义务就是——发现问题并且解决问题。架构师必须能够超越对时间的恐惧,也就是说必须具备一定的自信,哪怕是装的,去真正的发现问题的主体,识别真正的问题,并把这个行为变成为自己面对问题的第一反应。架构师还必须要明白,所给出的解决方案——架构的分拆、合并方案,只有让问题的主体权责对等,才能够真正解决别人的问题。只要明白了问题的主体,以及主体的利益所在,做到这一点就没有问题了。

  五、架构师和技术

  很多人会问,特别是做软件行业的,架构师是不是需要学习技术,甚至是学习语言?如果一个架构师还有这个困扰——就如问这个问题的人,说明目前还不具备做架构师的能力,或者说还不具备对自己领域(哪怕是技术领域)的自信,更别谈业务领域了。

  技术和语言都是用来识别和解决所服务的主体的权责,保护并提升所服务的主体的权利的。特别对于软件领域来说,必须明白软件本身是怎么回事,解决什么问题,还要解决软件所服务的对象的领域本身是怎么回事,解决什么问题,这就要求更高了。语言和技术应该是随手拈来才对,对于架构师这些都是工具。学习技术和语言,如果明白了这些技术和语言要解决的是谁的问题,什么问题,学起来是非常快,非常容易的。

  同样,采用哪个技术或者语言,只要某个技术或语言所解决的问题的主体,以及所解决的问题,和自己所面对的问题的主体和这个主体要解决的问题,这两者是匹配的,那么这个方案的成本是最低的,所采用的技术或者语言就是靠谱的。没有趁手的工具或语言的情况下,自己设计一个也不难,因为很清楚自己要什么。要不要自己做,无非是一个成本问题,也就是利益问题。并且从这个思路下去,选择的工具和语言肯定都是最简单的,成本是最低的。因为架构毕竟解决的还是人的利益问题,成本越低越好,这个成本当然是长期总体成本,不是眼前的短期成本。

  软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化。架构师必须具有丰富的软件设计和开发经验,具有良好的沟通能力等。

赞(26)
踩(3)
分享到:
华为认证网络工程师 HCIE直播课视频教程