驾驭复杂系统:从优步到谷歌的经验

2025-05-15
驾驭复杂系统:从优步到谷歌的经验

作者分享了在优步竞争对手和谷歌从事软件工程的经验,阐述了复杂系统与复杂问题的区别。复杂问题遵循结构化、可重复的解决方案,而复杂系统则需要适应性和创新性解决方案。文章深入探讨了复杂系统的五个特征:涌现行为、延迟后果、局部优化陷阱、滞后现象和非线性。作者还分享了在复杂环境中有效运作的策略,包括优先选择可逆决策、定义正确的衡量指标、拥抱创新、利用最佳实践(特性标志、金丝雀发布、渐进式发布、影子测试)以及重视可观察性、模拟测试和机器学习。最后,作者强调了团队协作在复杂系统中的重要性。

阅读更多
开发

从博客到畅销书:一位程序员的Go语言著作之旅

2025-04-10
从博客到畅销书:一位程序员的Go语言著作之旅

作者讲述了他撰写《100 个 Go 语言错误及如何避免》一书的历程。从最初在瑞士用Go语言编写PoC开始,到克服各种挑战,包括更换工作、与出版商沟通、应对编辑和审稿人的反馈,以及最终出版发行,作者分享了整个过程中的心路历程和经验教训。其中包括与编辑的磨合、读者反馈的价值、以及对自身写作能力的提升。最终,这本书获得了成功,并被翻译成多种语言。作者还反思了写作的意义和收获,以及对金钱和名利的淡然态度。

阅读更多
开发

用 Haskell 理解函子、Applicative 和 Monad

2025-03-30
用 Haskell 理解函子、Applicative 和 Monad

本文以通俗易懂的比喻,深入浅出地讲解了 Haskell 函数式编程中的函子、Applicative 和 Monad 三个核心概念。作者用盒子作比喻,解释了这三种类型如何处理不同情境下的函数应用,并用代码示例演示了它们的用法和区别。文章最后还分享了作者与 Haskell 社区成员交流的经历,反思了学习和分享知识的重要性。

阅读更多
开发

单元测试:代码的活文档

2024-10-18
单元测试:代码的活文档

本文探讨了单元测试在软件开发中充当文档的作用。作者指出,单元测试不仅验证代码功能,还能清晰解释代码行为、与代码保持同步、覆盖边缘情况,因此是强大的文档工具。文章还介绍了编写有效单元测试的最佳实践,强调描述性测试名称、原子性、简单性、独立性和可读性。作者认为,单元测试应作为传统文档的补充,共同提高代码可理解性。

阅读更多
未分类 代码文档