选自GitHub 作者:Justin Miller机器之心编译 参与:王子嘉、魔王 几天前,高级架构师 Justin Miller 在 GitHub 上创建项目,介绍自己关于「如何成为更好的软件架构师」的想法。该项目发布一天即获得 1.4K star,现在已有 3.8K star 量。几年前有人问我:「你是怎么成为一名软件架构师的?」我们就此探讨了必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从那些五花八门的工作中学到的东西。 架构师技术路线图。 软件架构师是什么? 在进行深层次的探讨之前,我们先来看两个定义:
架构的「层级」 架构主要可以抽象成以下几个「层级」。不同层级所需的技能也不同。尽管对层级的分类有很多种标准,但是我最喜欢把架构分成 3 个层级:
有时候,架构师也被看做不同工作组之间的粘合剂。以下是三个例子:
软件架构师的日常 要了解架构师的必备技能,我们得先知道架构师主要做什么。我认为架构师最重要的活动包括:
注意:架构设计是一项持续性的工作,尤其是在敏捷软件开发过程中。因此,我们会一遍又一遍地重复这些工作。 软件架构师必备技能 为了完成上面说的那些工作,架构师需要具备一些特定的技能。从我的个人经验、相关书籍和讨论中,我们可以将其总结为以下 10 项技能:设计、决策、简化、编程、记录、沟通、估算、平衡、咨询、市场。 接下来我将逐一介绍这些技能。 设计 首先最重要也最难回答的问题就是「什么是好的设计」。我将从理论和实践两个层面进行阐述。就我的经验来说,两者兼备才是最好的。那我们先说一下理论层面吧:
决策 架构师需要制定决策,指引项目甚至整个公司的正确方向。
简化 时刻记住奥卡姆剃刀原则,也就是简单即正义。我对这个原则的理解是这样的:如果你的解决方案是在做了很多假设的基础上提出来的,那么你的方案很可能是错的,也很可能会变得极其复杂。这个时候你就应该减少(简化)一些假设,以获得更好的解决方案。
编程 即使作为企业级架构师(最抽象的架构层级),你仍然应该了解开发人员的日常工作。如果你不了解开发如何完成的,那你可能会面临两个主要问题:
记录 架构文档有时很重要,有时却不那么重要。例如,架构决策或代码指南是重要文档。在开始编程之前,通常需要初始文档,并且对此不断细化。因为代码也可以作为文档(如 UML 类图),所以有些文档可以自动生成。
参考链接:https://github.com/justinamiller/SoftwareArchitect 本文为机器之心编译,转载请联系本公众号获得授权。 ✄------------------------------------------------ 加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com 投稿或寻求报道:content@jiqizhixin.com 广告 & 商务合作:bd@jiqizhixin.com 上一篇:报名 | 3.16 硬科技“投融荟”系列路演 下一篇:会议资讯 | 10·21 “云相约·汇资本”硬科技专场线上投融对接会圆满成功(附路演项目) |