成就职业理想:九十七条架构师必知的事情

51CTO 发表于:11年06月29日 10:16 [转载] 51CTO

  • 分享:
[导读]本文是刘昆云编译的,文中列举了97条架构师应该了解的事情,希望对你有所帮助。

1. Don't put your resume ahead ofthe requirements by Nitin Borwankar

【需求先于履历】

身为架构师要平衡客户、公司和个人的利益。用时兴的技术为个人履历增光添彩固然重要,但应该把客户的长远需求放在首位。约束技术偏好,能够使客户、团队、自己和家人都多些快乐。在未来的工作中,客户的口碑是比个人的履历更加宝贵的东西。

2. Simplify essential complexity;diminish accidental complexity by NealFord

【简化先天复杂性,避免后天复杂性】

任何业务问题都有其复杂性,简化复杂性是客观需要。但为此采取的工作很可能带来新的复杂性。了解代码中真正用于处理业务的比例,从实践中发展出恰当的系统框架,避免随意添加框架。后天复杂性的积累会使系统越来越难以维护和升级。

3. Chances are your biggest problemisn't technical by Mark Ramm

【技术不是最大问题】

聪明的架构师能够选择最恰当的技术,而有效的架构师则还要说服开发人员理解他的选择。软件是由人开发的,人心不齐才是最大的问题。有时人的问题导致项目失败,却让技术来背黑锅。必要时应进行平等的对话、理性的分析、耐心的解释。

4. Communication is King; Clarityand Leadership its humble servants byMark Richards

【沟通为王,澄清和引领为仆】

闭门造车、发号施令的架构师必将被反抗的开发者所推翻。架构师应就项目的宗旨和目标与开发人员沟通。有效沟通的要点是简明和垂范。抛开长篇大论的 Word文档,使用清晰易懂的Visio图形;讨论时使用白板,对重要的内容拍照记录。与QA、PM和开发人员密切合作,让他们了解架构过程,洞悉架构全景,引领他们走出迷茫。

5. Architecting is aboutbalancing by Randy Stafford

【在平衡中进行架构】

架构工作包括模块划分、接口定义、职责分配、模式应用、性能优化等传统技术活动,也要考虑安全、可用性、支持、发布、开发条件等问题,更要照顾管理人员、操作人员、维护人员等有关各方的关切。要在平衡各方关切的过程中开展架构工作。

6. Seek the value in requestedcapabilities by Einar Landre

【鉴别客户要求中的价值】

客户往往把他们的思考作为解决他们所面临的问题的方案。但客户要求未必都是对解决实际问题有价值的。架构师应当提出更好、更节约的解决方案。这一目标可以通过和客户进行讨论达到。和客户讨论时,多从业务角度问问为什么,少使用软件术语,不要假定客户具有软件方面的知识。

7. Stand Up! by Udi Dahan

【站着说话】

架构师和项目组成员的沟通,不应象过去和机器打交道一样随意。当你的听众超过一个人时,自己就应当站着说话。站着说话的好处是有指挥整个房间的气势,增加了你的权威和自信,别人更不容易打断你的话。站着说话还能使用眼神交流、肢体语言,也有助于控制声音。站着说话,能提高沟通效果。

8. Skyscrapers aren't scalable byMicheal Nygard

【摩天大楼不可伸缩】

把软件工程比喻成盖楼,有好的一面。从荒芜的工地到耸立的高楼,过程漫长。每一段时间中,每一个工人都要各尽其责,每一个未完工的构件都要稳稳当当才行,值得软件工程学习,这就是一次一个组件的增量部署。这个比喻也有不恰当的一面。摩天大楼在造成以后就不可搬迁、不可加层。而软件则可以反复调整,这就是“及早发布”(Early release)。

9. You're negotiating more oftenthan you think. by Michael Nygard

【谈判多过你的想象】

我们作为工程师,更愿意与人协作。而项目负责人作为控制项目成本的人,更在乎削减成本。我们看到的是谈话,他看到的是谈判,所以我们常常遭受预算打击。如果你提了冗余、备份之类的东西后,他问你“这个东西必须要有吗?”,千万不要让步。不要说“没有也行,只是会在故障恢复期间不能运行”这样的话。反而要说:“事实上不仅要两套,要四套才能确保万无一失。没有这个,每天就至少会有三次出问题,而且不排除当你正在给董事长做演示的时候出问题。”

10. Quantify by Keith Braithwaite

【量化】

需求必须量化。“快”、“好”、”伸缩性”、“可用性”、“灵活”、“极少”、“大量”等都不是需求,因为它们不可量化,这些词找不到客观的衡量标准。谈需求的时候,必须说明数目、时间、来源、去向,不能准确给出数值的,必须指明一个具体的范围。例如:最大响应时间1500毫秒,平均响应时间为 750至1250毫秒。

11. One line of working code isworth 500 of specification by Allison Randal

【一行正确代码胜过千言万语】

