正文
那么问题来了,新人要怎么才能提升系统设计能力呢?
作为一个过来人,我觉得提升系统设计能力这事,可能有没有 AI 都差不多,都离不开多看、多练和多复盘。AI 的好处就是可以更方便地帮你查资料,以及更容易地理解项目,但它不能代替你去动手实践。
什么是系统设计?
在讨论如何提升系统架构能力之前,需要先搞清楚:什么是系统设计?
想想看,如果你做一个简单的网页,或者一个小脚本,需要系统架构吗?基本上是不需要的,因为足够简单,有没有架构都能写出来。那如果是要做一个 ChatGPT 这样的应用呢?那是一定要有很好的系统设计的,因为太复杂了!而且一个人也是做不出来的,需要很多人甚至很多团队协作才能完成。
但即使是 ChatGPT 这么复杂的系统,在开发团队工作的每一个人,工作职责并没有非常复杂。比如有的人只负责实现模型的 API 封装、部署,有的人只负责 Canvas 这样的文本编辑组件,有的人只做 iOS 客户端上的某个功能。一个复杂的系统,通过系统设计,把复杂系统层层分拆,变成了一个个小的模块,最终这些模块组合在一起就可以运行起来,让用户可以稳定地使用 ChatGPT 的服务。
所以系统设计,就是把一个复杂的系统拆解成容易理解、容易实现、容易维护的小模块,再清晰地定义好这些模块之间如何相互协作、相互沟通的过程。
通俗点讲,就好像你盖一栋大楼,系统设计就是设计图纸。图纸上详细说明了楼的结构,比如地基、钢筋框架、墙体、管道和电线,明确告诉施工人员每一部分怎么盖,哪些部分先盖,哪些后盖,哪些部件之间是如何连接起来的。
如何做系统设计?
系统设计这件事看起来很神秘,系统架构师似乎都是传奇般的存在,但做系统设计这事也没你想的那么复杂,因为绝大部分系统设计都有成熟的方案可以参考。作为架构师,可以灵活应用成熟的架构模式,一般是不需要去发明新的架构模式的。
但系统设计也没有那么容易,否则人人都是架构师了。系统设计难在哪呢?
• 要充分理解需求和团队:我把理解需求和团队放在了第一位,因为系统设计是为需求服务的,你不理解需求做出来的设计那可能都是错的;同时系统设计要和组织架构匹配,毕竟你的系统设计出来,还是需要团队去实施的。如果你就两三个人整几百个微服务显然是有问题的,反过来你几百个人的团队还是单体应用也可能是有问题的。