软件架构师不等同于资深程序员

本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等

如今很多的公司的IT部门仍然认为招聘一个资深的程序员,他同样也能承担软件架构师的角色。

资深程序员对整个软件生命周期很了解,他们可以经过培训成为架构师,但他们不等同于架构师。一个软件架构师首要的和最重要的是他的远见。如果一个架构师拥有一些软件开发经验,那会更好,但大多时候,他们面对的是一个多语言的复杂环境。在第一行代码开始编写之前,架构师需要制定出业务需求如何转变成解决方案。这不仅仅需要业务环境的相关知识,从业务操作到客户环境,他还需要向公司上级勾画出一个令人信服的系统。如果有些问题不事先考虑,如扩展性,访问延迟问题,安全问题,系统开始开发时就会忽略这些。而资深程序员了解自己的团队,了解他们的能力。资深程序员知道如何管理工作进度,确保开发中的软件如何实现架构设计的目标。

架构师能决定的是需求应该如何开发才能满足业务需要,例如:


这个业务分布全球,业务在需求上需要网站响应延迟不超过3秒——不管用户在什么地方,网站最少要能承受10万以上的用户访问量。

上面的需求涉及的是系统的架构,而不是形如我们如何用Oracle数据库来对用户安全认证的问题。

有很重要的一点需要注意,很多的软件架构师在之前都是资深程序员(比如我自己),尽管如此,很多的资深程序员对架构设计并不感兴趣。决定一个系统是该使用Tomcat还是Glassfish,是否要用Apache Webserver做负载均衡,这属于架构事务。做代码审查,确保设计模式被正确的应用,这是资深程序员的事务。资深程序员可以决定开发方法,比如使用敏捷开发方法,但需要项目经理的认可。架构师要参加项目各方一起的会议:用户,经营方,基础设施提供方,开发,测试人员。当用户询问为什么系统缓慢时,他们会找架构师,架构师则会找资深开发负责人研究目前的开发是否达到了架构设计目标,或看看架构设计上是否有缺陷。

我是一名软件架构师,我可以轻松的把我的见解表达给开发团队,但同时我也是一名资深程序员,我仍然热爱编程。我在一个软件架构协会工作,经常会遇到一些没有开发经验的架构师,我不认同他们的这种出身。软件架构师应该了解各种语言的特点,而不是只偏爱自己喜欢的那种。

我希望有更多的软件公司能认识到在软件项目中架构师的价值——不论项目有多大有多小。

[英文原文:A software architect is not a senior developer ]
分享这篇文章:

10 Responses to 软件架构师不等同于资深程序员

  1. youyang743 says:

    通过本文章,稍了解了架构师和资深程序员的区别。

    现在纠结于架构师和项目经理之间的区别。

  2. kevin says:

    title都不一样。肯定职责,内容都不一样。标题起的太2了。

  3. kk says:

    程序写不下去了才会去搞架构,架构搞不下去了才会去搞管理。

  4. tcmaster says:

    就是这种sb搞得构架师这个名字臭了

  5. haitao says:

    架构师是帅,负责打通朝廷,沙盘演练,安排后勤等,上层事情?
    这是项目经理、产品经理的事情吧,架构师是负责系统运行的技术模式的选择,行政、市场应该不用他分心了。
    另外,好像还漏了一个关键的系统分析师:
    承接用户,发掘需求,归纳总结,从千万条可能的功能路径里排除大部分,剩下的再征求用户的有效反馈,最后落实到一条功能路径,以便后续的编码实现

    这几天正好写过一篇关于需求分析的博客:
    http://blog.csdn.net/sz_haitao/article/details/8547210

    项目经理、产品经理是负责整体项目,更多行政、市场等非技术因素、环节;
    系统分析师、架构师则是侧重技术部分的总体把控,其中后者作用可能会少一点:类似的项目、系统,架构其实是可以复用、照搬的;而需求则是不同客户都不尽相同的,除非是SAP这样的软件商,可以店大欺客

  6. haitao says:

    架构师是负责系统运行的技术模式的选择、创建,行政、市场(项目经理、产品经理的事情)应该不用他分心了。
    另外,好像还漏了一个关键的系统分析师:
    承接用户,发掘需求,归纳总结,从千万条可能的功能路径里排除大部分,剩下的再征求用户的有效反馈,最后落实到一条功能路径,以便后续的编码实现

    项目经理、产品经理是负责整体项目,更多行政、市场等非技术因素、环节;
    系统分析师、架构师则是侧重技术部分的总体把控,其中后者作用可能会少一点:类似的项目、系统,架构其实是可以复用、照搬的;而需求则是不同客户都不尽相同的,除非是SAP这样的软件商,可以店大欺客。

    怎么老是在审核,因为有博客链接的缘故?

  7. Alan chan says:

    我觉得这是个粒度划分的问题,其实没有明显的界限,架构师需要关注软件的物理架构、逻辑架构、开发架构,更多是从软件宏观层面出发,来设计整个软件形态,而资深程序员更多从软件实现细节出发,主要关注实现技术、实现逻辑、实现交互。

  8. ted says:

    很好的总结。专业架构师对于小公司来说就是奢望。一般情况下都要求程序员能做到一转多能,架构设计完全依赖于资深程序员的经验。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.