如何成为一名合格的软件架构师

如何成为一名合格的软件架构师

 

 20多年前在国内的一次讲座上,有人问我,中国软件最缺什么人才?我说是软件架构师。20年过去了,如果同样问题再来一遍,那么同样的回答也一样再来一遍。    中国软件近年来有了瞩目的成就,但许多IT组织依旧没有架构师的岗位。有的也往往名不副实,做的工作并不是软件架构师应该做的,薄弱的架构设计也是我做评估时发现的最常见弱项之一。    今天忙里偷闲和大家聊聊如何能够成为一名合格的软件架构师,架构师的具体工作任务、所需技能、必备的知识到底是什么。    任何一个软件系统的构建都是为了实现组织的某些商业目标,软件架构是连接这些目标和最终实现的系统的桥梁。从抽象的目标到一个实实在在可靠的软件系统的路上充满各种复杂、不确定的因素,令人欣慰的是,不少成熟的软件组织掌握了设计、分析、描述、实现软件架构的方法,用积累的技术支持组织的业务目标和愿景。    在众多软件架构定义中,我个人比较喜欢下面这个简单的描述:
一个系统的软件架构是一组用于理解这个系统的结构组成,它包含其中的软件要素,它们之间的关系,和二者的特性(系统的非功能需求)。
    有软件架构就要有人做软件架构的事,于是乎,模仿建筑行业建筑师的名头,软件有了软件架构师。他(她)成了业务和技术决策的支点,在整个软件开发过程中(不一定仅是项目早期),不断通过技术手段指导研发团队实现业务需求和业务目标。不言而喻,软件架构师是软件开发过程中最重要的角色(之一)。    那么什么样的人可以成为一名优秀的软件架构师呢?回答这个问题,我们需要明确一下架构师执行的工作任务,所需的技能,应具备的知识。 上海赛谷CMMI3认证

软件架构师的工作任务
这里我尽可能列出架构师可能执行的工作任务,这不意味着架构师会在所有项目中做所列所有工作,但一个称职的架构师面对相关场景,应该可以自如对应相关工作任务。我把工作任务分成技术和非技术两类,有志于成为架构师的同学,千万不要忽略这些非技术的工作。
1. 技术类的工作任务架构相关:- 设计架构- 分析评估架构- 记录架构- 对现有系统进行改造- 其他,如:就架构设计指导研发团队、参与组织架构过程的改进、参与各种设计评审等。
生命周期中其他技术任务- 管控需求,特别是影响架构的关键需求,如软件系统的质量属性;还有客户的关键设计诉求。- 产品实现过程中,推荐开发方法和编码规范,指导代码复用。- 在测试过程中,帮助建立以架构为基础的测试流程;支持系统测试、现场测试、缺陷修复。- 评估影响组织发展的新技术- 进行新工具和新技术的可行性分析,站在架构角度为组织选择可用的新工具和新技术。 2. 非技术类工作任务- 管理工作:作为主要技术专家支持项目管理工作;作为团队信任的技术负责人,管理团队的技术工作;从技术角度,为管理层提供项目可行性建议,同时在项目中担当项目经理和开发团队的桥梁。- 组织支持工作:参与组织的架构能力提升的相关工作及其他研究工作;支持产品在市场中推动以及售前支持;参与组织知识产权的管理。- 商业支持工作:将组织的商业策略转换成技术愿景、策略;帮助组织理解软件架构的业务价值;研究客户和市场的趋势,保证软件架构有效支持组织的商业目标。- 技术领导工作为新的或潜在架构师做传、帮、带的工作;为组织制定技术趋势分析和路径图。- 团队架构技术指导、培养工作:指导培养架构团队;成为项目团队的技术教练和啃硬骨头的人。CMMI3认证

软件架构师所需技能
    看看前面列的架构师众多职责就知道他们需要较为广泛的技术、非技术的技能。前面架构师技术类任务的描述也揭示了他们应掌握的技术技能。这里,我们只聊聊软件架构师所需的非技术技能。- 沟通能力:口头和书面沟通能力;将复杂问题转换成可以理解的简单问题的能力;听、访谈、咨询、讨价还价的能力。- 处理人际关系能力:高情商绝对有助于做好架构师的工作。- 领导能力:决策、创新、影响他人、建立权威的能力。- 工作负载管理能力:同时处理多个复杂任务的能力。- 在企业中脱颖而出的能力:战略思维能力;内部政治生存能力;接受批评能力。- 信息处理能力:在众多信息中抓住要点的能力。- 处理不确定事务能力。(上海赛谷CMMI3认证 

软件架构师应具备的知识
    一个优秀的软件架构师应具备三个方面的知识:
1. 计算机科学的知识- 架构知识:架构框架、模式、架构实现的战术招数、视角、架构标准、架构描述语言、架构演化模型和方法、质量属性等知识。- 软件工程知识:系统工程知识、软件生命周期各个阶段的知识、软件过程管理和改进知识、复用方法和技术知识、软件产品线知识、软件工程工具知识等。- 设计知识:不同设计技术和工具知识、复杂多产品设计技术知识、OO设计分析方法知识、UML使用知识等。- 编程技术知识:常见编程语言和模型知识、特定编程技术(如:实时处理、安全处理等)知识等。 2. 技术和平台知识- 特定技术和平台知识:软硬件接口知识、web-based应用知识、互联网技术知识;具体软件系统和操作系统知识,如:数据库知识、云平台知识、SOA实现知识等。- 通用技术和平台知识:IT领域的技术方向知识、基础设施对应用开发的影响知识等。(上海赛谷CMMI3认证)
3. 领域和组织内部管理知识- 相关应用领域知识:组织相关具体业务领域知识和技术。- 相关Industry知识:业界优秀实践知识、业界相关标准等。- 企业知识:企业业务模式和实践知识、竞争对手的产品、战略、过程等知识、财务模型和预算知识等。- 领导力和管理知识:如何做好教练、导师、培训师的知识、项目管理知识、项目工程知识等。
    在充分了解了软件架构师的工作任务、所需技能、必备知识后,我们可以清晰看到一条软件架构师的成长之路。一个有志成为一名优秀软件架构师的年轻人,应该多做一些架构师的工作任务,把握机会主动向能帮助你成长的贵人学习。一方面要学习一些方法论,更重要的是实践、实践、再实践。在学习成长的过程中,少些计较,学到的技能总归是是自己的。    另一方面,一名潜在的架构师必须全面梳理、学习软件架构师的知识体系,将它们映射到企业内的应用中。软件行业技术生命周期格外的短,活到老学到老不是一句口号,而是职业生涯的常态。学习、思考、实践、回顾、改进是软件架构师永远的循环。    千万不要忽略非技术的技能,让自己变得专业一些,学会换位思考,少计较个人得失,多一些大智慧,少一些小聪明。要获得职场的成功,高情商比高智商更加重要。    最后给我们众多用CMMI做改进的组织提几点建议:过程代表组织的知识积累,是内部经过验证的优秀实践的载体,软件架构是其中最重要的技术积累,是回报最高的投资之一。公司内部的优秀软件架构师是头等重要的人物,培养一群这样的人才是公司发展的战略需要。也许一开始我们需要多位角色承担架构师的工作,最终每个重要的产品(线)都应该有一位名副其实的软件架构师。

 

 

 

来源于丛斌博士


点击关闭
  • CMMI认证客服

    CMMI3认证客服

    CMMI咨询

    CMMI4认证