Salesforce 架构师的 10 大原则

简介: Salesforce 架构师的 10 大原则

架构师作为团队中的最高技术战力,不单单需要提升自己的技术深度和能力,还需要站在更高的层次考虑技术和架构问题。这篇文章介绍了 Salesforce 架构师需要遵循的 10 个基本原则,理解这些原则可以帮助我们成为更好的架构师。原文:10 Principles for Architecture at Salesforce[1]


软件工程不能被简化为一套规则,相反,它需要我们理解试图解决的问题,并在相互竞争的优先事项之间做出权衡。这是一项细致入微的工作,需要经验和大量清晰的沟通[2]


换句话说,我们认为有些事情具有普适性,某些原则适用于我们做出的所有决定。我们在这里列举了 10 条原则,鼓励软件架构师们拥抱并遵守这些原则。例举这些原则并不是因为这些原则比较容易,而是因为它们都很难(就像肯尼迪 1962 年关于登月的演讲[3]),不是因为这些是规矩,而是因为它们能够指导我们开发的软件取得更大的成功。


image.png


这些原则是:


  1. 基于信任的沟通(Speak for Trust):信任是 Salesforce 的第一价值观,对于曾在 Salesforce 工作过的人应该都知道这一点。在做决定的时候,我们经常需要考虑如何向客户更快交付新功能,虽然这很重要,但那些事关与客户建立持久信任的声音也需要被听到。对于资深个人贡献者(如架构师)来说,这是重要的考虑因素,即使面临产品截止日期,也需要考虑以正确的方式构建系统。
  2. 技术为客户服务(Technology Serves Customers):在我们和客户之间通常有许多层级,层级对于这种规模的公司很有必要,但也有缺点。因为当真正的客户在使用我们的软件的时候,想要弄清楚他们的情况就像在玩电话游戏一样。即使需要通过所有这些层级,我们的架构师也需要去了解客户的痛点。
  3. 支持长期价值(Champion Long-term Value):软件架构师有时是团队里唯一知道我们的行动在 5 年或 10 年后产生可能的结果的人。要依靠这一点!避免陷入短期行为中,要考虑现在所做决定的长期影响。
  4. 复杂性即债务(Complexity is Debt):我们的系统很复杂,内部比外部表现的更复杂,一定要对添加到系统中的每一点复杂性都保持高度警觉。
  5. 让架构成为平等的合作伙伴(Make Architecture An Equal Partner):通常情况下,个人贡献者(ICs,Individual Contributors)认为,当做出重要决策时,他们被排除在外,由管理层和产品团队负责解决问题。但这是错误的,而且对决策毫无帮助,正如我们在前面几条原则中所阐述的,架构师在这里带来了一个真正独特的视角:从长远考虑,并将技术理念纳入考虑范围。架构师需要努力让别人知道自己的存在。
  6. 沟通“为什么”(Communicate the “Why”):例如把“为什么”写下来!软件的寿命往往比我们想象的要长得多。一旦意识到大部分成功的软件工程实际上更像考古学,就会更倾向于为后代留下更好的思想记录。未来的自己以及团队里的其他人,都会因此感谢你的。(请在我们的播客“为什么写作对工程师很重要”[2]中获取更多关于这个话题的内容)
  7. 克服竖井(Overcome Silos):大公司并不总是有建立共享价值的正确激励机制,但架构师的工作之一就是要克服这一点。这通常需要在全局利益和局部利益之间做出权衡,并努力建立跨组织的关系和资源的复用。
  8. 设计仍然重要(Design Still Matters):现代软件交付当然是敏捷的,但这并不是不做计划和设计的借口!我们仍然需要回答主要的问题,并阐述清楚系统的底层逻辑。如果不断动摇系统的底层架构,就会得到一堆不匹配的隐喻、部分实现的抽象和不成熟的解决方案。节省几个小时的计划带来的后果就是要多花几个月的时间编写代码。
  9. 一切都在发展(Everything Evolves):构建系统不仅仅是设想最终的完美方案,而必须考虑从当前到达目标的路径,这通常是任何项目中最困难、最尴尬的部分。不要只考虑最终状态,还要考虑可分解性、灵活性、分段性和实现路径。
  10. 不要做笨蛋(Don’t Be a Jerk):在软件工程中,常识可以让事情平稳运行。如果没有人喜欢和你一起工作,一切都会变得更加困难。软件工程的“人”方面与技术方面同样重要,甚至更重要。


