高效编程的启发式列表 - Allen Holub


  1. 没有心理安全、尊重和信任,以下任何事情都不可能发生。
  2. 过程存在于为人服务;人是第一位的。
  3. 最好的工作方式是协作。谈判不是合作。做出英勇努力的孤立个体永远不会像协作团体那样有效。当客户、业务人员和开发人员真正合作时,我们会获得最佳结果。
  4. 欢迎随时更改组织、流程、产品、计划。僵化和敏捷无法同时存在。
  5. 结果比产出更重要。关注产出会产生低于标准的结果。
  6. 知识工作具有独特的关注点,与工厂或建筑工地的关注点无关。
  7. 我们的工作方式、我们所做的工作以及我们工作的组织都是互联系统的一部分。如果不改变一切,你就无法改变任何事情。您无法通过修补零件来改进系统。
  8. 最有效的组织是学习型组织。学习——关于我们生产的产品和我们生产它们的方式——是持续的。学习不仅仅是一项正常的工作活动,它是工作。
  9. 我们通过观察我们的工作方式并解决我们遇到的任何问题来不断改进。改进是一项持续的而非周期性的活动。当出现问题时,我们会停下来想办法改进我们的流程,这样问题就不会再次发生。我们关注系统,而不是人。有时,我们会停下来反思我们的工作,以做出积极的改进。
  10. 简单是必不可少的。这条规则适用于从组织结构和流程到我们编写的代码的所有内容。我们不会为无法预测的未来浪费时间构建(产品或组织)。
  11. 工作是短暂的。我们期望改变甚至丢弃我们构建的一切,从产品到组织和流程。一切都是实验。
  12. 我们致力于让客户的生活更美好,让他们的工作更轻松。我们通过提供源源不断的工件和他们认为有价值的帮助来做到这一点。
  13. 我们从整体上思考。我们致力于完整的产品,而不是项目。如果你没有项目,你就不需要项目管理。
  14. 我们工作方式的核心是持续快速的反馈。我们做一个小改动,将结果交付给客户,获得反馈,然后根据反馈调整我们的工作。这个周期尽可能短——几分钟、几小时,偶尔几天——而不是几周。这种检查和调整循环适用于过程改进和产品开发。我们交付的更改是高质量的(例如在代码中:无已知缺陷、生产就绪、安全等)。
  15. 质量不容商量。(这条规则适用于质量的所有方面,而不仅仅是测试。)
  16. 最好的计划是战略性的,而不是战术性的。
  17. 预测是不可靠的。估计不是承诺。
  18. 我们衡量进展的唯一标准是将他们认为有价值的东西交付给我们的客户。如果他们改变主意也没关系。
  19. 管理层仅提供战略指导和支持。告诉团队您需要什么,相信他们会弄清楚如何执行。
  20. 为人们提供他们需要的环境和支持,然后让开。我们相信自治团队能够控制他们的工作方式和工作环境。团队是自我组织和自我管理的。他们选择了自己的工具和方法。我们希望他们在他们认为必要的时候改变产品和他们自己。如果所有团队都以相同的方式工作——例如,使用相同的流程或框架——你就没有自主权。
  21. 自治并不意味着团队不相互协调,也不与更大的组织协调。围绕从战略目标到实施技术的所有方面保持一致至关重要。
  22. 最好的团队是稳定的。为团队带来工作;不要组成团队来完成工作。资助团队,而不是资助工作。
  23. 依赖其他团队的团队无法快速响应,因此团队成员之间拥有将想法交到客户手中所需的所有技能。技能重叠,所以没有一个人是必不可少的。
  24. 人们必须以精神焕发、放松的状态开始每一天,并能够尽最大努力做好工作(并在这些条件不再适用时停止)。
  25. 相关性、自主性、掌握和目的是必不可少的驱动因素。奖励和惩罚具有积极的破坏性。
  26. 沟通是有效结果的核心。沟通效率随着物理接近程度和通信媒体的丰富性而提高。实时面对面是最好的,虽然并不总是可能的,所以我们有时会尽可能地接近。