`

每个好架构师都是一位出色的程序员

阅读更多
一个优秀的软件架构师,首先一定是一个出色的程序员,这是本篇文章的议题。从本文我们可以了解到一个架构师的工作是什么,他容易遇到的问题是什么,因此他为什么必须是一个出色的程序员。

不过,在搞了四、五年编程之后,程序员们往往早已失去了当年对这些“高级”职位的神秘感,甚至会对自己所在项目的架构师抱怨不已,背后里称他们是一群水王。所以江南白衣曾撰文述说:“国内的架构师到了三十岁以后很多就往理论上跑,而国外的架构师在往上发展的同时保持下面的编程体验,所以国内多水王,而国外则多大师。”

这就是我们今天这篇文章的论题:一个优秀的软件架构师,首先一定是一个出色的程序员。

这句话按照Fred George先生的话来说,那就是“不编程的架构师的职业生涯是短暂的”。他说这句话的背景主要是针对有些架构师的设计与实现有断层的问题而言的,因为如果架构师不去实践,只是想当然的认为“没问题,这个想法能实现”,那么对于项目的落实而言是个很大的隐患。支付宝架构师冯大辉也表示过,架构师是一个比较“虚”的岗位,主要的问题都在“落地”的过程中。

而一个架构师确认一个想法究竟能不能落地的最直接的方法,就是自己编写代码,尝试“实现一个系统最难实现的一部分”(Fred George)。看看Fred,他自己就是最好的示范:年纪一大把了,仍然每天都在编写代码。事实上,我们可以列举出一个长长的顶级架构师的列表,你会发现他们没有一个不是顶级的程序员。


我们可以列举出一个长长的顶级架构师的列表,你会发现他们没有一个不是顶级的程序员

不过这在逻辑上或许没有多少说服力,因为似乎这并不能证明一位资深架构师凭自己的经验感觉不能够知道一个想法能不能落实。如果你觉得上面这些只是某些西方老头儿对编程的古怪癖好,那么不妨看看eBay的架构师Randy Shoup先生是如何总结架构师在项目中的职责的:

1. 产品团队要做一个新产品,架构师开工了。架构师要帮助产品团队把可行性、技术需求以及权衡取舍等因素一一剖析清楚。

2. 技术需求出来了,架构师的主要工作开始了:设计整体的技术实现步骤。Randy在后面补充说“大多数成功的架构师都喜欢与其他团队成员一同完成架构和设计这一块的工作”,而认为自己应独自完成这个步骤则是新手架构师常见的误区。

3. 与开发团队一起,完成设计与实施的细节

4. 与开发团队和运维团队一起,完成部署的过程

5. 与运维团队一起,进行部署之后的维护和故障排除


充满荆棘的专家程序员之道
独家专访王翔:坚持不懈是架构师人生第一
浅析架构师工作流程及成功关键
独家专访梁远华:架构师需要广泛的知识面
Adobe架构师谈Scala:功能强大但令人困惑
在这个过程中,一个架构师至少有一半以上的工作是需要与开发团队一起进行的。按照Randy的描述,这是“一个架构师不能将实施细节抛之脑后”的体现。而且与开发团队一起工作,命令式的领导方式并不被推崇,一个架构师必须通过自己的个人影响力来对开发团队进行指导工作。而什么是影响力?说的直白一些,就是通过自己写代码以及和其他成员一起写代码,来指导团队成员实现每个架构细节的思路。

只要稍微思考一下,就会明白此举的重要性。如果一个架构师靠命令管理开发团队,告诉他们“要实现这个模块”,“要实现那个功能”,而团队也尝试照办。可是或许是架构师的要求太高了,或许是团队的开发实力不够,团队成员便会向架构师求助:您看这个我们不知道如何实现,您能否指导一下?架构师可能知道怎么处理,也可能没有仔细思考过这个问题,但又觉得自己做大事者不拘泥于小节也,于是一皱眉头扔下一句:这是你们的事,你们自己解决!

然后就是矛盾的开始了。架构师只觉得团队技术不够,而团队则对架构师愈发不满。项目黄了不说,开发团队中也会传出各种说法,比如说“此君其实是个一行代码也不会写的大忽悠!”



综上所述,便映证了Fred的那句断言:“不编程的架构师的职业生涯是短暂的”。一个架构师不仅要会写代码,还必须要能够写出自己设计的系统中最难实现的那段代码。这样他才能够放心的把“落地”的这个重担交给开发团队来做。

让我用Fred的这句话做为本篇的总结:“一个架构师的价值在于,他不仅能看到系统的美,而且能够在建造系统的时候能够把这些美创造出来。”

是的,每个好架构师都是一位出色的程序员。

分享到:
评论

相关推荐

    做人做事做架构师

    标题和描述均提到了“做人做事做架构师”,这一表述实际上...通过不断学习和实践,每一位有志于此的程序员都能够逐步成长为一名合格乃至杰出的架构师。在这个过程中,始终保持开放的心态,勇于接受挑战,是成长的关键。

    软件架构师教程

    《软件架构师教程》阐述了作为一个软件架构师所需要具备的基本技能,并按照军事训练的一般程序,将这些技能划分为:基础训练、准备战斗、训练学校、伞兵学校、情报操作等阶段,并对每个阶段需要掌握的技术进行了扼要...

    成为一个好的程序员需要的书.txt

    ### 成为一个好的程序员需要的书籍 对于任何想要在IT领域取得成功的人来说,了解并掌握正确的学习资源至关...通过阅读上述推荐的书籍,并积极参与到实际项目中去,相信每位学习者都能够逐步成长为一名出色的程序员。

    Java架构师之路.docx

    - **《重构:改善既有代码的设计》**:此书强调了重构的重要性,帮助程序员提高代码质量和可维护性,是每个程序员都应该掌握的技能。 - **《测试驱动开发 by Example》**:这是一本实战导向的书籍,通过实例教学...

    程序员怎么选择发展方向

    随着技术日新月异的变化和个人能力的不断提升,每位程序员都会面临多重选择。本文旨在从不同的角度探讨程序员可以选择的职业路径,并深入分析每条路径的特点与挑战。 #### 专家级程序员 对于对特定技术领域充满...

    oracle部分面试题-DBA数据库管理员JAVA程序员架构师必看.docx

    在这些面试题中,我们可以看到涉及Oracle数据库管理、SQL查询以及数据统计的多个知识点。...这些知识点对于DBA、Java程序员和架构师来说都是至关重要的,掌握这些技能能够有效地处理和分析数据库中的数据。

    VC++程序员如何面试

    ### VC++程序员如何面试 #### 一、面试前的准备 1. **着装与面貌:**面试前,应确保穿着整洁、得体,给面试官留下良好的第一...通过精心准备和恰当应对,每一位VC++程序员都能够提高面试成功率,最终找到满意的工作。

    【高清完整pdf】高效程序员的45个习惯 敏捷开发修炼之道

    本书名为《高效程序员的45个习惯 敏捷开发修炼之道》,由Venkat Subramaniam和Andy Hunt两位作者...书中的每一个习惯都值得程序员细细品味,并将其融入到日常的工作与学习之中,真正地实践成为一名真正的高效程序员。

    前端 高性能 后台 架构师

    本主题将探讨这两个领域的主要知识点,以及如何通过学习和实践成为一位优秀的架构师。 首先,我们关注"高性能网站建设"。[大家网]高性能网站建设指南[www.TopSage.com].pdf 这本书可能涵盖了以下几个关键领域: 1....

    JAVA程序员必看的15本书JAVA自学书籍推荐.docx

    本文将推荐 15 本书籍,涵盖 JAVA 编程入门、进阶和架构师之路三个阶段,每个阶段都选择了最适合的书籍,旨在帮助 JAVA 程序员不断提高自己的技术水平。 一、Java 编程入门类 在 JAVA 编程入门阶段,快速掌握 JAVA...

    成长为架构师途中的11个谣言-附能力模型.docx

    本文旨在澄清这些谣言,并提供一个架构师的能力模型,帮助工程师明确目标并制定有效的成长策略。\n\n首先,我们要明白,学习是贯穿整个职业生涯的核心。谣言之一是“年龄限制”,认为程序员到了35岁就无法继续发展。...

    程序员的发展方向 职业发展方向

    例如,如果一位程序员专注于Java开发,那么他可以通过不断深入学习Java相关的技术栈(如Spring框架、微服务架构等),逐步成长为该领域的高级工程师甚至是技术专家。这类职业路径的典型职位包括: - **Java高级...

    十几位资深架构师,整理了最新架构师学习体系,分享给大家......

    不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,现实却是残酷的”,很多同学...

    Visual C++程序员职业规划

    随着软件行业的快速发展与竞争加剧,如何规划个人职业路径,以适应不断变化的市场需求,成为了每位程序员必须面对的问题。本文将深入探讨Visual C++程序员在职业道路上可能遇到的挑战与机遇,并提出相应的规划建议。...

    Design It! From Programmer to Software Architect(2017.10).A4.pdf

    书中还提供了实战练习、现实场景和团队决策制定工具,旨在帮助每个人获得成为自信软件架构师所需的实践经验。 书中涉及的主题包括但不限于: 1. 软件架构的基本概念:架构师应该理解的基本概念,例如软件架构的...

    程序员成功之路

    每个角色都有其特定的要求和挑战,提前规划可以帮助更好地适应职业发展。 对于即将进入IT行业的新人,了解行业动态至关重要。当前,全球IT行业正经历着数字化转型的浪潮,企业对技术人才的需求持续增长。中国作为...

Global site tag (gtag.js) - Google Analytics