“T”指的是技术,这也正是优秀的软件构架师应该懂得的。作为软件开发者,我们倾向于去搞懂编程语言语法、API、框架、设计模式、自动化单元测试和其他所有日常使用的底层技术。对一个软件构架师来说,这些也是基础知识。为什么?因为扮演软件构架角色的人要懂技术,这样他们至少能如实回答以下类型的问题。
- 该方案是否有效?
- 我们要这样去构建吗?
然而,从熟练掌握不同编程语言的学习曲线来看,软件专业人员常常只精通一到两项技术。最后,这些人都会被叫作“Java开发者”、“Oracle开发者”什么的。我本人曾是如此,也在很多组织中目睹这种情况。如果你还对编程语言的宗教战争感到困惑,看看有多少这样的前缀吧。
尽管我们努力保持开放的思维,但还是受困于单一的技术栈。其实这也没什么错,但你不得不小心地保持开放思维。俗话说,“如果你只有一把锤子,一切看起来都像钉子”。获得经验是学习之旅的重要组成部分,但不要被经验束缚。比如说,并不是每个软件都需要一个关系型数据库,但在团队勾画候选的软件架构时,往往第一个就会画它。