舍我其谁 2020-02-20
所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。在架构漫谈中举了早期社会每个人独立的生活方式慢慢到人们成为一个群体,成为群体之后人们为了生存产生的阶层 ,分工等等这样慢慢的形成了一个社会的架构。通过这个例子我大致把架构理解成:把一个任务分割成多个部分,每个人负责不同的部分,而且人们之间具有良好的联系沟通机制,通过每个人的有机结合使得这个任务得以完成。文中也举了多个例子对架构进行了解释,总体来说我对架构有了自己的一个认识。架构在很多行业都会存在,架构这个东西,从不同人的角度出发,所产生的架构可能也会千差万别,不同的拆分,不同的分工,不同的时间需要等等,这些都是不同架构产生的因素。所以软件架构师这个行业,我认为对一个软件的理解是十分重要的,如何化零为整,化整为零这些都是一个软件架构师应该具备的。
作为软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件架构和关键技术决策的人员。根据“第三届中国软件工程大会”的报告,在中国,未来五年,高端软件人才需求缺口达20万。而每年自动成长起来的软件架构师只有几百人,可见市场需求的巨大。首先是管理与技术两方面的能力,管理与技术两手都要硬,而技术是基础。技术不行、退化了,那只好做 PPT 架构师、首席布道师之类的。软件架构师是一位具有一定技术、产品、项目和团队等管理能力的高级程序员(编程高手),通常是一个开发团队里面技术最牛(或者比较牛)的少数几个人之一。架构师自身的技术水平和管理水平不行,常常会把团队带沟里,重要性可想而知。成为架构师需要较长时间的一线开发经验的积累。单纯看工作年限,一般 3-5 年可成为初级架构师,5-8 年可成为中级架构师,8-10 年以上可成为高级软件架构师,当然这只是大致的估计,具体达到何种水平还要看架构师的实际能力。经年累月,摸爬滚打,一位优秀的软件架构师需要掌握的技术能力很多,先说几个最基本的。而软件开发领域的建模能力,主要是指抽象的思考能力。普通码农通常用代码思考,负责一个系统中的几个小模块,所以思维常常局限在低层(low-level)、战术(tactic)的层面,考虑的基本上大多是某个功能、某个模块实现的具体细节与技巧。这是应该而且正常的,是团队合理分工的结果。而架构师,顾名思义,要负责整个系统的架构,尤其是涉及到一个系统(或子系统)全局的整体设计,所以往往需要高层、上层(high-level)的战略(strategic)层面的思考,这样就必然需要架构师经常进行建模(Modeling),对代码、模块、子系统和系统中的各种静态结构、关系和动态行为、交互等等进行抽象。所以,在架构师的日常工作中,经常看到各种各样的图表、图形符号和模型,是很正常的。可以说,不会建模,不习惯于用模型思考的程序员,是很难成为一名称职的软件架构师的。
架构漫谈中有提到过概念这个东西,对于一个物品的概念,我们大多是在长期的生活中有了潜意识,具体应该怎么定义这个东西,会有很大的差距,这就有件事,对于很多事物是出于常识对这个东西的理解,仔细想想之后对这个东西也会有个不同的概念,只要满足某一个需要的一个物体的一个功能,从抽象角度来说,就是算是一类物品。回过头来,根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。因此对于架构,想要做架构的时候,需要理解所做领域的东西。作为一名软件结构师也是这样,对于一个软件所属领域,必须要快速进入并掌握这个领域,然后才能够正确的解决问题。软件架构师还应该负责软件系统技术支持。也就是说软件架构师还应该负责软件系统的运行监控,负责软件系统日常运行过程中的技术支持,并负责解答用户疑问,还要参与软件系统日常运行过程中的问题排除并收集用户反馈的软件问题及改进需求。