很多程序员的梦想,就是将来能成为一名架构师。包括我刚学编程那时候,也是以当架构师为目标,觉得不想当架构师的程序员不是好程序员,希望将来能成为一个优秀的架构师。就像拿破仑那句名言:“不想当将军的士兵不是好士兵。”
随着工作经历的增多,我也开始参与到架构设计中。对架构设计了解的越多,我越发觉,其实做架构设计,并不代表一定要有一个架构师的头衔。
拿破仑那句名言,原句是“Every French soldier carries a marshal’s baton in his knapsack”,意思是“每个士兵背包里都应该装有元帅的权杖”。
元帅的权杖,意味着大局观,元帅的思维方式。当士兵背包里装有元帅的权杖,就意味着士兵也能胸中有大局观,能有元帅的思维,理解元帅在特定战场上想什么,这样能更好的执行命令,提升整体的战斗力。
其实拿破仑的本意是激励每一名上战场的士兵都要有大局观,有元帅的思维,并不需要每一个人都一定去当将军、当元帅。
这也适用于技术领域,对于程序员来说,并不代表一定要有一个架构师的头衔,而是心中有大局观,有架构师的思维。从而能理解架构设计,能写出好的程序。
什么是架构师思维?
通过上一篇的学习,我们知道架构设计,是要控制技术的复杂性。对于架构师来说,要控制技术复杂性,有几种有效的方式:抽象、分治、复用和迭代。
架构师思维,其实就是这几种思维的集合。
抽象思维
抽象思维可以说是整个架构设计的基础。因为对于架构设计来说,是要为了满足业务需求的,而业务需求都是一些文字性的描述、原型、UI 设计图,这些需求要最终变成代码让机器执行,就必须先进行抽象,抽象成计算机能识别的模型。
其实抽象思维我们不陌生,因为我们从小学习的数学,就有很多抽象思维的训练。举例来说,我们小时候做的鸡兔同笼问题,看起来很复杂,但是如果我们会二元一次方程,把鸡抽象成 x,兔子抽象成 y,就可以用二元一次方程列出相应的方程式,从而求出解。
在软件项目中,遇到类似的场景,就会考虑抽象出来,总结一个规则和方法。有时候即使场景不同,也可以把其中有共性的内容抽象出来,可以更方便的使用。
举个例子,我们在之前文章中有对极客时间专栏做用例