- 编程能力 处理难的问题(技术难点,具体事务)
- 架构能力 处理大的问题(系统很大,需要你考虑周全)
- 工程能力 处理更多的问题(多人协作)
作为开发人员来说,架构能力非常重要,大家可以看一些设计模式的书籍或者学习别人写的一些架构,不断精进。
关于软件架构:很多人认为软甲架构就是一堆框架的组合,其实不是,软件架构本身是对于软件实体组织形式的阐述,使用框架的意义是快速完成软件架构设计,而不是取代软件架构设计,两者本质上是不一样的,它们的关系更像是设计图纸和所使用的原材料的关系。
确定核心问题
架构的责任就是要把软件的生命周期和业务的生命周期放在第一位。
- 在开发架构上,要思考软件架构如何设计才能支持业务流增长
- 在代码上,要对业务代码和访问代码做好架构拆分,确保业务代码符合业务生命周期
要做好架构,就要发现问题的主体并确定核心问题。在确定业务核心生命周期以及核心生命周期的主体之后,要对业务核心生命周期进行分析,根据当前状况,合理分配权责,最后把工作成果组合起来,保证达到1+1>2的效果。
培养架构思维
架构的设计必须先业务,再技术,再组织。一切都是为业务服务的,只有业务架构梳理清楚了,才能去梳理技术架构。只有业务和技术架构都梳理清楚了,才能去梳理组织架构,因为组织架构的目的是为了让业务和技术最好地运作。
而且,架构设计不是静态的,而是动态演化的。只有能够不断应对环境变化的系统,才是有生命力的系统。
专业技术能力
你需要学习软件工程的所有领域,包括软件设计、编码、质量保证、DevOps、性能分析、软件安全、项目管理、软件支持等等。这些技能对于创建满足软件架构“能力”的解决方案至关重要。
作为一名开发人员,最好能胜任各个领域的工作,包括后端、前端和 DevOps,这能让我们准确地看到发生了什么。
重视细节
在做系统设计时是否考虑到了足够多的方方面面,例如很多系统设计容易遗漏上线环节的细节,导致在上线时发现漏掉了什么考虑,临时解决或只能重来。所以不仅要技术全面,还要考虑足够多的方面,并考虑未来的一些发展。
优先级和节奏问题
优先级和节奏控制是一个系统架构的最佳体现,优先级意味着把握住了重点,这可以保证在设计架构下业务实现不会出现问题,节奏意味着全面,知道随着业务发展在什么时间点做什么事。
尤其是通常业务需求实现都是有很强的时间要求的,所以我们需要考虑清楚不同的优先级,包括技术方案和决策这都是需要取舍的,这不会导致我们因为某个问题而陷入场景,尤其是哪个问题不是很重要的时候。
经典好书推荐
- 《微服务设计》-什么是微服务?为什么有微服务?怎么做?有哪些原则
- 《架构师修炼之道》-知道架构师们是如何根据需求去做对应的设计和分析的
- 《从零开始学架构》-对架构师从设计到经常用的模式,以及对应的理论都做了介绍
- 《Thinking Architecturally》-架构师是对新技术是如何调研和学习的
- 《实现领域驱动设计》-在领域驱动的指导思想下,真实去做一个项目出来
- 《架构整洁之道》-软件是一门艺术,就和画画一样,本质上,他认为编程是一门手艺