技术总监项目管理

38个成为更好的软件架构师的行动和见解

2018-07-06  本文已影响46人  公子小水

38 Actions and Insights to Become a Better Software Architect

几年前,我被问到:“你是如何成为软件架构师的?”。我们谈到了必要的技能,经验以及建立知识所花费的时间和精力。此外,我描述了我所采取的步骤,我积极使用或尝试过的技术以及我在职业和非职业生涯中学到的知识。

这次谈话引发了我自己的思考,我开始为个人成长构建这个主题。“是什么让一个优秀的软件架构师?”,我想,“我怎样才能改进成为更好的软件架构师呢?”。我读过文章和书籍,当然还和我公事的同事交谈。今天,我想与你分享我对我的见解的概述,我认为哪些技能最重要,以及如何改进它们以成为(更好的)软件架构师。

什么是软件架构师?

在我们深入研究细节之前,让我们先看看两个定义。

软件架构师是一名软件专家,负责制定高级设计并指定技术标准,包括软件编码标准,工具和平台。领先的专家被称为首席架构师。
(来源: 维基百科:软件架构师

软件体系结构是系统的基本组织,由其组件,它们彼此之间以及与环境的关系以及决定系统设计和发展的原则来表示。
(来源: 软件架构手册

架构级别

架构可以在抽象的几个“级别”完成。该级别影响必要技能的重要性。由于可能存在许多可能的分类,我最喜欢的分段包括以下3个级别:

有时架构师也被视为不同利益相关者之间的“粘合剂”。三个例子:

软件架构师的典型活动

要了解架构师需要的必要技能,我们首先需要了解典型的活动。以下(非最终)列表从我的角度包含最重要的活动:

注意:体系结构是一种持续的活动,尤其是在敏捷软件开发中应用时。因此,这些活动一次又一次地完成。

软件架构师的重要技能

为了支持安排的活动,需要具备特定技能。根据我的经验,阅读书籍和讨论,我们可以将其归结为每个软件架构师应具备的这10项技能:

设计,决定,简化,编码,文档,沟通,估计,平衡,咨询,市场

让我们逐一介绍。对于每一项技能,我已经制定了一些行动或见解,以便在该领域进行改进。

(1)设计

什么可以做出一个好的设计?这可能是最重要和最具挑战性的问题。我将区分理论和实践。根据我的经验,混合使用两者是最有价值的。让我们从理论开始:

理论很重要。如果你不想成为象牙塔架构师,那么实践同样甚至更重要。

(2)决定

架构师需要能够做出决策并指导项目或整个组织朝着正确的方向发展。

(3)简化

请记住解决问题的原则Occam的Razor,表达的是更倾向于简单。我将原则解释如下:如果你对解决问题的解决方案有太多假设可能会出错,或导致不必要的复杂的解决方案。应该减少(简化)假设以得到一个好的解决方案。

(4)编码

即使作为最具抽象层次的架构的企业架构师,你仍然应该知道开发人员每天都在做什么。如果你不明白这是怎么做的,你可能会遇到两个主要问题:
(1)开发人员不接受你的说法
(2)你不了解开发人员的挑战和需求。

(5)文档

架构文档有时很重要,有时也不那么重要。重要文档有如架构决策或编码指南。在编码开始之前经常需要初始文档,需要不断改进。其他文档可以自动生成,因为代码也可以是文档,例如UML类图。

(6)沟通

根据我的观察,这是最被低估的技能之一。如果你在设计方面很出色但无法传达你的想法,你的想法可能只会产生较小的影响,甚至无法成功。

(7)估计和评估

(8)平衡

(9)咨询和教练

在咨询和指导方面, 积极主动可能是最好的。如果有人问你,通常为时已晚。在架构网站上清理是你想要避免的。你需要以某种方式预见接下来的几周,几个月甚至几年,并为下一步做好准备。

(10)市场

你的想法很棒,你已经很好地传达了它们,但仍然没有人愿意关注?那么你可能缺乏营销技巧。


呼吁采取行动

让我知道你的经历以及你如何努力提高你的架构技能。根据你的反馈,我将提出更深入的文章。

上一篇 下一篇

猜你喜欢

热点阅读