前言
前言:
软的东西总是比硬的东西还硬。
—美国企业家、百事公司副董事长罗杰·恩里科
在开始阅读本书前,我希望你准备保持一种开放的心态,并渴望对日常生活尝试某些新的方法。
我叫Dave Hendricksen,是Thomson Reuters公司的一名软件架构师。我的工作主要是产生智力法规信息,包括在Westlaw.com网站上从法律、法规及知识产权材料的数据捕获到数据显示过程。我和一位漂亮女士已经结
婚22年了。我们育有两个孩子,养着一只猫和一条狗,另有一个鱼塘。
作为一名吃技术饭的人,我经常觉得我自己和“平常”世界的其他人不太一样。分析式思维、关注于解决问题、构建事务、连续几个钟头玩游戏,所有这些对我来说再正常不过了。我喜欢学习新东西。对我而言,上学总是很有意思。我拥有数学和圣经专业的学士学位,以及两个硕士学位—一个是计算机科学,另一个是技术管理。
我喜欢努力工作,渴望付出任何辛劳以便按时完成项目。我喜欢听老板说:“干得真棒,Dave!”当然了,我的想法是这样的:工作出色,获得晋升。生活毕竟在某种程度上有些恐怖,至少在从技术进入管理时。总是有道看不见的屏障阻挡着大批有才能的人往上爬,或者在事业上有进一步的发展。这道神秘的屏障反映出人们软技能的缺乏,它默默地阻碍着那些人往更高的阶梯前进。
我写这本书的目的是帮助你学习必备的软技能,这些技能是你要修炼为一名软件架构师所必须掌握的。
本书假定你已经有了成为架构师必备的技术技能,因此本书不会关注此类技能。换句话说,本书着重于阐述对作为架构师日常行为非常关键的十二项必备软技能。这些技能对于有技术背景的人们来说往往是最有挑战性的技能,也是成为优秀的软件架构师必须修炼的技能。
本书的这十二项技能按三个部分来组织:关系技能、个人技能和商务技能。这种分类基于相关的优先顺序,即如果你没有关系技能,其他两组技能就不用提了。倘若你与别人或单位中的若干部门相处不好,你不大可能被提拔到架构师的位置,或者较长时间待在这个位置上。类似地,如果你没有必需的个人技能,商务技能也会无从谈起。最后,尽管所有这些领域都很重要,但从优先次序来看,假如你没有首先掌握必备的关系技能,商务技能便不会达到你期望的效果。我将这些技能看做一个金字塔,正如下图所表达的那样。
架构师的必备技能
希望你喜欢阅读本书,并且学到能使你成为架构师的新知识,这些新知识还供你成为架构师后改进技能,或者更好地理解架构师的本质和角色。如果你有任何问题或评论,尽管给我写邮件好了,我的邮箱是。
祝你过得愉快!
—Dave
导语摘要
掌握优秀软件架构师必备的12项软技能!很多软件开发人员都稿、软件絮构师所必需的技术水平,但很少有人能在不具备关键的软技能(非技术技能)的情况下在架构师的职谴上取得成功。在如今的敏捷开发环境中,这些软技能对于架构师迈向成功
显得更为重要。然而对许多软件开发人员来说,这些技能并不会与生俱来,也很少出现在正规的培训课程中。现在,资深软件架构师DaveHendricksen帮你填补这个空白,让你在公司中更好地发挥影响力,快速迈廊职业生涯的下一个台阶。
在《软件架构师的12项修炼》中,DaveHendricksen指出了架构师取得成功所必需的三大方面的教技能:关系技能、个人技能和商务技能。以此为引子,全书系统讲解了学习和强化这些技能的有效(已被实践证明)方法,从协商、
领导力到实用主少、认知等各个方面。
自始至终,在帮助你成功成为架构师并成为优秀的架构师这条道路止,本书极具实践指导意义。
作者简介
Dave Hendricksen是Thomson Reuters公司的一名架构工程师。他与公司的新产品开发团队紧密合作,为Westlaw.com等大型在线平台设计创新性产品。他最近还出席了卡内基•梅隆大学强力软件工程学院的“在敏捷世界里设计与构建大型系统”研讨会。
目录
译者序
前言
致谢
第一部分 关系技能修炼
第1章 文雅的举止
1.1 别人怎样评价你
1.2 技术之天花板
1.3 变得文雅、专业的途径
1.3.1 注重关系甚于争执孰对孰错
1.3.2 学会委派
1.3.3 生活是有反作用的
1.3.4 有效沟通之生与死
1.3.5 要正直诚实而不是率直
1.3.6 不要掩盖问题-它们以后还会冒出来的
1.3.7 提供专业的服务
1.3.8 忘掉以前的冒犯
1.4 小结
1.5 参考资料
第2章 沟通
2.1 沟通原则
2.1.1 先听后说
2.1.2 专心致志
2.1.3 正面思考
2.1.4 尽早道歉
2.1.5 不要在缺陷上招致恼羞成怒
2.2 沟通策略
2.2.1 多说"是",少说"不是"
2.2.2 在销售过程中建立起信任关系
2.2.3 特殊场合才说"不"
2.2.4 抑制想自卫的冲动
2.2.5 倾听建议来改善合作
2.2.6 了解别人和自己的沟通需求
2.2.7 才思敏捷
2.3 与执行官沟通
2.3.1 执行官需要信任、忠诚和连贯性
2.3.2 清晰性甚于完整性
2.3.3 不要让执行官感到惊讶
2.4 小结
2.5 参考资料
第3章 协商
3.1 协商原则
3.1.1 不要让人惊讶
3.1.2 不要模棱两可
3.1.3 委派权威而不是义务
3.1.4 有困难时寻求帮助
3.1.5 不要掩盖问题
3.1.6 即使很难,也要坚持做正确的事
3.2 协商策略
3.2.1 倾听你的内心呼唤
3.2.2 设法同意
3.2.3 不要找分歧
3.2.4 寻找共同点
3.2.5 如果无法达到一致,就让所有人稍微不满吧
3.2.6 将协商作为一种改进措施
3.3 协商前的工作
3.3.1 知道哪些是可协商的
3.3.2 了解如何在单位里游刃有余
3.3.3 关键决定上寻求合作氛围
3.3.4 学习文化
3.3.5 让别人明白你的想法
3.4 协商的收尾
3.4.1 捍卫决策的执行
3.4.2 维护架构决定记录
3.4.3 你有时会赢,有时会输
3.4.4 从委派中学习
3.5 小结
3.6 参考资料
第4章 领导力
4.1 领导力的原则
4.1.1 建立信任关系
4.1.2 建立共识
4.1.3 建立战略伙伴关系(通过关系带来安全)
4.1.4 要身体力行(为你所说的话带来安全)
4.1.5 感知风险、评估影响、做出行动(明确风险的清晰度)
4.1.6 适当处理风险:什么是鞭炮,什么是原子弹(明确影响的清晰度)
4.2 领导策略
4.2.1 奥卡姆剃刀法
4.2.2 展现可视化信息
4.2.3 领导者要确保事情不跑题
4.2.4 基于环境推销
4.2.5 随大流(找机会利用已有的资源)
4.2.6 关注执行官于认知,而非解决冲突
4.3 领导的时机
4.3.1 利用单位的动量
4.3.2 知道何时伸出援手
4.3.3 允许其他人学习
4.3.4 知道何时该卓尔不群
4.3.5 请求原谅还是征求允许
4.4 领导别人
4.4.1 允许别人奉献(不要命令)
4.4.2 通过影响力激励别人
4.4.3 确保别人能做主
4.4.4 处理冲突
4.5 小结
4.6 参考资料
第5章 政治
5.1 政治的定义
5.2 政治市场
5.3 政治环境
5.3.1 与公司的战略方向保持一致
5.3.2 理解你所处的文化环境
5.3.3 及早处理别人关注的问题
5.3.4 相信你所推销的东西
5.3.5 不关我的事
5.3.6 关系很重要(与别人的关系)
5.4 政治原则
5.4.1 宽宏大量
5.4.2 不要为你的价值妥协
5.4.3 光明正大地竞争
5.4.4 透明地操作
5.4.5 你是怎样的人就怎样表现
5.4.6 帮助别人,不求回报
5.4.7 认识到生活是反身的
5.5 政治策略
5.5.1 帮助别人达成其目标
5.5.2 学会享受过程而不是目标
5.5.3 在关键之处力争出色
5.5.4 愿意就低优先级目标妥协
5.5.5 不要对别人的糟糕举止采取冒犯的行动
5.5.6 私下处理人际问题
5.6 政治时机
5.6.1 以适时的作风执行事情
5.6.2 今天失利并不代表明天不会成功
5.6.3 要认识到政治上你不会是常胜将军
5.6.4 积极参与政治游戏
5.7 成为一名好的政治人物
5.8 参考资料
第二部分 个人技能修炼
第6章 透明化
6.1 住在玻璃房中的架构师
6.2 透明化的类型
6.3 自我透明化
6.3.1 表现自然真诚
6.3.2 承认自己的弱点
6.3.3 承认你的实力和兴趣
6.3.4 赶在人前与上司沟通
6.4 项目透明化
6.4.1 让执行官看到你手里所有的扑克牌
6.4.2 架构师把透明化和清晰性带到许多领域
6.4.3 架构师将"发现"变成"收获"
6.5 关系透明化
6.5.1 该信任时就给别人信任
6.5.2 你说的话长久不变
6.5.3 道歉表明你的透明化
6.5.4 学会在做出反应前倾听(寻求透明化)
6.5.5 允许别人对你透明化
6.6 成为一名透明的架构师
6.7 参考资料
第7章 激情
7.1 什么是激情
7.2 发现激情
7.2.1 如何找到激情
7.2.2 恒心与激情:终极的杀手组合
7.2.3 岗位上的激情
7.2.4 重新点燃激情
7.3 将激情作为向导
7.3.1 等待机遇:它经常在找你,说话非常轻
7.3.2 跟着直觉走
7.3.3 选择你有激情的领域
7.3.4 改变会督促你前行
7.3.5 缺乏激情会成为你事业上升的天花板
7.3.6 把难事做好,尽心尽力投入
7.3.7 激情是提供动力的内在燃料
7.4 保护你的激情
7.4.1 忽略批评:这是你的激情、你的认知,不是他们的
7.4.2 不要分神
7.5 今天能做什么来追求你的激情
7.6 学会投入并享受过程
7.7 成为一名激情四射的架构师
7.8 参考资料
第8章 语境切换
8.1 自我意识语境
8.1.1 专心致志
8.1.2 明白你的弱项
8.1.3 生命中不仅仅有工作
8.1.4 多任务工作的效率奥秘
8.1.5 控制你的肾上腺素:慢下来
8.2 架构意识语境
8.2.1 使用"可/有…性"的字眼
8.2.2 寻求适当的耦合性和内聚性
8.2.3 持续构建你的语境
8.3 "大象"语境
8.3.1 哪些事没有提到
8.3.2 提问一些难题
8.3.3 早些发出坏消息
8.3.4 如果他们拥有这个公司,他们会怎么做
8.4 决策意识语境
8.4.1 他们真的已经把问题解决了
8.4.2 他们知道哪些替代方案可行吗
8.4.3 别人是否已经权衡过此技术
8.4.4 作为中立的第三方,即便这样做是个缺点
8.5 交谈语境
8.5.1 不要开会和用电子邮件
8.5.2 如果需要,(马上)让别人参与进来
8.6 谈话者语境
8.6.1 了解你的谈话对象
8.6.2 中庸之道
8.6.3 有时要唱红脸,有时要唱白脸
8.6.4 提供背景信息
8.7 项目语境
8.7.1 提出预算
8.7.2 带来实用性
8.7.3 学会在雪崩中冲浪
8.7.4 挑出专门的资源
8.7.5 你做出了哪些假设条件
8.8 成为一名善于察言观色、见风使舵的架构师
8.9 参考资料
第三部分 商务技能修炼
第9章 商务知识
9.1 了解商务
9.1.1 营销、财务(投入产出比)和销售
9.1.2 考虑拿一个商务学位
9.2 了解你的公司
9.2.1 了解产品对客户的价值所在
9.2.2 知道你的公司如何赚钱
9.2.3 了解你公司的历史、文化
9.3 了解你的顾客
9.3.1 考虑拜访顾客、打电话给销售或者在门面上帮员工干活
9.3.2 考虑参与可用性研究,参与产品概念访谈或其他客户产品评估
9.3.3 考虑使用敏捷技术
9.4 了解你的领域
9.4.1 收集领域知识
9.4.2 在商务环境中了解你的领域
9.5 帮助公司更好地了解技术
9.6 成为一名谙熟商务的架构师
9.7 参考资料
第10章 创新
10.1 创新的定义
10.2 建立边界条件
10.2.1 找出边界条件
10.2.2 在边界内创新
10.2.3 你会做什么(假如没有约束条件,不必故作姿态)
10.2.4 鼓励别人思考、开放
10.2.5 应对那些唱反调的人
10.2.6 避开唱反调的人,找个安全的地方来思考
10.3 发展内心准则
10.3.1 顺从你的直觉
10.3.2 学会信任自己
10.3.3 认真倾听客户的声音,但要保持自己的认知
10.3.4 听听别人的话(协作)
10.3.5 你今天能迈出一小步吗
10.3.6 今天不行没关系:继续埋头苦干,早晚会成功的
10.4 组合基本概念
10.4.1 阅读、阅读、还是阅读
10.4.2 疯狂的主意让你发现真正的边界
10.4.3 要有大眼光
10.4.4 创新者的困难抉择
10.4.5 创新与集聚:将事情按正确分组整合在一起
10.4.6 选择简洁
10.4.7 简洁性是知识产权的根本
10.4.8 在着手解决前先思考问题
10.4.9 定义问题
10.4.10 睡觉时思考
10.4.11 战略问题还是战术问题
10.5 成为一名能创新的架构师
10.6 参考资料
第11章 实用主义
11.1 实用型架构的定义
11.2 范围管理
11.2.1 与商务伙伴一起确定特性的优先级
11.2.2 帮助执行官做出正确决策
11.2.3 处理不确定性
11.2.4 有些时候,你只需要一个概念就能开始干了
11.2.5 使用敏捷过程作为一种实用主义方法
11.3 风险管理
11.3.1 区分可能性和可行性
11.3.2 对于每个决定,都自问一些重要的问题
11.3.3 应对可能的风险
11.3.4 架构刺探
11.3.5 与运营人员一起确定效率
11.3.6 观察其他项目,决定有哪些地方是可牺牲的
11.4 沟通
11.4.1 记录下大家一致同意的决议
11.4.2 提供多种替代方案,并推荐其中一种
11.4.3 用透明性拉平期望值
11.4.4 发展经验方法来估量项目
11.5 成为一名实用主义的架构师
11.6 参考资料
第12章 认知
12.1 认知之定义
12.2 找寻和创立引人注目的目标
12.2.1 发现认知
12.2.2 从混沌现实编造出有说服力的故事
12.2.3 克服障碍
12.3 开发与建立战略路线图
12.3.1 将路线映射至认知
12.3.2 制定支持认知的战略
12.4 确定志同道合的伙伴
12.4.1 认知需要齐心协力
12.4.2 认知要求有关键的利益相关者
12.4.3 认知需要资金支持
12.5 实践认知
12.5.1 将认知当做增加投入产出比的战略
12.5.2 使用认知灌输目标感
12.5.3 在项目评估时就应用认知
12.5.4 采用支出信封(界定认知范围)
12.6 成为一名有远见的架构师
12.7 参考资料
……
内容摘要
每一位软件开发人员都有一个架构师的梦,但为何真正的软件架构师却寥寥无几?软件开发人员更容易在技术上有所积累和突破,但是技术上的精湛并不足以使你成为一位优秀的软件架构师。合格的软件架构师究竟应该具备哪些能力和素养?《软件架构师的12项修炼》科学而系统地归纳出软件架构师应该具备的完整能力模型,该能力模型呈一金字塔结构,共分为4层:位于层的是技术技能,是软件架构师的基石,属于硬技能;从下往上的三层分别是关系技能、个人技能和商务技能,这些都属于软技能。由于硬技能会随着具体技术领域的不同而千差万别,因此本书假定读者已经具备了这方面的技能;但其他3大方面的软技能却在每个技术领域都适用,是每一位软件架构师的必修课,这是本书的核心内容。
为了便于认知和实践,本书将3大方面的软技能分为12项:关系技能包含文雅的举止(在任何环境下都能与人文雅相处的能力)、沟通(与人有效交互的能力)、协商(将事情办成的能力)、领导力(通过施加影响力将事情办成的能力)和政治(“政治场合”与人交互的能力)等5项;个人技能包含透明化(使自我、团队关系和项目透明化的能力)、激情(激发和保护激情的能力)和语境切换(将注意力迅速切换到新语境并保持专注的能力)等3项;商务技能包括商务知识(读懂商务语言的能力和了解产品与顾客的能力)、创新(如何通过学习和思考来创新的能力)、实用主义(抓住关键问题的能力)、认知(认知目标、战略及合作伙伴的能力)等4项。
《软件架构师的12项修炼》不仅帮助软件开发人员系统地学习如何修炼这12项软技能,而且还能让他们进一步理解软件架构师的角色和本质,使他们最终突破技术的“天花板”,成为一名合格的软件架构师。
主编推荐
《软件架构师的12项修炼》不仅帮助软件开发人员系统地学习如何修炼这12项软技能,而且还能让他们进一步理解软件架构师的角色和本质,使他们最终突破技术的“天花板”,成为一名合格的软件架构师。
海报:
精彩内容
信任关系可以通过许多种途径建立:在特定领域是一个专家;成功完成某个项目或项目的一部分;建立社会关系;当某人孤立无援时拉他一把;帮助别人成功;或者真心倾听别人说的话。一旦你与别人建立了信任关系,你就能对别人施加影响,从而大大提高领导别人的能力。
相反,倘若你破坏了建立信任关系的基础,毁掉了别人的信任,你领导
别人的能力就会急剧下降。将来就更难重建起这种信任关系。
如果你已经证明自己是值得信任的,即便有时无意中做了一些破坏信任关系的事情,别人也会原谅你的,因为大家都是人,都会犯错误——但他们的忍耐是非常有限的,你不能指望这一点。相反,做错事后要学会道歉并把事情做得更好。
4.1.2建立共识领导力是为了建立一种认知,即每个人都觉得这种认知是对的。它在许多方面类似于推销——帮助人们理解这种认知的价值,允许他们决定这是否是他们的前进方向。关键在于将信息正确传递给每个人,因为对一个人有效的东西,换成下一个人就可能没效果了。在单位里,道理也是一样。因此,你必须知道项目中每个人如何工作,了解他们对项目的看法和关心的地方。
领导力是为了建立对某种认知的共同理解。即便你已经设法让每个人都了解了你推销的想法。倘若这种理解并未在团队里达成共识,组织内部仍不会齐心,团队和其他群体间仍然存在争议。最好的情况是,这样的不协调导
致单位内效率被无意浪费;最糟的情况是它可能导致项目失败。
作为一名架构师,你应当考虑使用PhilippeKrutchen提出的“4l+l”的架构视角模型。后者是一种捕捉共识的基本细节的方法。这种方法运用系统的逻辑、开发、过程和物理视角(即“4+1”中的“4”),将用例作为它们之间的‘‘胶水”,并描述架构(即“4+l”中的“1”)。每个视角都是统一
整体的某个方面。这种模型有许多变形,但其方法的本质就是要认识到,不同的利益相关者对问题的解决方案有不同的需要、背景、要求,甚至技能。
既然如此,架构师需要不同的视角来容纳他们。对某种解决方案的特定模型抽象出关键点,这是支撑该架构的主要技能。
4.1.3建立战略伙伴关系(通过关系带来安全)成为成功的架构师通常取决于你建立战略伙伴关系的能力。需要建立这些伙伴关系有多种原因,正如对产品的认知需要考虑方方面面一样。
产品的商业认知通常由营销部门或新产品开发部门建立。尽管你能够作为架构师影响产品的认知,但你往往不是产品认知的拥有者。
作为架构师,你要对产品的商业认知有彻底的了解。你最终负责将其转换为技术现实。为达到这一目标,你必须能够将此认知以项目团队可理解的方式传达给他们,并领导他们朝这个方向努力。通过与商务人员紧密结合,并与项目的骨干成员密切配合,架构师能够帮助大家在整个产品开发过程中对产品维持一种共识。
在建立战略合作伙伴关系时,要关注那些能够从认知到最后产品发布过程中影响你进展能力的人,这一点很重要。因项目不同,达到这一标准的个人或群体也各不一样。为成功管理这些关系,你必须了解单位内项目和产品
发布的流程。如果做不到这一点,你就会在错误的时间与错误的人打交道。
例如,在项目进展的某些点上,看起来技术上可行的地方却是组织上不可行的,因为反对的人或群体掌握着特定资源的控制权。
也许你的项目需要特定的硬件才能成功,但由于成本、竞争等原因,或操作标准,你可能无法得到该硬件——于是你的项目眼睁睁地无法完成。如
果你密切管理这些类型的依赖关系,在早些时候就对单位的某些部门做些活动,就会避免让这些潜在的风险演变成真正的问题。
作为架构师,你也需要与那些能成为你可信任顾问的人建立战略合作伙伴关系。你可以和这些人交谈,从而得到不同的思
以下为对购买帮助不大的评价