软件工程师必须避免的10个职业习惯陷阱

📅 2026/7/28 10:51:10 👁️ 阅读次数 📝 编程学习
软件工程师必须避免的10个职业习惯陷阱

1. 软件工程师的职业习惯陷阱

刚入行时我总以为写出能跑的代码就够了,直到review时被前辈指出一堆低级错误才意识到,工程师的坏习惯就像技术债里的高利贷——初期看似无伤大雅,后期却要付出成倍代价。这些习惯往往藏在日常操作的细节里,比如随手写的临时变量名最终变成了核心逻辑,或者为了赶进度跳过的单元测试在线上引发连锁故障。

2. 代码层面的典型坏习惯

2.1 命名随意化综合征

我见过最离谱的变量命名是a1tmpData这类毫无意义的占位符,三个月后原作者都看不懂自己的代码。好的命名应该像精确的GPS坐标:

  • 类名用名词(OrderProcessor
  • 方法名用动词(validatePayment
  • 布尔值以is/has开头(isValid

经验:在IDE里看到黄色波浪线(未使用变量)或红色感叹号(魔法数字)时,就该立即重构而不是忽略

2.2 复制粘贴式开发

从Stack Overflow复制代码片段时,我吃过两次大亏:

  1. 没注意GPL协议导致法律风险
  2. 粘贴的加密算法存在已知漏洞

安全的借鉴姿势应该是:

// 原始片段 String sql = "SELECT * FROM users WHERE id=" + userId; // SQL注入风险 // 改造后 PreparedStatement stmt = conn.prepareStatement( "SELECT * FROM users WHERE id=?" ); stmt.setInt(1, userId);

2.3 防御性编码缺失

去年我们系统因为NPE(空指针异常)宕机8小时,根本原因是:

def process_order(order): # 直接使用order.user.address会引发连锁NPE address = order.user.address if order and order.user else None print(address.street) # 这里仍然可能NPE!

健壮的写法应该采用以下任一模式:

  • Optional链(Java/C#)
  • 空对象模式(Null Object)
  • 断言 + 早期返回

3. 工程实践中的不良习惯

3.1 测试后置化反模式

我曾目睹测试同学和开发在会议室吵架,起因是开发提测时附言"随便测下就行"。正确的测试策略应该是:

测试类型实施阶段工具示例耗时占比
单元测试编码同时JUnit/Mockito60%
集成测试每日构建TestContainers25%
E2E测试发布前夜Cypress15%

3.2 文档债务积累

帮同事接手项目时,我最怕看到这样的README:

# Project X To run: npm start

完整的文档应该包含:

  1. 架构决策记录(ADR)
  2. 本地开发环境配置
  3. 部署流水线说明
  4. 领域术语表

3.3 过度设计倾向

用微服务架构处理日活100的系统,就像用航天发动机驱动自行车。我总结的架构选型checklist:

  • [ ] 团队是否具备运维能力?
  • [ ] 监控方案是否就绪?
  • [ ] 是否需要这么高的SLA?
  • [ ] 简单方案能否满足未来2年需求?

4. 协作沟通的常见误区

4.1 沉默成本陷阱

有次我花三天解决一个配置问题,后来发现同事早遇到过相同问题。现在我会:

  1. 阻塞超30分钟就在群内提问
  2. 问题解决后立即更新内部Wiki
  3. 复杂问题录屏讲解

4.2 评审形式化

有效的代码评审应该避免:

  • 只检查代码风格(这该用自动化工具)
  • 只说"LGTM"(Looks Good To Me)
  • 不敢质疑资深成员的代码

建议采用"3C原则":

  • Clear(明确问题)
  • Constructive(建设性意见)
  • Concrete(具体修改建议)

4.3 知识孤岛化

我培养团队习惯的做法:

  • 每周轮值"技术讲解员"
  • 关键系统设置"影子负责人"
  • 重要决策使用RFC流程

5. 个人效率的隐形杀手

5.1 上下文频繁切换

实测表明,被打断后平均需要23分钟恢复专注。我的应对方案:

  • 每天设置2小时"勿扰时段"
  • 使用物理状态指示器(红绿灯牌)
  • 批量处理IM消息(每小时集中回复)

5.2 技术栈偏食

只守着自己熟悉的技术栈,就像厨师只会用一把刀。我每年强制自己:

  • 学习1门新语言(最近是Rust)
  • 研究2个非本职领域(如DevOps、UX)
  • 参加3次跨部门项目

5.3 健康透支模式

颈椎病和腱鞘炎是程序员的职业病。现在我的工位配置:

  • 人体工学椅(赫曼米勒)
  • 垂直鼠标(罗技MX Vertical)
  • 定时站立提醒(每50分钟)

改掉这些习惯不是一蹴而就的事,我从去年开始用"习惯追踪表"记录改进情况。比如把"写注释"拆解为可量化的目标:每次提交至少包含3条有意义的注释,持续21天后这个行为就变成了肌肉记忆。