翻译 From 97.Things.Every.Software.Architect.Should.Know 主要翻译内容为个人的总结,不保证翻译的准确性
转载请注明来自:http://blog.csdn.net/huntersjm/article/details/39956799
1:不要把之前的经历放到现在的项目中
(不要因为之前使用过,现在就直接使用而不考虑更优秀的解决方案,这样不会有好结果)
客户不会在乎你是否与最新的技术保持,同时客户不会愿意为此付费,作为一个架构师,需要协调各方面的利益。同时为了进步,架构师,需要去不断的接触优秀的前沿的技术,这样才能帮助个人更好的成长。如果能够使用比较好的技术,快速有效的解决问题,将会有更多的时间去学习,研究技术,这样可以帮助自己更好的成长。将客户的长期需求考虑好,而不是自己的短期需求,会帮助个人,团队走的更好!
评:1:使用对的技术,而不是自己更熟练的技术,考虑好各方面需要的代价。2:学习新的技术,帮助自己成长的更快,更强。3:考虑好长期的需求,减少改动,对于整个项目来说会更加有利。
2:简化必然会发生的复杂性,减少发生偶尔复杂性的次数
必然的复杂性,显而可见,就是指常见的可能性,比如在某些系统中,数据库读的任务是每个业务都大量需要的,这时,就需要用一些技术(缓存,读写锁?)来保证读的高效率。相反的,对于此类系统,可能也有一些偶尔的大数据量写任务,此时,写任务会影响到读任务的进行,且该类写任务比较复杂,就可以尽量减少其发生,在架构设计上避免这些任务的发生。
解决必然的复杂性,减少偶发的复杂性,这很重要!
评:1:可以将必然的复杂性进行分解,包括时间空间上的分解(架构级别,业务级别等),来减少复杂性 2:可以讲偶然的复杂性控制住,比如调整偶然的复杂性到业务空闲的时间内进行,来减少系统的负荷等。
3:很多时候,面临最大的问题不是技术的问题
很多时候,项目遇到的问题并不是技术上的问题,包括技术的选型等方面。
要学会和开发人员沟通,听取他们的意见来改进项目的架构设计等。同时,要让开发人员感觉到被尊重,这样可以达到更好的效果。这对于成长为一个有效的架构师非常有效。1:需要用沟通对话解决问题而不是对抗2:调整好状态再进行对话。否则效果会不好!3:通过更多的人一起讨论来达成共同的目标,避免少数人的不同意。
评:技术有时候不是最大的问题,有效的沟通可以帮助解决很多的问题,通过有效的沟通也可以帮助个人学习到更多的知识。
4:沟通是王道,有效沟通的关键是清晰和领导力
没人愿意去看一份厚厚的文档,所以需要很清晰,很简单的让开发人员理解。具体的做法可以是,画几张图,或者白板会议,这样可以让大家很清晰简单的理解,同时可以提出自己的观点来帮助改进。
架构师本身也是领导,所以需要有足够的领导力。要赢得开发人员的尊重。(具体怎么提高领导力推荐看一本书:如何提高领导力)
评:清晰的让开发人员认识到问题,然后讨论改善,然后在合适的时候领导开发人员。
5:架构有时候很影响性能
....................................
6:很多时候,需要从问题的本身寻找突破口
即:如果只是一个要求,可能解决起来很麻烦,但是当,如果能够了解问题的本身,来通过问题本身设计或者思考别的方向的解决方案,或许会更有效,同时开发起来也简单很多。
评:这点真的很重要,因为问题很多时候,可以换个更简单的解决方法,而不是用固有的思想方向去解决问题。