知识卡片

统一开发环境:消除大量原本要靠人力争论和排查的无意义摩擦

普通读书笔记卡

内容

改善代码质量最终往往会落到”改善团队的生存环境”这个更大的话题上——团队需要一套统一的编码规范、统一的语言版本、统一的编辑器配置、统一的文件编码,条件允许的话最好连操作系统都统一,这能避免大量原本毫无意义、却真实消耗团队精力的摩擦。文中给出了一个真实的例子:新浪把开发团队全部换成统一的MacBook之后,很多此前长期存在的问题一夜之间不再是问题——字符集、换行符、IDE配置这类差异,原本都要靠反复排查、反复沟通才能定位和解决,统一操作系统之后,很多这类问题只需要一份配置文件就能一次性解决,不再出现各种莫名其妙的代码冲突或者格式不兼容问题,也不会再有人无意中提交编码格式古怪的文件进来搅乱团队协作。这个案例揭示了一条容易被低估的团队效能提升思路:团队日常协作中消耗的大量精力,未必来自”真正有技术含量的问题”,反而经常来自这类环境不统一带来的、本可以从源头上被消除的”伪问题”——字符集不一致导致的乱码、换行符差异导致的代码diff噪音、编辑器配置差异导致的格式不统一,这些问题单独看都很琐碎,但反复出现、反复消耗团队精力去排查和争论,累积起来的隐性成本相当可观。通过在环境层面做统一(而不是依赖每个人的自觉或者事后修补),可以一次性、从源头上根除这一整类问题,把团队本该用于解决真正有价值问题的精力,从这些原本可以避免的摩擦中解放出来。

参考来源

- 位置:《高可用架构(第1卷)》第5章《运维保障》"5.7 系统运维之如何应对烂代码"节,"5.7.3 改善生存环境"(源文件:_epub-src/OEBPS/Text/Chapter5_7_4.xhtml) - 结论依据:原文说明"团队需要一套统一的编码规范、统一的语言版本、统一的编辑器配置、统一的文件编码……就好像最近新浪给开发全部换成了统一的MacBook,一夜之间以前的很多问题都变得不是问题了:字符集、换行符、IDE之类的问题只要一个配置文件就解决了,不再有各种稀奇古怪的代码冲突或者不兼容的问题",直接支撑本卡片结论。 - 原始内容:团队需要一套统一的编码规范、统一的语言版本、统一的编辑器配置、统一的文件编码,如果有条件最好能使用统一的操作系统,这能避免很多无意义的工作……一夜之间以前的很多问题都变得不是问题了:字符集、换行符、IDE之类的问题只要一个配置文件就解决了。