本文从六个方面讨论一个良好架构师所必须具有的专业水准。数据库
做为领导编程
好的软件架构师必须知道,他们做为领导者的做用不必定是告诉开发人员作什么。 相反,好的架构师的行为自己就像一个指导,管理一个开发团队向同一个技术愿景前进,利用领导技能,如讲故事,影响,导引冲突和创建我的的信任等方式,把他们的架构愿景变成现实。安全
一个好的领导者,同时也是一个好的架构师,将仔细听取每一个参与者的意见,经过与团队反馈互动微调他们的愿景。 很好地引导到下一个点。架构
做为开发人员工具
在理想的目标架构与软件系统的当前状态之间平衡才能作出良好架构选择。好比,若是关系数据库更适合问题域,即便很无聊,若是再将文档数据库添加到系统中也没有意义。架构师若是不首先考虑是否适合业务问题领域,会被各类技术诱惑而进行架构选择。性能
架构师减轻这一点的最好方法是花费时间与开发人员泡在代码中。了解系统如何创建,以及系统的约束,这些将为架构师提供关于当今环境的正确选择的更多信息。学习
具备系统焦点测试
经验丰富的开发人员知道,代码只是工做软件的一个方面。为了使代码运行,经验丰富的开发人员须要理解其余重要的质量属性,代码才能在其生产环境中运行良好。他们须要考虑部署过程,自动测试,性能,安全性和可支持性等方面质量属性。 开发人员才能能够根据这些质量属性进行编码实施,架构师不只专一于理解代码,并且须要了解并知足不一样利益相关者(如支持,安全和操做人员)的需求。优化
好的架构师须要专一于寻找可以知足这些不一样利益相关者需求的解决方案,而不是根据某一个参与者的偏好或风格选择进行优化的工具或方法。编码
像一个企业家思考
全部的技术选择都有成本和效益,一个好的架构师将从两个角度考虑新的技术选择。成功的企业家会愿意承担风险,可是会寻求快速学习和快速失败的方法。 架构师能够以相似的方式处理技术选择,寻求现实世界中有关短时间和长期成本的信息,意识到他们的可能好处。
一个很好的例子是,当架构师避免承诺当即使用重新文章读过的或在会议上据说过的新工具。相反,他们应当设法了解该工具的相关性,并在他们的环境中运行的架构样本以收集更多的信息。他们不会基于多好的销售额而选择一个工具,,而是依据它提供了什么价值,是否提供给他们的系统所须要的。 他们还会寻找工具的隐性成本,例如支持的工具是否足够好(例如文档级别,社区采用状况),工具带来多少锁定或长期引入的额外风险。
用战术思惟平衡策略
许多团队与各个开发人员都是倾向于选择他们最温馨或最有经验的工具和技术构建他们的系统。
好的架构师须要注意什么是更新的技术,哪些工具或方法多是有用的,但不必定当即采用他们。技术采用须要一个考虑长期前景的方法。 架构师将在团队和组织层面寻求敏捷性(容许团队快速移动)和调整(保持足够的一致性)之间的良好平衡。
创建本身的技术雷达是在探索有用的工具。
良好沟通
架构师须要知道有效的沟通是创建在信任基础上,须要在团队外影响队员,这些都是架构师的关键技能。 他们知道不一样群体的人使用不一样的词汇,使用技术术语与生意或管理人士交流会变得困难。架构师不会使用模式、工具和编程概念与他们交流,而是使用受众熟悉的词语与之交流。 使用诸如风险回报,成本和收益等词汇向商业人士传达技术选择,将比与开发团队一块儿使用的技术词汇更适合。
架构师也意识到团队内部沟通和外部沟通同样重要,能够利用图表和小组讨论,创建和完善技术愿景,并使用编写写日志的方式,如维基,可以为未来提供为历史发展轨迹。
结论
作一个全面的架构师不容易。有这么多的元素须要咱们关注,每一个都利用许多开发人员每每不具有的技能。 最重要的不必定是架构师具备什么能力,而是他们在这些不一样领域有足够的专业知识才能有效。只有熟练掌握上述六个领域之一的架构师,才会成为具备良好专业知识水平的架构师。