要架构师干什么?(译)

原文链接:http://www.yusufaytas.com/who-needs-architect/

架构师?根据维基百科,架构师指的是计划,设计和监督建筑的构造。因此,很明显我们可以看出架构师这个角色取自土木工程。对应的,我们得到了软件架构。软件架构指的是软件系统的高层结构。正如你可能猜到的,我不认为我们需要一个正式的架构师角色,而是需要软件架构。在开始另一次争吵之前,让我们先看一下矩阵架构场景。

很酷吧?这对于每一个构建软件的人来说都是应得的。就是这样。我认为任何工作的软件都有一种架构。哇,那每个人都是架构师了?其实,也对也不对。对的方面是,一个架构需要架构师(们)。不对的地方是,我不认为没有必要定义一个正式的角色,把每个人都叫做架构师。

回到土木工程。一个架构师设计一个建筑,考虑的是美观,艺术性和构造的外形。一个土木工程师则专注于设计的每个元素,是架构的实践者。就这样,没有更多的定义。正如你所看到的,这些是定义明确的角色,它们有一种分层的感觉。当开发软件时,你认为我们有或应该有这种分层吗?不。当然一个有经验的工程师与一个刚毕业的有不同的观点。然而这两种工程师同样地影响着软件系统和架构。如果把一个叫做架构师而另外一个不是,你认为这样公平吗?不!因此,一个正式的架构师职位并不适合软件开发领域。

如果你认为我们只需要软件“软件架构”这个职称来强调其资历水平,我不同意。大多数大公司有着很好的开发路径。差不多是软件工程师1->软件工程师2->资深软件工程师->核心工程师。让我强调一下,他们不需要一个架构师。

一些问题和解答:

如果把核心工程师当作架构师。我们需要总工程师来评价我们构建的每个软件吗?简单的讲不。因为他们在构建自己的项目。

在客户和团队之间,我们真的需要一个代理吗?为什么我们不能都与客户坐在一起,来共同做决定?我认为应该整个团队一起来理解繁乱的需求并从中提出具体任务。当然,有时需要一些有经验的人,领导其他成员。但是我们不必叫他们架构师。他们只是经验丰富的开发人员。

在一个没有架构师的团队里,人们就不能写整洁,高质量的代码了吗?系统设计的阶段就可以去掉?我认为一个好的团队应该先做设计审查,然后代码审查,来分享知识,提高代码质量,倾听不同的意见。如果能很好的沟通交流,开发人员根据能力水平分配任务,那么就可以交付高质量的软件,即使没有一个正式的架构师角色。

我们真的需要一个架构师来领导和制定策略吗?难道不是项目经理来领导团队并决定策略?我认为由于这两个方面的原因,才有了项目经理这个职位。那么技术领导呢?由于软件开发像手工艺,工匠(高级工程师)应该分享如何开发高水平的软件。因此,我们不需要一个正式的架构师角色。

总的来说,我不认为我们需要为设计架构分离出一个专门的角色。我认为团队中的每个成员都应该参与架构讨论,由团队共同完成整个设计。而且,架构师并不需要对应于开发经验水平。最后,再见架构师,让我们专心于架构本身。