A Little Architecture

http://blog.cleancoder.com/uncle-bob/2016/01/04/ALittleArchitecture.html

下面是wanqu.co的评论

初级程序员以为架构师的工作是决定用什么数据库,用什么编程框架;有经验的程序员告诉他,架构师的工作其实是如何不做这些决定。

没经验的程序员通常都会 over design, over engineering,过份纠结具体技术,倾向于杀鸡用牛刀的方案,倾向于用底层技术的选择来影响产品功能(比如这个产品功能不能做,因为我选的数据库不支持)。有经验的程序员知道什么决定要立刻做,什么决定可以推迟,直到有足够的信息(通常是产品方面的需求已经明朗了,比如因为要做这个产品功能,所以选择这个数据库比较合适)。

具体地说,架构师的工作就是将业务代码和底层具体技术分开。将业务代码对底层的需求抽象成为接口,之后底层只需要尽可能地高效实现这些接口即可。如何抽象出这些接口是架构师的工作,而如何高效实现这些接口则不是架构师的工作。