架构设计能力的培养( 二 )


文章图片

文章图片
所以设计能力的培养实际两个方式 。
其一就是你做了大量的编码 , 在整个过程中走了弯路 , 你发现需要抽象或复用 , 才能够提升你的开发效率 , 也让软件具备扩展性 , 你只要懂得这个反思和复盘 , 那么一定是能够提升自己的设计能力 。如果你开发过程中做大量的粘贴 , 拷贝动作 , 也没有触发你思考 , 那么显然很难培养你的设计能力 。
设计能力往往就是从编码和编程思维开始的 。
首先是将重复的东西自动化掉 , 其次是将相似的东西通过参数抽象变成可复用的方法或函数 , 在抽象后来实现自动化 。其次就是自动化后你会发现如何更好应对变化 , 为了应对变化你做了更多的抽象或接口设计 , 在这个过程中逐步积累设计能力 。这一个步骤你会发现你的就是某种设计模式来解决的问题 。
其二就是编码积累到一定量后 , 你可以看软件架构设计的书籍 , 先形成设计的完整思路和方法论 , 也可以看设计模式类的书籍 , 对设计模式有一个完整的了解 , 能够将日常编码实践的内容和设计模式进行对比分析 。这样再遇到类似的问题 , 你可以少走自己探索的弯路等 。
但是以上也仅仅解决了设计能力的问题 。
没有解决架构思维层面的问题 , 架构思维的核心是全局能力 , 是高度的抽象和建模能力 , 是既要清楚业务 , 又要懂得技术的相互衔接能力 。
当然大部分架构设计人员更加热衷于开发框架 , 技术平台 , 开源组件选择等 , 而忽视了如何从一个业务需求的提出 , 你能够通过系统分析 , 得出整个业务系统应该如何划分模块 , 如何设计接口 , 如何设计整体数据模型和数据库来支撑业务 , 同时你也能够想清楚你需要遵循什么样的开发框架和模式 , 分层架构思路开完成某一个功能模块的开发 。
这个事情实际相当有难度 , 大部分人员不具备这个能力 。
但是为何很多人架构设计还是做得不错 , 简单来说整个信息化和互联网发展到今天 , 各种业务系统 , 电商平台 , 互联网应用你基本都可以找到类似的架构参考和原型 , 你只需要参考别人的做法去做即可 。
比如你要做一个电商平台 , 具体应该如何分解各个子系统 , 或者是否建立各个中台能力中心 , 这些都有标准的做法 , 不需要你再去创新 , 你只需要参考别人实践去做即可 。
但是如果你面对一个全新业务 , 你要去规划和构建整个业务系统的架构设计 , 模块划分 , 我相信大部分架构设计人员都无法做好这件事情 。这个能力已经不是简单的你技术多牛 , 而是考察的全局思维和系统观 , 考察的是分解和集成 , 分类和抽象 , 问题分析和解决 , 模式匹配能力 , 这些能力统筹我经常谈到的思维能力 。
如果一个人真正具备这种独立分析和解决问题的能力 , 具备系统思维的能力 , 你会发现他不仅架构设计做得好 , 其它很多事情都能够很好的完成 。就是这个道理 。
所以要具备这方面的能力 , 你可以先熟悉相关的业务域知识 , 也可以看看完整的类似面向对象的软件架构设计书籍 , 领域驱动建模书籍 , 传统的类似RUP统一软件过程方法论等 。看看完整的业务需求如何通过流程分析 , 用例建模 , 对象建模 , 接口设计逐步落地 。
注意在这个过程中类似UML等建模设计语言是很好的辅助 , 但是核心这些建模工具或语言也仅仅是帮助你抽象或形式化表达你的内容 , 整个建模的核心还是系统分析思路 。这个从原始需求输入开始 , 如何一步步的形成一个完整的架构设计方案思路 , 才是最关键内容 。