非ByteByteGo的系统设计资源
系统设计是一项核心工程技能,团队中的每个人都应该对系统的架构有一定的了解。
此外,随着人工智能编码助手的普及,掌握这项技能将保障你的职业生涯,确保你在不断发展的技术环境中保持竞争力并保持生产力。
传统上,初级开发人员主要被引导学习编码技能并掌握所选技术的基础知识。然而,像 GitHub Copilot 这样的 AI 助手正在显著加快编码速度——55% 的用户表示编码速度更快。这种速度提升使开发人员能够腾出更多时间深入研究系统细节,从而在他们创建的环境中积累专业知识,并采用更全面的软件系统开发方法。
GitHub 前首席产品官 Inbal Shani强调了这种思维方式的转变:
开发者需要转变思维方式……构建更多系统,构建更完善的架构。你需要开始思考如何利用人工智能工具来帮助你取得成功。这不再仅仅是编写代码,而是真正地提升你的思维能力,去把握全局、构建互联体验以及构建互联系统。
这种思维方式曾经主要与资深软件工程师相关,如今正变得对所有开发人员都至关重要。资深开发人员和初级开发人员之间的差距正在缩小,尤其是在92%的开发人员已经开始使用人工智能工具的情况下。
👉 现在就是学习系统设计的最佳时机。👈
当前系统设计论述存在的问题
遗憾的是,关于系统设计的讨论往往集中在“如何成功通过系统设计面试”上。虽然系统设计对于许多组织来说确实是一项关键技能,尤其是在分布式系统如此普及的情况下,但这种对面试准备的关注却忽略了在日常实际场景中应用这些技能的重要性。
这种过度重视技术面试的做法类似于标准化考试制度——它固然有其用途,但本质上存在局限性。它无法全面反映现实世界的挑战,也无法展现有效运用系统设计知识和技能在实际环境中所需的创造性和适应性思维。
此外,软件架构师的角色和重要性正在发生转变。我们逐渐意识到,系统和软件设计并非特定岗位的专属;每位工程师都应该具备一定的相关技能。拥有系统设计经验,并在编码过程中考虑架构需求,能够提升工程师的水平,并最终打造出更优质的产品。
然而,许多工程师和组织尚未接受这一趋势,仍然严格区分工程师和各种类型的软件架构师。
最后,也是最重要的一点:人们常常误解系统设计仅仅是绘制图表、编写特定文档或遵循既定的框架。实际上,系统设计是一个持续的过程,它勾勒出复杂系统的高层概念结构(系统架构),并定义其主要组件及其交互。虽然系统设计可以产出系统图、架构设计记录或使用特定工具和框架等成果,但它涵盖了团队如何构建软件,而不仅仅是他们在整个过程中使用的工具。
您通常会看到的资源
在研究系统设计时,互联网上通常会显示两个主要资源:
我想强调的是,这两者都非常有用,我强烈推荐。事实上,我们订阅了 ByteByteGo Newsletter,并且是其作者Alex Xu和Sahn Lam的忠实粉丝。用有趣且直观的方式传达复杂的概念是一门艺术,阅读他们的简报总是一种享受。
同样,了解像 Netflix、Google、Stripe 或 Spotify 这样的公司如何设计他们的系统,以及他们所采用的巧妙解决方案,也令人着迷。然而,你很可能没有在开发像他们那样庞大的系统,而且他们的方法通常都是针对特定用例量身定制的。
事实上,系统架构并没有唯一正确的方法。设计取决于您的业务需求、开发阶段以及您愿意做出的权衡取舍。
被低估的系统设计简报
除了 ByteByteGo 和各种企业博客之外,我强烈建议您查看以下资源。它们虽然提及频率不高,但能让您深入了解系统设计:
📌 注意:这些只是帮助我进行分类的一般类别,因此可能存在一些重叠。
系统设计基础
- Saurabh Dashora的《系统设计规范》
- 托马斯·约翰逊著《分布式系统架构》
- 马赫迪·优素福的《建筑笔记》
- 《软件设计:整洁优先?》作者:肯特·贝克
- 《提升编程水平》作者:Nikki Siapno
- 阿什什·普拉塔普·辛格的《算法大师》
- 劳尔·胡恩科的《系统设计课堂》
- Mike Thornton的“开发细节”
- 米兰·米拉诺维奇的《米兰的科技世界》
大型科技系统设计案例及回顾
更广泛范围的有趣新闻简报
- Milan Jovanović的“ .NET 与软件架构”
- 《好奇的工程师》作者:维韦克·班萨尔
- 贾斯汀·盖奇的《技术上》
- 约丹·伊万诺夫的《数据胡言乱语》
- Zach Wilson的《EcZachly 数据工程》
系统设计书籍
系统设计书籍也是加深对架构原则和最佳实践理解的绝佳起点。以下是一些最受欢迎的书籍:
- 《设计数据密集型应用:可靠、可扩展和可维护系统的核心理念》, 作者:Martin Kleppmann
- 软件架构基础:工程方法, 作者:Mark Richards 和 Neal Ford
- 整洁优先?:肯特·贝克的实证软件设计个人实践
- 《凤凰项目:一部关于 IT、DevOps 和帮助企业取得成功的长篇小说》, 作者:Gene Kim、Kevin Behr 和 George Spafford,以及其续集《独角兽项目》。
- 构建微服务:设计细粒度系统, 作者:Sam Newman
- 《可扩展性的艺术:现代企业的可扩展Web架构、流程和组织》, 作者:Martin L. Abbott 和 Michael T. Fisher
- 《整洁架构:软件结构与设计的工匠指南》, 作者:罗伯特·C·马丁
- 布伦丹·伯恩斯著《分布式系统设计》
有用的 GitHub 仓库
我还推荐以下 GitHub 代码库,其中包含实用示例、工具和资源,可帮助您提升系统设计技能和知识。
希望这篇文章对你有帮助,期待在评论区看到更多推荐!💜
文章来源:https://dev.to/vladi-stevanovic/system-design-resources-that-are-not-bytebytego-1h2j