这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟 。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家更好地理解和应用架构原则和方法 。
【10年架构师感悟:从问题出发,而非技术】一、“提出问题”难于“解决问题”
在我看来 , 我最近的一个重要感悟是:提出问题要比解决问题更具挑战性 。作为一个工程师,我通常习惯于解决问题,因为这是我们的工作之一 。但是,我意识到我很少主动提出问题,尤其是从用户的角度出发去提出问题或需求 。我发现,这种不主动提出问题的倾向可能导致团队内部的沟通障碍,特别是与产品经理等其他团队成员的交流 。
有时候我们会抱怨产品经理不懂技术,提出的需求不够专业 。但是,我开始思考 , 作为工程师 , 我是否应该更加积极地从用户的角度出发 , 去了解用户真正的困惑,并提出合理的需求来解决它们 。或者 , 我是否可以亲身体验用户的场景,然后提出全新的问题并解决它们 。
我认为,我们不仅仅应该是解决问题的人,还应该是提出问题的人,主动去思考如何能够让业务更加先进 。尽管设计架构、编写代码解决问题是一项很棒的工作,但是当我尝试主动提出问题和改进用户需求时,我发现这其实是一项更加困难的任务 。我觉得这种思维转变 , 对于我个人的职业发展和团队的成功都是非常重要的 。
二、决定“不要什么”比“要做什么”更难
在我看来 , 我最近的第二个重要感悟是:决定“不要什么”比“要做什么”更具挑战性 。或许这是因为人性的本质是贪婪的,所以在项目或架构设计中 , 我们常常倾向于尽可能包含更多功能和需求,特别是对于非功能性需求更是如此 。
当我们审查一个架构设计说明书时,往往会看到对高可用性、高性能、高扩展性、高可维护性等需求的强调,几乎所有的架构设计都会列出这些非功能性需求 。这些需求似乎成了一个共识的列表,认为所有的架构都必须满足这些需求 。当然,功能性需求更是不胜枚举,产品经理会不断地添加 。
然而,回过头来仔细思考 , 什么是架构?实际上,在很多层面上,架构是一种权衡和平衡的结果 。作为一个架构师,你应该是那个能够明确说出“不要”的人 。在现实中,很多东西是无法兼得的 。比如 , 是尽早发布产品,还是等到所有功能都完善再发布;又比如,在一致性和性能之间需要取舍 , 我们是选择强一致性,还是牺牲一致性以换取更高的性能等 。CAP 原则就是这样一个关于权衡的准则 。
因此,作为架构师 , 我强烈建议大家在架构设计的初期就确定一些原则 。例如 , 数据一致性优先级最高,或者尽早发布基础功能版本优于延迟发布完善功能产品等 。当面临冲突时,我们可以利用这些原则进行取舍和决策 。
三、非功能性需求决定架构
在我看来,我最近的第三个重要感悟是:非功能性需求决定架构 。在很多人眼中,做架构的第一步是收集各种功能性需求,因为最终的产品是为用户服务的 。
然而 , 事实并非如此 。一个优秀的架构实际上是由非功能性需求所驱动 , 而不是由功能性需求所驱动 。你会发现,对于一个功能,可以有很多种不同的架构方案来实现,但是你为什么选择某个方案,其实是由非功能性需求来决定的 。
大家都非常清楚什么是非功能性需求,包括性能、伸缩性、可扩展性、可维护性等,甚至还包括团队的结构、技术水平、发布周期要求等等 。通过这些需求来筛选可用的方案,最终找到一个合适的架构 。
因此,非功能性需求在架构设计中扮演着至关重要的角色 , 可以说是决定性因素之一 。设计完架构后,如果缺少某个功能性需求,我们很容易意识到并且可以进行补充,它不会对架构产生根本性的影响 。但如果我们忽略了某个非功能性需求 , 那么在未来可能会导致严重的问题,甚至需要重写架构 。例如,如果架构中的数据一致性问题无法解决,或者在设计阶段没有充分考虑性能问题 , 那么所有的功能性实现都会变得毫无意义 。这基本上就是重构,甚至可以说不应该叫重构,而是应该叫重新创建或者重写,因为你需要彻底重新设计整个架构 。
推荐阅读
- 韩国化妆师为曾黎化妆,黑白照被夸技术好,网友:那看出来的?
- “最美变性女星”河莉秀:结婚10年,老公跑了身体垮了,后来怎样
- 魂师对决三头赤魔獒后面怎么获得 魂师对决三头蝙蝠王怎么打
- 46岁黄奕近照美到认不出!单身10年逆龄生长,和女儿同框似姐妹
- “旷世骂战”10年之后,再看甄子丹和赵文卓,两人的现状令人唏嘘
- 突传噩耗!92岁相声大师陈涌泉去世,与李金斗搭档演绎多段经典
- 暗黑3巫师加点,cdr咋的才能量尺寸
- qq怎么批改作业,QQ老师助手怎么批改学生的作业
- 翁虹巫启贤等送别何厚华,孙耀威送花篮感谢恩师
- 湖北师范大学2020艺术类招生简章及要求