`
ningboxiao
  • 浏览: 30738 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

 

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

 

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

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

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

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

 

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

 

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

本文转载自:http://www.aqee.net/a-software-architect-is-not-a-senior-developer/

[英文原文:A software architect is not a senior developer ]

27
13
分享到:
评论
14 楼 zhangcs053 2014-01-10  
bitray 写道
zhangcs053 写道
同意你的说法,架构师应该了解各种语言,就像建筑师需要了解化学一样,如何开发和如何建筑本质上是相同的,如果软件系统向建筑一样,第一眼就让人觉得很漂亮,它一定足够优美

估计多语言很难,架构师应该了解的和深入理解功能性需求和非功能性需求,并且根据非功能性需求进行深入的研究和分析。要求多种语言的太难了,一个架构师有着解决问题的能力,并且有大局观,敏捷的思维就够了。


我不想去争论什么,很多优秀的架构不是由单一的语言完成,像facebook,部分服务由c语言开发,部分服务由java开发,部分服务有php开发,为什么要这么做,因为这样足够清晰,各司其职,看到就知道它将要负责什么,如果一个大型系统,由一中语言开发,我可以想象代码量以及复杂程度,如果没有ant这样的工具就是一个灾难
13 楼 niva 2014-01-06  
cwqcwqmax9 写道
在这种客户需求不断变化,公司不肯花时间稳定需求只求一味快速的盈利为目的的中国IT文化氛围中  对用敏捷表示怀疑

那怎么办?冻结需求?
12 楼 bitray 2014-01-06  
zhangcs053 写道
同意你的说法,架构师应该了解各种语言,就像建筑师需要了解化学一样,如何开发和如何建筑本质上是相同的,如果软件系统向建筑一样,第一眼就让人觉得很漂亮,它一定足够优美

估计多语言很难,架构师应该了解的和深入理解功能性需求和非功能性需求,并且根据非功能性需求进行深入的研究和分析。要求多种语言的太难了,一个架构师有着解决问题的能力,并且有大局观,敏捷的思维就够了。
11 楼 cwqcwqmax9 2014-01-06  
在户需求不断变化下用敏捷,你试试看,保证你死得极惨

加班加到挂水
10 楼 cwqcwqmax9 2014-01-06  
在这种客户需求不断变化,公司不肯花时间稳定需求只求一味快速的盈利为目的的中国IT文化氛围中  对用敏捷表示怀疑
9 楼 cuippan 2014-01-05  
niva 写道

ningboxiao 写道

随着项目的展开,虽然是敏捷,但是要想改动架构或者一些底层的东西就很困难了

这说明两个问题:
1.这个项目肯定不是真正的敏捷,很可能是打着敏捷的幌子,搞瀑布的东西。
2.把底层作为核心,而不是把业务作为核心,证明负责这个项目的人,完全不懂面向对象。

8 楼 niva 2014-01-05  

ningboxiao 写道

随着项目的展开,虽然是敏捷,但是要想改动架构或者一些底层的东西就很困难了

这说明两个问题:
1.这个项目肯定不是真正的敏捷,很可能是打着敏捷的幌子,搞瀑布的东西。
2.把底层作为核心,而不是把业务作为核心,证明负责这个项目的人,完全不懂面向对象。
7 楼 jueyue 2014-01-04  
之前一直 不理解架构师与程序员的区别,现在慢慢理解了,好文章
6 楼 颠才泪狼空色 2014-01-04  
非常赞同,现在又多小公司,开发一个系统的时候都是优先上线为主,然后后期才开始恶补一些问题。
5 楼 ningboxiao 2014-01-04  
zhangcs053 写道
同意你的说法,架构师应该了解各种语言,就像建筑师需要了解化学一样,如何开发和如何建筑本质上是相同的,如果软件系统向建筑一样,第一眼就让人觉得很漂亮,它一定足够优美

4 楼 ningboxiao 2014-01-04  
不太同意你的看法,虽然提倡敏捷,但是如果在项目一开始,架构设计阶段没有考虑扩展性等问题,那么产品的架子就会存在问题,随着项目的展开,虽然是敏捷,但是要想改动架构或者一些底层的东西就很困难了,这也是架构师需要通盘考虑的问题
niva 写道
虽然很佩服作者的成就,但这种观点明显与敏捷理念相悖,如果是按敏捷方法,不可能一上来就考虑扩展性,访问延迟问题,安全问题这些东西,这些肯定是后面循环轮次才需要考虑的东西。

3 楼 zhangcs053 2014-01-04  
同意你的说法,架构师应该了解各种语言,就像建筑师需要了解化学一样,如何开发和如何建筑本质上是相同的,如果软件系统向建筑一样,第一眼就让人觉得很漂亮,它一定足够优美
2 楼 niva 2014-01-04  
虽然很佩服作者的成就,但这种观点明显与敏捷理念相悖,如果是按敏捷方法,不可能一上来就考虑扩展性,访问延迟问题,安全问题这些东西,这些肯定是后面循环轮次才需要考虑的东西。
1 楼 chenfuzhao 2014-01-04  
我很是赞同。

相关推荐

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

    资深程序员对整个软件生命周期很了解,他们可以经过培训成为架构师,但他们不等同于架构师。一个软件架构师首要的和最重要的是他的远见。  英文原文:Asoftwarearchitectisnotaseniordeveloper  本文的作者...

    系统架构设计程序员向架构师转型之路

    架构师并不仅仅是高级程序员,他们更像是一名技术领航者,负责整体系统的设计和规划,确保系统的可扩展性、稳定性和性能。他们需要具备扎实的技术基础,对计算机科学原理有深入理解,并能将这些理论应用到实际项目中...

    软件架构师教程 软件架构

    0_架构师与设计师.pdf 01_软件流程实施方案选择.pdf 02_软件架构文档设计.pdf 03_软件架构风险管理.pdf 04_如何描述和评估软件架构...因附件大于16M被分成了两个包上传,请下载软件架构师教程1.rar 软件架构师教程2.rar

    架构师害怕程序员知道的十项技能.ppt

    尽管架构师的工作更多地涉及到系统设计和决策,但成为一名好的架构师往往始于成为一名出色的程序员。编程能力是架构师的基础,因为这有助于他们深入理解技术细节,更好地评估技术选择,以及解决实际开发中遇到的问题...

    软件架构师职业解读

    软件架构师的成长路径通常包括从程序员、资深开发者逐渐发展到技术领导角色。这个过程中,不断学习新技术、积累项目经验、提升沟通和管理能力是非常关键的。 在"软件架构师职业导读"这份资料中,可能会涵盖这些方面...

    架构师系列:程序员如何向大数据架构师转型?(课件+视频)

    本视频教程仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则

    软件系统架构师(电子书)

    《软件系统架构师》这本书是为那些希望深入理解软件架构设计和实践的读者精心准备的。作为一本电子读物,它涵盖了软件架构的基础知识、关键概念以及实际应用,旨在帮助读者提升在软件开发领域的专业素养。 软件系统...

    高级软件架构师培训讲义

    总体而言,《高级软件架构师培训讲义》不仅仅是对基础知识的梳理,更是对高级架构师在实际工作中的问题解决能力、决策能力以及领导能力的全面提升。软件架构师通过这份讲义的学习,将能够在软件架构设计的道路上走得...

    软件架构师教程

    《软件架构师教程》是一份全面且深入的学习资源,旨在帮助程序员逐步成长为专业的软件架构师。这份教程涵盖了软件架构设计的各个方面,对于那些希望在IT领域提升自我、迈向更高层次的专业人士来说,无疑是一份宝贵的...

    java架构师之路:JAVA程序员必看的15本书的电子版下载地址知识.pdf

    Java架构师之路是一个漫长而富有挑战性的过程,它要求程序员不断地学习和提升自己的技能。以下是一些基于给定书籍推荐的知识点,可以帮助Java程序员逐步成长为一名专业的架构师: 1. **Java编程入门**: - **...

    软件架构师成长之路

    - **软件知识**:架构师需要熟悉多种编程语言和技术栈,包括但不限于Java、Python等,并且了解如何利用开源框架和技术来构建高性能的应用程序。 - **网站优化**:针对高流量的互联网应用,架构师还需要具备网站优化...

    java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验).rar

    java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员...

    《高级软件架构师培训讲义》.rar PDF

    非常棒的一部内部讲义,强烈推荐高级软件架构师 目录: 00 架构师与设计师 01 软件流程实施方案选择 02 软件架构文档设计 03 软件架构风险管理 04 如何描述和评估软件架构质量 05 设计模式与软件架构设计 06 AOP开发...

    资深IT架构师简历表格.doc

    资深IT架构师简历表格.doc

    什么是软件架构师(精).docx

    软件架构师不仅仅是技术专家,也是创新者,他们通过架构设计帮助企业开发新产品,开拓新市场,并引领技术体系的发展。 架构师的职责通常分为几个方面: 1. **行业应用架构**:行业架构师需要对特定行业有深入理解,...

    做人、做事,做架构师——架构师能力模型解析

    业务能力则是架构师区别于普通程序员的重要标志。理解业务需求,将业务逻辑融入系统设计,使得架构能够支撑业务的发展和变化。这要求架构师不仅要有技术深度,还要有对业务流程的敏锐洞察,能够预见和解决业务发展中...

    中科院软件架构师讲义

    ### 软件架构设计思想与...综上所述,软件架构师的角色不仅仅局限于技术层面,还需要具备广泛的技能和深入的行业理解。在不断变化的技术环境中,保持学习的态度和技术的敏锐度对于成为一名优秀的软件架构师至关重要。

    测试架构师修炼之道:从测试工程师到测试架构师1

    测试架构师在软件开发行业中扮演着至关重要的角色。从简单的测试执行者到架构师级别的测试专家,职业晋升的道路上充满了挑战与机遇。《测试架构师修炼之道:从测试工程师到测试架构师1》这本书,就是为了指引那些...

Global site tag (gtag.js) - Google Analytics