设计说明是宏观描述,代码则是微观实现。可是如果设计说明脱离了编码实现,犹如违背物理学原理的大楼设计,纵使它美轮美奂,也会转眼间土崩瓦解。架构师做设计时,要时刻想着编码人员如何实现它。设计完成后,如果程序员提出质疑,往往就是设计有问题,至少是设计不清晰。对设计进行再修改是正常的事情。

12. There is no one-size-fits-allsolution by Randy Stafford

【没有通用解决方案】

一双鞋难合千人脚,过去积累的经验未必适合现在具体的应用情景,架构师要坚持锻炼自己的情景意识,按照新的情景进行设计。想要打造一个通用的解决方案往往造成过度设计,添加大量无关宏旨、甚至影响性能的不合理要求。

13. It's never too early to thinkabout performance by Rebecca Parsons

【尽早考虑性能】

用户通常只会提出功能需求。架构师要尽早考虑非功能需求。性能测试也要及早展开。

14. 14.Application architecturedetermines application performance byRandy Stafford

【软件系统架构决定性能】

如果架构不良,性能就不会良好。资源不是无限的,动用再多的性能调优手段,到头来也是束手无策。

15. Commit-and-run is a crime. by Niclas Nilsson

【带错提交是祸害】

下班时间到了才写完最后一行代码,干脆省略了编译、测试的过程,直接提交代码,迅速奔赴约会。这种做法使得隐藏的错误随着项目组其他开发人员更新代码而扩散,导致其他人不敢更新代码,打乱了大家的工作流程。个别开发人员把自己该做的工作留给他人是错误的。当然,架构师也应考虑给开发人员创造好有利的环境。比如,自动构建工具、自动测试工具、测试驱动开发实践、持续集成服务器等。

16. There Can be More than One by Keith Braithwaite

【世界并非千篇一律】

技术上能做到强求统一,实现一套数据模型、一种消息格式、一套收发系统,如此等等。可是业务世界往往是不一致、多侧面、甚至模糊的。统一的设计未必能满足各种业务要求,应当要允许那些互相矛盾、重复或交叉的非功能特性存在。

17. Business Drives by Dave Muirhead

【业务决定技术】

为了建设一个系统,架构师必须把技术部门和业务部门团结在一起。但要明白二者的立场是不同的,避免技术人员作出业务决策。建造系统通常都是讲求投资回报的,从开工到投产要不断遇到各种技术上的决策,要一直以满足业务部门的要求为准则,才能获得最大的投资回报。如果业务部门对技术部门的提问迟迟不予答复,那么可以视为委托开发团队考虑。即使这样也不能直接将问题交回给技术人员,因为业务问题是宏观问题,技术决策是微观问题。架构师应当组织讨论并拿出答案。

18. Simplicity before generality,use before reuse by Kevlin Henney

【先简化再泛化、先使用再重用】

用户掏钱买的往往不是什么通用的功能,大多数时候他们只看重其中自认为重要的部分。设计的产品要先满足具体的要求,经过实践并简化掉那些不必要的东西,才能进行泛化推广;要先有使用的机会,才能带来重用的机会。如果一开始就以通用、重用为目的闭门造车,结果很可能是无用、难用、弃用。

19. Architects must be handson by John Davies

【架构师必须是高手】

架构师不是空谈家,他必须在数据库、软件编程、数据信息、网络等某一领域有专长并且通晓其它领域,换句话说,他要想带领团队就必须知道团队成员需要知道的技术。架构师和项目经理,好比飞机上的副驾驶和驾驶。飞机常常是副驾驶操纵,可是关键时刻得看驾驶的。项目经理忙于日常任务安排、资源调配,而架构师看似清闲,而在技术决策中要提出重要的意见,对保证项目的质量和按期交付起着很大的作用。

20. Continuously Integrate by Dave Bartlett

【持续集成】

过去软件项目中提倡及早构建、及时发布,以便尽早发现风险、避免风险。随着自动构建技术日趋成熟,现在已经能够做到持续集成了。持续集成(CI)工具可以自动构建、测试,在完成时还能向外发送电邮或即时信息。

[责任编辑:韩蕊]
Ruby
SAP分享了多年来对企业运营变革的洞察,以及SAP Business Suite powered by HANA如何推动企业在对业务影响最小的情况下向实时企业转型,从而帮助企业实现更睿智的业务创新、更快速的业务流程和更简化的业务交互。发布会现场,SAP公司宣布,中国最大的瓶装水生产商——农夫山泉成为基于 SAP HANA 的SAP Business Suite在中国的首家客户。
官方微信
weixin
精彩专题更多
存储风云榜”是由DOIT传媒主办的年度大型活动。回顾2014年,存储作为IT系统架构中最基础的元素,已经成为了推动信息产业发展的核心动力,存储产业的发展迈向成熟,数据经济的概念顺势而为的提出。
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
联想携ThinkServer+System+七大行业解决方案惊艳第十六届高交会
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技术有限公司 版权所有.