架构师必须写代码
——
高效程序员的
45
个习惯之习惯39
“我们的专家级架构师Fred会提供设计好的架构,供你编写代码。他经验丰富,拿的薪水很高,所以不要用
一些愚蠢的问题或者实现上的难点,来浪费他的时间。”
软件开发业界中有许多挂着架构师称号的
人。作为作者的我们,不喜欢这个称号,原因如下:
架构师
应该负责设计和指导,但是许多名片上印着“架构师”的人配不上这个称号。作为架构师,不应该只是画一些看起来很漂亮的设计图,说一些像“黑
话”一样的词汇,使用一大堆设计模式
——
这样的设计通常不会有效的。
不可能在PowerPoint
幻灯片中进行编程
You
can’t code in PowerPoint
这些架构师通常在项目开始时介入,绘制
各种各样的设计图,然后在重要的代码实现开始之前离开。有太多这种“
PowerPoint
架构师”了,由于得不到反馈,他们的架构设计工作也不会有很好的收效。
一个设计要解决眼前面临的特定问题,随
着设计的实现,对问题的理解也会发生改变。想在开始实现之前,就做出一个很有效的详细设计是非常困难的(见第
48
页上的实践
11
)。因为没有足够的上下文,能得到的反馈也很少,甚至没有。设计会随着时间而演进,如果忽略了应用的现状(它的具体实现),要想设计一个新的
功能,或者完成某个功能的提升是不可能的。
作为设计人员,如果不能理解系统的具体
细节,就不可能做出有效的设计。只通过一些高度概括的、粗略的设计图是没有办法达成对系统的理解的。
这就像是尝试仅仅通过查看地图来指挥一
场战役
——
一旦开打,仅有计划是不够的。战略上的决策也许可以在后方进行,但是战术决策
——
影响成败的决策
——
需要对战场状况的明确了解。
“程序员修炼之道”丛书中指出
不存在所谓的最终决策
。没有哪个决策做出之后,就是板上钉钉了。实际上,就时间性来看,不妨把每个重要的决策,都看作沙上堆砌的城堡,它们都是在变化之前所做出的
预先规划。
新系统的设计者 Donald E. Knuth
新系统的设计者必须要亲自投入到实现中去。
正像
Knuth
说的,好的设计者必须能够卷起袖子,加入开发队伍,毫不犹豫地参与实际编程。真正的架构师,如果不被允许参与编码的话,他们会提出强烈的抗
议。
有一句泰米尔谚语说:“只有一张蔬菜图
无法做出好的咖喱菜。”与之类似,纸上的设计也无法产生优秀的应用。设计应该被原型化,经过测试,当然还有验证
——
它是要进化的。实现可用的设计,这是设计者或者说架构师的责任。
Martin Fowler
在题为“
Who needs an
Architect
?”的文章中提到:一个真正的架构师“……应该指导开发团队,提升他们的水平,以解决更为复杂的问题”。他接着说:“我认为架构师最重要的任
务是:通过找到移除软件设计不可逆性的方式,从而去除所谓架构的概念。”增强
可逆性
是注重实效的软件实现方式的关键构成部分。
要鼓励程序员参与设计。主力程序员应该
试着担任架构师的角色,而且可以从事多种不同的角色。他会负责解决设计上的问题,同时也不会放弃编码的工作。如果开发人员不愿意承担设计的责任,要给他们
配备一个有良好设计能力的人。程序员在拒绝设计的同时,也就放弃了思考。
优秀的设计从积极的程序员那里开始演化
积极的编程可以带来深入的理解。不要使用不愿意编程的架构师——不知道系统的真实情况,是无法展开设计
的。
切身感受
架构、设计、编码和测试,这些工作给人
的感觉就像是同一个活动
——
开发
——
的不同方面。感觉它们彼此之间应该是不可分割的。
平衡的艺术
-
如果有一个首席架构师,他可能没有足够的时间来参与编码工作。还是要让他参与,但是别让他开发
在项目关键路径上的、工作量最大的代码。
-
不要允许任何人单独进行设计,特别是你自己。
摘自:http://turingbooks.iteye.com/blog/559023
分享到:
相关推荐
"java程序员到架构师之路.pdf" 以下是对《java程序员到架构师之路.pdf》的详细解读: 一、Java 编程入门类 作为 Java 程序员,快速掌握 Java 基础语法和基本用法是非常重要的。在这个阶段,需要快速过一遍 Java ...
【优秀程序员的十个习惯】 1. 持续学习与跟进新技术:作为优秀程序员,保持对新知识的渴望至关重要。不断学习新的编程语言、框架和工具,关注行业动态,参与专业社区讨论,如CSDN、ITPUB、CHINAUNIX、digg.com等,...
成为一名优秀的架构师,意味着你需要在“个人特性”和“技术技能”两方面下足功夫。在这个能力模型中,架构师的能力被分为“技术专业能力”、“人际关系能力”和“业务能力”三大核心。 首先,技术专业能力是架构师...
系统架构设计程序员向架构师转型之路是一项艰巨但充满挑战的任务,涉及到技术深度、广度、沟通能力以及业务理解等多个方面。以下是对这一主题的详细阐述: 首先,我们要明确架构师的角色。架构师并不仅仅是高级...
【优秀程序员45个习惯】是一本旨在提升程序员专业素养的书籍,由敏捷开发领域的权威Venkat Subramaniam和Andy Hunt共同撰写。这45个习惯覆盖了态度、学习、开发流程、用户、编程以及团队协作等多个方面,旨在帮助...
书中提出定期会面时间的重要性,强调架构师必须亲自编写代码,实行代码集体所有制,成为团队指导者,允许团队成员自己想办法解决问题,并在代码准备就绪后进行共享。同时,书中也提到了做代码复查和及时通报进展与...
《高级程序员的45个好习惯》一文,详细列举并解读了这些高效实践,涵盖从敏捷开发到学习态度,再到软件交付、敏捷反馈、编码规范和调试策略等多个方面,旨在为程序员提供一个提升自身能力的指南。 首先,敏捷开发...
良好的代码风格是优秀程序员的必备素质,它关乎个人代码的可维护性,也关乎团队合作的效率。 首先,代码行极限是代码风格中一个古老而重要的议题。80字符的限制起源于Unix时代,它源于旧式终端的显示宽度,如今,...
[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及...
成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的敏锐度。以下是对标题和描述中提到的十个程序员习惯的详细解释: 1. **...
程序员的角度看web安全——兼谈php代码审计.pdf
黑马程序员——Android移动开发源码
《代码里的世界观—通往架构师之路》是IBM资深软件架构师余叶的著作,它汇聚了作者13年的编程经验和深度思考。这本书旨在通过实际案例和深入浅出的讲解,帮助程序员从简单的代码出发,逐步掌握更高层次的编程技巧,...
书中涵盖了从代码组织、命名规范到错误处理、调试技巧等多个方面,旨在帮助程序员写出高质量的代码,提高软件的可读性、可扩展性和可维护性。 “基础”标签表明了这本书对编程基础知识的重视。书中可能包括变量、...
优秀程序员的45个习惯.rar ok good
本视频教程仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则
优秀程序员的45个好习惯,看看总有好处的
在这个“优秀程序员之路——ASP.NET开发经验及技巧大汇总”中,我们将深入探讨ASP.NET的核心概念、开发实践以及各种实用技巧,帮助你提升编程技能,成为一名出色的开发者。 首先,ASP.NET的基础知识是必不可少的。...
像Randy Shoup所说的,学会权衡取舍是架构师必须掌握的艺术。 【坚韧不拔与管控能力】 如同王翔强调的,坚持不懈是架构师职业生涯中的第一课。面对挑战和困难,架构师需要展现出强大的管控能力,确保项目的顺利...