成为架构师

你们何时成为架构师的?
相信要么企业内部晋升、要么跳槽新公司。
若是你已是架构师了,相信有过这样的问题:
公司和招聘要求定义的职责到底该怎么才能作好?
如何开始架构师的职业生涯?
如何平衡专业技术追求和企业赚钱第一位的追求?程序员

架构师要作什么

对于合格架构师的职责以下:数据库

  • 设计软件系统架构;
  • 系统分解成为多个可实现的模块;
  • 兼顾大局、确保系统总体稳定有效;
  • 权衡质量属性(非功能性需求);
  • 管控不可避免的技术债务;
  • 锻炼和提高整个团队的架构设计能力。

简而言之就是在统筹系统全局、规避系统风险、抽象等的知识下,作设计、分解系统,分配任务,保障系统顺利开发和上线,并利用这些知识来提高团队能力。架构

何为软件架构

软件架构是关于如何组织软件的一系统重大设计决策和意图的集合,旨在实现指望的质量属性和其余目标。学习

以上的定义有点抽象,如下引用卡内基梅隆大学软件工程研究院(SEI)的定义:
计算机系统的软件架构是解释系统所需的结构体的集合,其中包括:软件元素、元素之间的相互关系,以及两者各自的属性。spa

该定义说明了组成软件架构相当重要的要素:元素、关系及属性。
即:元素(属性) + 关系 (属性)= 架构。简单来讲就是将多个有某些属性的元素以有某些属性的关系链接在一块儿,就组成了架构。你能够把元素和关系想象成建筑工地的砖块和水泥,砖块和水泥有不少种类和属性。元素是软件的基本组成(类、包、层、数据库表等),关系则描述了元素如何协做完成任务(调用、依赖、运行于等)。.net

然而,并不能简单地认为就是这些结构体组成了架构,而是说架构为了解释系统所需的结构体而整合在一块儿来讲明,由于架构还包含了设计的决策和意图。就像JavaBean的命名规范,包含的意图就是代码的规范化、提高代码的可维护性等。架构设计

总结下来,软件架构应该是:
元素(属性) + 关系 (属性)+ 决策 + 意图= 架构设计

成为团队架构师

大致来讲,成为架构师以前应该至少参与过三到五个系统的开发,并且承担的技术职责应该不断增长,但最重要的是要总结经验造成全面的知识体系。blog

从程序员向架构师转变,首先应该要记录和总结你在开发过程当中学到的知识。针对每个项目,作如下几点记录和总结:开发

  • 记录利益相关方和主要业务目标。
  • 记录和总结项目的总体解决方案。
  • 记录涉及的技术以及选用的缘由。
  • 记录最大的风险和克服过程。
  • 分析项目存在的不足,总结改进的方法。

不管你但愿内部晋升,仍是跳槽晋升,都要有耐心来提高专业水平。机会是留给有准备的人的。

记住,架构师不只仅是团队中的角色,更是一种思惟方式。就算你是程序员,天天写代码也会作出不少设计决定的,这其中确定有些决定是具备架构意义的。不想作将军的士兵都不会是好的士兵,因此不管你的头衔是什么,你都应该运用架构设计的思想作出恰当的决策,让架构向着健全的方向发展,那你实际上就是架构师。

开发出色的软件

开发软件系统要尽可能规避风险,佛祖保佑永无bug那种,而架构是软件成功的基础。

优秀的软件架构应该是这样的:

  • 架构将问题分而治之。架构精确地解释了如何将系统划分为独立轻巧且易于处理的小模块,同时还能保证整个系统协同工做,让系统的总价值高于各模块的价值之和,即1+1大于2。

  • 架构提供了协同工做的指导方针。软件开发不仅仅是技术,也是以人为本的艺术。软件架构描述了整个系统如何组成和意图。掌握了架构也就清楚了你们该怎么分工合做进行软件开发。

  • 架构为复杂设计提供了知识。提供统一的词汇、术语、概念等等知识,都为沟通和理解带来了极大的便利。知识是随时间而积累和提高的,利用知识,重复的问题的发生就能避免。

  • 架构是最优决策的成果。架构不仅仅考虑功能的基本实现,还要考虑成本、约束、进度、风险、团队的交付能力,以及最重要的质量属性。权衡这些进行恰如其分的架构设计,才是最优的决策。

  • 架构让你避免犯重大错误。架构设计并不是万能,但至少要能规避重大的、常见的风险。预防大于治疗,所以架构是能够帮助咱们去预防从此可能出现的风险和问题,而不是佛祖保佑就能够的。

  • 架构让系统更灵活。业务是不断地随时间而变化的,相应的系统也应该随之变化,而不是推倒重来。所以架构须要为软件开发提供灵活应变的结构。

总结

头衔和职称并非架构设计的本质所在,必须专一于架构设计的核心职责,逐步学习和积累相应的架构设计知识,并运用这些知识去开发出色的软件,这就真正成为了架构师。

作好架构师是须要原则的,下篇文章将讲解《架构设计思惟原则》。

相关文章
相关标签/搜索