代码简洁性:高效工程生产力
作者:Max Kanat-Alexander
发布日期:2017年4月4日
工程生产力工作者常陷入两种困境:要么与试图帮助的开发团队发生冲突,要么花费大量时间开发无人关心的项目。问题的核心在于,开发团队实际意识到的问题与你观察到的问题往往存在偏差。
理解真实问题
例如,你可能发现团队代码复杂度过高,导致测试困难且系统难以维护。但开发者真正感知的可能是“每月只能发布一次,且发布日全团队需加班至晚上10点”。若忽略这种认知差异,直接开始重构代码,将面临多重阻力:
- 管理层和其他开发者的抵制
- 即使完成高质量工作,也可能被公司边缘化
- 最终导致个人士气低落和工作无效化
建立可信度的策略
1. 倾听真实痛点
- 与直接参与代码工作的开发者深入交流,而非仅咨询管理层
- 使用情感导向提问方式:
- “工作中哪些部分最让您烦恼?”
- “是否存在始终难以处理的代码段?”
- “是否有因害怕破坏而不敢触碰的代码区域?”
2. 识别共同主题
通过持续对话,会发现投诉中的共性模式(如“构建速度过慢”)。虽然根本原因通常是代码复杂性,但需要聚焦更高层次的可操作问题。
3. 快速交付可见成果
选择开发者明确认知、且可在1-2个月内解决的问题实施解决方案。关键目标不是彻底改变工作流程,而是建立个人可信度。选择他人尝试失败过的领域尤其有效,能证明“混乱状态是可以改善的”。
渐进式改进方法
建立初步可信度后,可开始解决更深层问题。但需注意:
- 避免一次性变革:团队文化和开发过程的改变需逐步实施
- 处理变革反弹:应对因改变引发的负面情绪,等待稳定后再推进下一步
- 适应团队节奏:大规模团队通常需要更慢的推进速度
处理阻力情况
当遇到资深人员阻碍时:
- 评估自身方法:检查是否遵循上述建议,或存在沟通问题
- 建立支持联盟:大多数开发者希望提升代码质量,即使他们保持沉默
- 公开鼓励改进意愿:培养志愿者文化,像开源项目一样鼓励贡献
若被完全阻止且无法取得进展,考虑转换团队环境。与永远拒绝理性沟通的人对抗不值得牺牲个人心智健康。
文化转型的关键
当渐进式改进取得成效后:
- 瞄准根本问题:最终需要改变软件开发方式
- 适时引入重构:在可信度足够时提出“重构此代码将更容易实现X功能”
- 持续推动重构:同时不忽略工具、测试和流程改进
- 培养质量文化:让团队形成“工作时总会清理代码”的共识
一旦形成持续改进的文化,即使不再主动干预,问题也会自行解决。这不是关于“建立共识”,而是发现人们已知的问题并提供可接受的解决方案,同时逐步解决代码库的根本问题。
核心原则
记住最关键的原则:解决人们自知存在的问题,而非你认为他们存在的问题。即使你只负责工具、框架或子团队的较小部分,这一原则同样适用。许多工程生产力团队花费数年开发开发者根本不想要、从不使用、甚至在其设计者离开后积极删除的工具,这是巨大的时间浪费。
实践建议总结
- 有效性优于组织层级:关注实际效果而非组织架构
- 软件工程是人的学科:处理软件工程问题必须处理软件工程师本身
- 避免无谓斗争:当团队自我毁灭时,考虑转换环境
- 平衡个人与组织需求:在个人心理健康与解决问题间找到平衡点
通过这种方法,你不仅能解决大型代码库的根本问题,还能改变重要工程组织的开发文化。
不要浪费时间。保持高效。改变世界。