前言:本书是部门架构师推荐我阅读的,他认为适合我当下的状态。原本看到书名觉得特别low,感觉就像市面上各种成功学一样。但基于o'reilly的名声,还是阅读了一遍,果然收获匪浅。
1、业务目标至上。
客户需求重要于个人简历(个人诉求、个人看法、技术实现难度成本等)
分析客户需求背后的意义,了解真实意图,砍掉伪需求。
明确自己是谈判,维护必须的利益。而不是各种妥协,只为了追求合作。
架构师需要掌握业务领域知识,把握未来的发展
2、量化需求。(可衡量,如具体数值等,而不是一些模糊的词)
需要综合考虑业务部门、技术部门,投入产出比,商业价值。
图的方式量化整个项目的实现、复杂度、风险等
软件架构师是时间、人力的管家,管家在意的应该是投资回报比,而不是卖弄时髦的技术和晦涩的专业词语,不是让整个系统更复杂
清汤的重要启示(P190),必须要不断提炼,确定系统中需求的本质。可以借助询问时,加上“永远”,“不管任何情况下”,对需求陈述进行测试。
3、简单清晰的沟通、开明的领导风格。
起立发言。
问题可能不是出现在技术上,而是在沟通的矛盾上,不要把对话当成对抗;不要带着情绪与人沟通;尝试设定共同目标,把处理冲突当做一次学习的机会,每次沟通都会有收获。(p7)
不同角色、性格的团队成员,才会有各种可能
仔细观察,不要试图控制一切
4、架构师没有大写的“I”,要以谦卑、合作的态度处理和技术人员、业务人员之间的关系,不能命令的口吻、居高临下。
架构师的作用是引导,把控,提出建议,发挥团队成员的智慧,而不是发号施令,让开发人员自己做主,让大家主动向你征求意见,创造良好的氛围。
先考虑原则、公理和类比,再考虑个人意见和口味
5、设计的根本在于简化根本复杂性,消除偶发复杂性,没有简化根本复杂性,反而带来更多的偶发复杂性,这就是过度设计。
优先考虑方案简单可用,再考虑通用性和复杂性。没必要过早的介入通用性等考虑,只会带来更大的开发成本,而且是否“通用”只是单个人的理解,什么是“通用”,每个人的通用概念都不一样,只有未来能知道。
架构设计必须能够付诸实现,而不是沉迷于各种设计,最后是空中楼阁。
架构设计平衡兼顾各方的需求
具体的情景决定一切,不要有“模式病”
重视不确定性,不要只局限在不确定性产生的A、B两种方案中,要看问题的本质,收集更多信息,看看存不存在第三种方案,建设性的使用不确定性对系统、进度进行分割(p48)
避免重复
记住决策理由,它带来的好处超出你的想象。P104
不要滥用隐喻,尤其在系统中,否则在系统迭代时,之前的隐喻可能成为累赘
确保简单的问题有简单的解,架构师会从主观的判断或潜在的不确定需求出发,调整解决方案,但往往错误的概率是50%。只需简单解决当下的问题,把应用发布出去,从反馈中获取真实的需求。P125
至少有两个可选的解决方案,如果没有,则需要请教更有经验的人。
现在走捷径,将来付利息。即使由于时间紧迫,采用了临时方案,后期上线后也要矫正。就好比及时还清贷款,停止付利息。
优秀软件不是构建出来的,而是培育起来的。(不要一开始过度设计,杀鸡用牛刀)
6、
提前关注性能问题
提前介入测试
项目期较长,需要分开阶段时,每个阶段需要都是可运行、测试的。
控制项目规模,拆解项目,分批发布,分批集成;既能增加商业利润,又提前发现问题,改善架构。
关注开发人员的效率,为开发人员创建良好的工作环境
关注应用程序的支持和维护
一切软件系统都将是遗留系统,
没有永不过时的解决方案。
着重强调项目的商业价值(P170)
①形成价值陈述(value proposition)。价值陈述是你的决策摘要(executive summary),用以说明组织的业务为何要采用某种特定的软件架构。这一步的关键,是要将你的架构方案与其他既有方案或可选方案进行比较。重点应该放在说明其在提高生产力、改进业务效率方面的能力,而不是强调其采用的技术如何高明。
②建立量化的度量标准(metric)。对于承诺要交付的价值,需要在合理范围内进行量化。量化得越具体越到位,项目也将越具有说服力,越能让人相信好的架构可以带来丰厚的回报。越早建立度量标准,就越容易把握人们的认知,帮助推销自己的架构提案。
③回过头来关联传统商业的衡量方式。如果能将技术分析转化为财务数据,则会更为完美。毕竟,传统的商业衡量方式中唯一不变的参数便是经济收益。如果不喜欢做财务性的工作,可以找商业分析师来做你的搭档。
④知道该哪里停止。在知道该哪里停止之前,要准备好一张路线图(roadmap)用以捕获远景目标,清楚的知道每一个里程碑将带来的商业价值。让利益相关者自己决定将在何处停止。如果每处的商业价值都十分显著,那么,很可能你会获得持续不断的资金支持。
⑤寻找恰当的时机。即使按照前面四个步骤创建了稳固的商业项目提案,但如果时机不对,可能仍然无法成功推销你的点子。我记得自己就曾有一个提案迟迟无法获批,直到另一个项目因为糟糕的架构设计以彻底失败告终时,我的提案才获得通过。所以,还要明智选择恰当的时机。