改变个人行为很难,改变公司文化更难。我们希望这 10 条原则能够提供思考软件工程的方法,帮助我们在两者之间取得进展。



References:

[1] 10 Principles for Architecture at Salesforce: https://engineering.salesforce.com/10-principles-for-architecture-at-salesforce-82105d5399a8

[2] Why Writing Matters for Engineers: https://engineering.salesforce.com/118-why-writing-matters-for-engineers-8ffdeaa40e68

[3] We choose to go to the Moon: https://en.wikipedia.org/wiki/We_choose_to_go_to_the_Moon


目录
相关文章
|
5月前
|
敏捷开发 缓存 架构师
Apache 架构师总结的 30 条架构原则
Apache 架构师总结的 30 条架构原则
67 0
|
2月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
3月前
|
NoSQL Redis UED
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
|
2月前
|
消息中间件 监控 Java
解锁Spring Cloud微服务架构的奥秘:深度剖析拆分原则,打造高内聚低耦合的业务创新引擎!
【8月更文挑战第3天】踏入微服务领域,Spring Cloud以丰富组件助力高效系统构建。微服务拆分需遵循原则确保系统高内聚低耦合且能适应变化。首要原则为单一职责,每个服务专注一个业务功能,降低复杂度并提高可维护性。其次,追求高内聚低耦合以减少服务间影响。围绕业务域拆分有助于保持逻辑清晰及团队协作。处理数据一致性问题时,考虑采用最终一致性模型。Spring Cloud提供Eureka、Zuul/Gateway、Sleuth和Config等工具支持服务发现、路由、跟踪及配置管理,共同构建灵活健壮的微服务架构。
62 2
|
3月前
|
存储 设计模式 前端开发
软件架构设计的原则与模式:构建高质量系统的基石
【7月更文挑战第26天】软件架构设计是构建高质量软件系统的关键。遵循高内聚、低耦合、单一职责等设计原则,并灵活运用分层架构、微服务架构、客户端-服务器架构等设计模式,可以帮助我们设计出更加灵活、可扩展、可维护的软件系统。作为开发者,我们应该不断学习和实践这些原则与模式,以提升自己的架构设计能力,为团队和用户提供更加优秀的软件产品。
|
2月前
|
边缘计算 Kubernetes 持续交付
构建高效后端系统:面向未来的架构设计原则
【8月更文挑战第8天】在技术飞速发展的今天,后端系统的架构设计显得尤为关键。本文将探讨如何通过采用微服务、容器化及自动化等现代技术手段,来构建一个可扩展、高可用且易于维护的后端系统。我们将深入分析这些技术背后的原理及其在实际场景中的应用,同时也会讨论如何在保障数据一致性和系统安全性的前提下,提升系统的响应速度和处理能力。
|
3月前
|
搜索推荐
业务系统架构实践问题之有效地实现“域间不可见”原则问题如何解决
业务系统架构实践问题之有效地实现“域间不可见”原则问题如何解决
|
3月前
|
监控 Java API
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
61 0
|
3月前
|
XML 缓存 API
REST原则、RESTful架构
REST原则、RESTful架构
35 0
|
5月前
|
敏捷开发 监控 测试技术
软件架构的艺术:探索演化之路上的18大黄金原则
实际工作表明,一步到位的设计往往不切实际,而演化原则指导我们逐步优化架构,以灵活响应业务和技术的变化。这不仅降低了技术债务和重构风险,还确保了软件的稳定性和可扩展性。同时,架构的持续演进促进了团队协作,激发了成员间的知识共享与技能提升。
软件架构的艺术:探索演化之路上的18大黄金原则
下一篇
无影云桌面