software-engineering-advice-from-google

  • google计算环境
    • 大量廉价PC组成的集群
    • 新集群存在大量的硬件故障
  • google工程环境
    • 分布式系统(数据或者请求都没法在一个机器上完成)
    • 遍布全球的多个数据中心
  • 产品大都是服务,而不是简单包装的软件
    • 服务在内部也会大量
    • 。。。
  • 设计软件系统需要各种平衡
    • 简单
    • 扩展
    • 性能
    • 可靠性
    • 通用性
    • 专有性
  • 在编码和详细文档之前需要做的事情
    • 先做一个大致的设计
    • 跟做过类似系统的人在白板上讨论
    • 最好是讨论一些不同的可选设计
  • 接口
    • 接口需要仔细考虑
    • 想象一下一些遗留的客户需要如何使用
    • 精确的文档,但是要避免实现上的限制
    • 在实现接口之前要注意反馈的意见
    • 最好的学习方式是借鉴已有的优秀接口设计