对很多组织来说,这里有个大问题:找不到足够的架构师。虽然石匠大师可能没有太多时间自己去跟石头打交道,但还是和团队一起工作。我常常遇到一些架构师,他们要协助多个不同团队。很明显,如果和多个不同团队一起工作,要向软件交付的实践部分做出贡献是不现实的,你没有时间写任何代码。
在多个团队中扮演软件架构角色,并不是一个有效的工作方式。通常这种情况发生时,都有一个由被视为共享资源的架构师组成的中心组(比如“企业架构组”)。根据我所读到的,石匠大师任何时候都会只关注一个建筑工地,这也正是我们的软件开发团队应该采用的方法。如果你认为这不可能,就看看中世纪建筑行业是怎么解决这个问题的15 :
15 http://www.historylearningsite.co.uk/medieval_masons.htm
每个石匠都会带一个为他工作的学徒。当石匠接下一份新工作,学徒也会跟着他。如果石匠觉得自己的学徒已经对行当足够了解,就会让他在石匠行会接受考验。
再次回到了典型的学徒模式,这也是为什么指导和辅导应该是现代软件架构角色 的一部分。我们需要培养未来的软件架构师 ,每个软件开发团队都需要他们自己的建造大师。