软件架构师的12项修炼
2012-5
机械工业出版社华章公司
Dave Hendricksen
234
张菲
无
前言:软的东西总是比硬的东西还硬。—美国企业家、百事公司副董事长罗杰•恩里科在开始阅读本书前,我希望你准备保持一种开放的心态,并渴望对日常生活尝试某些新的方法。我叫DaveHendricksen,是ThomsonReuters公司的一名软件架构师。我的工作主要是产生智力法规信息,包括在Westlaw.com网站上从法律、法规及知识产权材料的数据捕获到数据显示过程。我和一位漂亮女士已经结婚22年了。我们育有两个孩子,养着一只猫和一条狗,另有一个鱼塘。作为一名吃技术饭的人,我经常觉得我自己和“平常”世界的其他人不太一样。分析式思维、关注于解决问题、构建事务、连续几个钟头玩游戏,所有这些对我来说再正常不过了。我喜欢学习新东西。对我而言,上学总是很有意思。我拥有数学和圣经专业的学士学位,以及两个硕士学位—一个是计算机科学,另一个是技术管理。我喜欢努力工作,渴望付出任何辛劳以便按时完成项目。我喜欢听老板说:“干得真棒,Dave!”当然了,我的想法是这样的:工作出色,获得晋升。生活毕竟在某种程度上有些恐怖,至少在从技术进入管理时。总是有道看不见的屏障阻挡着大批有才能的人往上爬,或者在事业上有进一步的发展。这道神秘的屏障反映出人们软技能的缺乏,它默默地阻碍着那些人往更高的阶梯前进。我写这本书的目的是帮助你学习必备的软技能,这些技能是你要修炼为一名软件架构师所必须掌握的。本书假定你已经有了成为架构师必备的技术技能,因此本书不会关注此类技能。换句话说,本书着重于阐述对作为架构师日常行为非常关键的十二项必备软技能。这些技能对于有技术背景的人们来说往往是最有挑战性的技能,也是成为优秀的软件架构师必须修炼的技能。本书的这十二项技能按三个部分来组织:关系技能、个人技能和商务技能。这种分类基于相关的优先顺序,即如果你没有关系技能,其他两组技能就不用提了。倘若你与别人或单位中的若干部门相处不好,你不大可能被提拔到架构师的位置,或者较长时间待在这个位置上。类似地,如果你没有必需的个人技能,商务技能也会无从谈起。最后,尽管所有这些领域都很重要,但从优先次序来看,假如你没有首先掌握必备的关系技能,商务技能便不会达到你期望的效果。我将这些技能看做一个金字塔,正如下图所表达的那样。架构师的必备技能希望你喜欢阅读本书,并且学到能使你成为架构师的新知识,这些新知识还供你成为架构师后改进技能,或者更好地理解架构师的本质和角色。如果你有任何问题或评论,尽管给我写邮件好了。祝你过得愉快!—Dave
每一位软件开发人员都有一个架构师的梦,但为何真正的软件架构师却寥寥无几?软件开发人员更容易在技术上有所积累和突破,但是技术上的精湛并不足以使你成为一位优秀的软件架构师。合格的软件架构师究竟应该具备哪些能力和素养?《软件架构师的12项修炼》科学而系统地归纳出软件架构师应该具备的完整能力模型,该能力模型呈一金字塔结构,共分为4层:位于最底层的是技术技能,是软件架构师的基石,属于硬技能;从下往上的三层分别是关系技能、个人技能和商务技能,这些都属于软技能。由于硬技能会随着具体技术领域的不同而千差万别,因此本书假定读者已经具备了这方面的技能;但其他3大方面的软技能却在每个技术领域都适用,是每一位软件架构师的必修课,这是本书的核心内容。 为了便于认知和实践,本书将3大方面的软技能分为12项:关系技能包含文雅的举止(在任何环境下都能与人文雅相处的能力)、沟通(与人有效交互的能力)、协商(将事情办成的能力)、领导力(通过施加影响力将事情办成的能力)和政治(“政治场合”与人交互的能力)等5项;个人技能包含透明化(使自我、团队关系和项目透明化的能力)、激情(激发和保护激情的能力)和语境切换(将注意力迅速切换到新语境并保持专注的能力)等3项;商务技能包括商务知识(读懂商务语言的能力和了解产品与顾客的能力)、创新(如何通过学习和思考来创新的能力)、实用主义(抓住关键问题的能力)、认知(认知目标、战略及合作伙伴的能力)等4项。 《软件架构师的12项修炼》不仅帮助软件开发人员系统地学习如何修炼这12项软技能,而且还能让他们进一步理解软件架构师的角色和本质,使他们最终突破技术的“天花板”,成为一名合格的软件架构师。
作者:(美国)亨德里克森(Dave Hendricksen) 译者:张菲 亨德里克森 Dave Hendricksen,全球三大咨询提供商之一汤姆森路透集团(Thomson Reuters)资深软件架构师,拥有近20年工作经验,在软件架构方面颇有造诣,尤其是在软件架构师们普遍缺乏的软技能方面。他结合自己多年的经验,总结出了“软件架构师的金字塔能力模型”。他拥有数学和圣经两个专业的学士学位,以及计算机科学和技术管理专业的硕士学位。 张菲,资深软件开发工程师和网络工程师,拥有超过15年的从业经验,经验十分丰富。业界知名的科技图书译者,曾经翻译了《代码大全(第2版)》(合译)、《程序员修炼三部曲之三:项目自动化之道》和《编程卓越之道:第二卷》等经典著作,深受读者好评。他还擅长计算机硬件产品的研发,在微电子和光电通信方面有一定的研究。此外,他还在《计算机世界报》等IT媒体上发表了多篇技术文章。
译者序前 言致 谢第一部分 关系技能修炼第1章 文雅的举止31.1 别人怎样评价你31.2 技术之天花板41.3 变得文雅、专业的途径61.3.1 注重关系甚于争执孰对孰错61.3.2 学会委派81.3.3 生活是有反作用的91.3.4 有效沟通之生与死111.3.5 要正直诚实而不是率直131.3.6 不要掩盖问题—它们以后还会冒出来的141.3.7 提供专业的服务161.3.8 忘掉以前的冒犯171.4 小结191.5 参考资料19第2章 沟通222.1 沟通原则232.1.1 先听后说242.1.2 专心致志242.1.3 正面思考252.1.4 尽早道歉252.1.5 不要在缺陷上招致恼羞成怒262.2 沟通策略272.2.1 多说“是”,少说“不是”272.2.2 在销售过程中建立起信任关系282.2.3 特殊场合才说“不”292.2.4 抑制想自卫的冲动312.2.5 倾听建议来改善合作312.2.6 了解别人和自己的沟通需求322.2.7 才思敏捷342.3 与执行官沟通352.3.1 执行官需要信任、忠诚和连贯性352.3.2 清晰性甚于完整性362.3.3 不要让执行官感到惊讶372.4 小结382.5 参考资料39第3章 协商413.1 协商原则423.1.1 不要让人惊讶423.1.2 不要模棱两可433.1.3 委派权威而不是义务433.1.4 有困难时寻求帮助443.1.5 不要掩盖问题443.1.6 即使很难,也要坚持做正确的事453.2 协商策略453.2.1 倾听你的内心呼唤453.2.2 设法同意453.2.3 不要找分歧473.2.4 寻找共同点473.2.5 如果无法达到一致,就让所有人稍微不满吧483.2.6 将协商作为一种改进措施493.3 协商前的工作493.3.1 知道哪些是可协商的493.3.2 了解如何在单位里游刃有余513.3.3 关键决定上寻求合作氛围523.3.4 学习文化533.3.5 让别人明白你的想法533.4 协商的收尾543.4.1 捍卫决策的执行543.4.2 维护架构决定记录543.4.3 你有时会赢,有时会输553.4.4 从委派中学习563.5 小结563.6 参考资料58第4章 领导力604.1 领导力的原则614.1.1 建立信任关系614.1.2 建立共识624.1.3 建立战略伙伴关系(通过关系带来安全)624.1.4 要身体力行(为你所说的话带来安全)634.1.5 感知风险、评估影响、做出行动(明确风险的清晰度)644.1.6 适当处理风险:什么是鞭炮,什么是原子弹(明确影响的清晰度)654.2 领导策略664.2.1 奥卡姆剃刀法664.2.2 展现可视化信息664.2.3 领导者要确保事情不跑题674.2.4 基于环境推销684.2.5 随大流(找机会利用已有的资源)694.2.6 关注执行官于认知,而非解决冲突694.3 领导的时机704.3.1 利用单位的动量704.3.2 知道何时伸出援手714.3.3 允许其他人学习714.3.4 知道何时该卓尔不群724.3.5 请求原谅还是征求允许734.4 领导别人734.4.1 允许别人奉献(不要命令)744.4.2 通过影响力激励别人764.4.3 确保别人能做主764.4.4 处理冲突774.5 小结774.6 参考资料79第5章 政治815.1 政治的定义815.2 政治市场825.3 政治环境855.3.1 与公司的战略方向保持一致855.3.2 理解你所处的文化环境865.3.3 及早处理别人关注的问题875.3.4 相信你所推销的东西895.3.5 不关我的事905.3.6 关系很重要(与别人的关系)905.4 政治原则915.4.1 宽宏大量915.4.2 不要为你的价值妥协925.4.3 光明正大地竞争925.4.4 透明地操作925.4.5 你是怎样的人就怎样表现935.4.6 帮助别人,不求回报935.4.7 认识到生活是反身的935.5 政治策略945.5.1 帮助别人达成其目标945.5.2 学会享受过程而不是目标945.5.3 在关键之处力争出色955.5.4 愿意就低优先级目标妥协955.5.5 不要对别人的糟糕举止采取冒犯的行动965.5.6 私下处理人际问题975.6 政治时机975.6.1 以适时的作风执行事情975.6.2 今天失利并不代表明天不会成功985.6.3 要认识到政治上你不会是常胜将军995.6.4 积极参与政治游戏995.7 成为一名好的政治人物1005.8 参考资料101第二部分 个人技能修炼第6章 透明化1056.1 住在玻璃房中的架构师1056.2 透明化的类型1066.3 自我透明化1076.3.1 表现自然真诚1076.3.2 承认自己的弱点1086.3.3 承认你的实力和兴趣1096.3.4 赶在人前与上司沟通1106.4 项目透明化1116.4.1 让执行官看到你手里所有的扑克牌1116.4.2 架构师把透明化和清晰性带到许多领域1126.4.3 架构师将“发现”变成“收获”1136.5 关系透明化1166.5.1 该信任时就给别人信任1166.5.2 你说的话长久不变1176.5.3 道歉表明你的透明化1186.5.4 学会在做出反应前倾听(寻求透明化)1186.5.5 允许别人对你透明化1196.6 成为一名透明的架构师1196.7 参考资料120第7章 激情1227.1 什么是激情1237.2 发现激情1247.2.1 如何找到激情1247.2.2 恒心与激情:终极的杀手组合1257.2.3 岗位上的激情1267.2.4 重新点燃激情1277.3 将激情作为向导1277.3.1 等待机遇:它经常在找你,说话非常轻1287.3.2 跟着直觉走1297.3.3 选择你有激情的领域1297.3.4 改变会督促你前行1307.3.5 缺乏激情会成为你事业上升的天花板1317.3.6 把难事做好,尽心尽力投入1317.3.7 激情是提供动力的内在燃料1327.4 保护你的激情1327.4.1 忽略批评:这是你的激情、你的认知,不是他们的1327.4.2 不要分神1337.5 今天能做什么来追求你的激情1347.6 学会投入并享受过程1357.7 成为一名激情四射的架构师1357.8 参考资料136第8章 语境切换1388.1 自我意识语境1408.1.1 专心致志1408.1.2 明白你的弱项1418.1.3 生命中不仅仅有工作1418.1.4 多任务工作的效率奥秘1418.1.5 控制你的肾上腺素:慢下来1428.2 架构意识语境1428.2.1 使用“可/有…性”的字眼1428.2.2 寻求适当的耦合性和内聚性1428.2.3 持续构建你的语境1438.3 “大象”语境1448.3.1 哪些事没有提到1448.3.2 提问一些难题1458.3.3 早些发出坏消息1458.3.4 如果他们拥有这个公司,他们会怎么做1468.4 决策意识语境1468.4.1 他们真的已经把问题解决了1468.4.2 他们知道哪些替代方案可行吗1478.4.3 别人是否已经权衡过此技术1478.4.4 作为中立的第三方,即便这样做是个缺点1478.5 交谈语境1488.5.1 不要开会和用电子邮件1488.5.2 如果需要,(马上)让别人参与进来1488.6 谈话者语境1488.6.1 了解你的谈话对象1488.6.2 中庸之道1498.6.3 有时要唱红脸,有时要唱白脸1498.6.4 提供背景信息1498.7 项目语境1508.7.1 提出预算1508.7.2 带来实用性1518.7.3 学会在雪崩中冲浪1518.7.4 挑出专门的资源1518.7.5 你做出了哪些假设条件1528.8 成为一名善于察言观色、见风使舵的架构师1528.9 参考资料154第三部分 商务技能修炼第9章 商务知识1579.1 了解商务1599.1.1 营销、财务(投入产出比)和销售1599.1.2 考虑拿一个商务学位1619.2 了解你的公司1629.2.1 了解产品对客户的价值所在1629.2.2 知道你的公司如何赚钱1639.2.3 了解你公司的历史、文化1639.3 了解你的顾客1649.3.1 考虑拜访顾客、打电话给销售或者在门面上帮员工干活1649.3.2 考虑参与可用性研究,参与产品概念访谈或其他客户产品评估1679.3.3 考虑使用敏捷技术1679.4 了解你的领域1679.4.1 收集领域知识1689.4.2 在商务环境中了解你的领域1699.5 帮助公司更好地了解技术1699.6 成为一名谙熟商务的架构师1709.7 参考资料171第10章 创新17310.1 创新的定义17410.2 建立边界条件17510.2.1 找出边界条件17510.2.2 在边界内创新17610.2.3 你会做什么(假如没有约束条件,不必故作姿态)17810.2.4 鼓励别人思考、开放17810.2.5 应对那些唱反调的人17910.2.6 避开唱反调的人,找个安全的地方来思考17910.3 发展内心准则17910.3.1 顺从你的直觉17910.3.2 学会信任自己18010.3.3 认真倾听客户的声音,但要保持自己的认知18010.3.4 听听别人的话(协作)18110.3.5 你今天能迈出一小步吗18110.3.6 今天不行没关系:继续埋头苦干,早晚会成功的18210.4 组合基本概念18210.4.1 阅读、阅读、还是阅读18310.4.2 疯狂的主意让你发现真正的边界18310.4.3 要有大眼光18410.4.4 创新者的困难抉择18410.4.5 创新与集聚:将事情按正确分组整合在一起18410.4.6 选择简洁18510.4.7 简洁性是知识产权的根本18510.4.8 在着手解决前先思考问题18610.4.9 定义问题18610.4.10 睡觉时思考18710.4.11 战略问题还是战术问题18710.5 成为一名能创新的架构师18710.6 参考资料189第11章 实用主义19111.1 实用型架构的定义19111.2 范围管理19211.2.1 与商务伙伴一起确定特性的优先级19211.2.2 帮助执行官做出正确决策19311.2.3 处理不确定性19311.2.4 有些时候,你只需要一个概念就能开始干了19311.2.5 使用敏捷过程作为一种实用主义方法19411.3 风险管理19411.3.1 区分可能性和可行性19411.3.2 对于每个决定,都自问一些重要的问题19611.3.3 应对可能的风险19711.3.4 架构刺探19711.3.5 与运营人员一起确定效率19711.3.6 观察其他项目,决定有哪些地方是可牺牲的19811.4 沟通19811.4.1 记录下大家一致同意的决议19911.4.2 提供多种替代方案,并推荐其中一种19911.4.3 用透明性拉平期望值19911.4.4 发展经验方法来估量项目20011.5 成为一名实用主义的架构师20011.6 参考资料201第12章 认知20312.1 认知之定义20412.2 找寻和创立引人注目的目标20412.2.1 发现认知20412.2.2 从混沌现实编造出有说服力的故事20612.2.3 克服障碍20712.3 开发与建立战略路线图20812.3.1 将路线映射至认知20812.3.2 制定支持认知的战略20912.4 确定志同道合的伙伴21012.4.1 认知需要齐心协力21012.4.2 认知要求有关键的利益相关者21112.4.3 认知需要资金支持21212.5 实践认知21312.5.1 将认知当做增加投入产出比的战略21312.5.2 使用认知灌输目标感21312.5.3 在项目评估时就应用认知21412.5.4 采用支出信封(界定认知范围)21512.6 成为一名有远见的架构师21512.7 参考资料216
版权页: 插图: 第1章 文雅的举止 行为是每个人展示自身形象的镜子。 ——约翰•沃尔夫冈•冯•歌德 对人品的真正考验并非是我们知道怎么做,而是当我们不知道怎么做时如何做。 ——John W.Holt.Jr. 按你想的方式行事,不久你就会有你自己的行事方式。 ——George W.Cran. 作为一名架构师,你需要和单位中的各色人等打交道。要在这个位置上真正取得成功,你需要从你所遇到的每个人那里汲取上级的主意和思想。调动所有人(包括你不赞同,甚至不愿相处的那些人)积极性的最好办法之一是你在任何环境中都举止文雅、专业。 举止文雅是FIRST Robotics要求的基本技能。FIRST Robotics是一个致力于激励年轻人成为科技领头人的机构。“举止文雅”主张人们工作时显得文雅、专业。 本章揭示想要成为软件架构师的一项关键必备软技能——在所有环境下都举止文雅。 1.1 别人怎样评价你 如果我准备去见一些了解你的人,例如你的邻居、同事、家人等,他们会怎样评价你呢? 他们会说你工作努力吗? 他们会说你正直诚实吗? 他们会说你举止文雅吗? 或者,他们会列出一长串软技能清单,认为你是个典型的技术人员,在技术领域没得说,但在软技能方面却不怎么样? 1.2 技术之天花板 对于技术非常棒的人们(当你遇到难题必须解决时,向这些高手求助总能圆满解决)而言,一个挑战就是他们通常很难相处。他们与人沟通的方式或方法完全集中在细枝末节的正确性上。这种描述是不是听着有些耳熟? 通常,你很少能坚持到谈话结束,因为这些人对最小的错误变化都详细地进行分析。当你听完问题的解释,你可能已经很累了。 在他们回来时,问题以得体的方式解决了,客户很高兴。但下次你需要请他们做事时,你总是会权衡要解决问题所花费的个人成本。你会扪心自问:“这样做真的值得吗?” 到了考核的时候,这些技术大拿总是因其卓越的工作得到如潮的评价,可是通常没人注意到对他们那点糟糕的软技能的反馈,或者只是很少提及。年复一年,他们实现工作的方式被当做是优秀的。然而遗憾的是,他们在单位内往上爬的技术障碍也变得越来越大。 随着时间推移,在这个情形下的人会寻求升职,他将面临一些挑战。一个关键的困难在于,高级别的管理者不愿意被低职位的人批评。结果是,位于这种人和执行官之间的经理或主管不大乐意结交那些会揭露其短处给执行官的人。
《软件架构师的12项修炼》编辑推荐:优秀软件架构师必备的12项软技能大公开;助你成功走上架构师并成为优秀的架构师之路。
无
作为技术人员,如果认为技术挺牛了,但是没有机会再往上一步,或者觉得影响力有限。那就看这书提高自己的修养来突破这个天花板。如果技术不过关,不要看这书,你到不了那境界的。本书不讲技术,讲修养。是好书。翻译也挺好的。但讨厌原书的12级台阶的封面没了
非常好的一本书,这些都是技术人员往往无法关注到的,也不注意的东西,但是一个真正的架构师必须具备这些技能。
程序员不能一辈子当码工,自己今后怎么发展?最终还是要从技术岗位转到管理岗位,架构师是中间的一个过渡,如果过渡好了,今后做管理,肯定没问题,如果过渡不好,那就只能一辈子听别人使唤,当别人的小弟。但咱们做技术的,在情商方面都有所欠缺,怎么提高自己为人处世的技巧,怎么提高与其他人的沟通和协调能力,这些都需要锻炼。其实这方面的书市面上比较多,比较杂,很多时候是写给一般人看的,这本书是专门针对像我这种IT男写的,作者本身就有很深厚的软件架构师从业背景,在我读来书中提到的那些问题都是我或者我的同事正在面临的,对我非常有帮助,受益匪浅。
文不对题,通篇都是在教你怎么搞好人际关系,怎么与同事交流,怎么学习商务,却忘了教你软件架构师最本质的工作——架构和设计软件。作者的基本前提和假设是读这本书的人的技术都不成问题,缺的是软技能。。。但实际上大多数程序员更缺的是技能,好吧我承认我想看的是“程序员“成为”软件架构师“所需要的修炼,而不是牛逼“软件架构师”成为“企业CEO”的修炼。
字字都是精华,强烈推荐,目前看到最好的一本软技能的书。
把别人的冒犯丢到脑后,修炼软技能(假定技术技能已有)。
上书店看了这本书,觉得不错,下载了英文版,买这本主要是对照英文版来看。都是关于非技术方面的修炼,想找关于技术方面的得绕道了。
買這本書的時候,以為會是專業方面的技能,技巧。實際上里面是就為人處事、性格啊等方面的東西,不過學學也不錯。
感觉书中的软工夫,我们怎么也学不会....太玄了
写的一般,不适用目前国内情况。技术移民,出国打工可以考虑看看。
转什么管理层?有什么用?再怎么做管理,也是被人管,只不过给你几个小弟带带,给你一些安慰罢了!想想创业吧,年纪不小了,呵呵。。。
也是那样
每天睡觉前看的
实质内容以技巧为主