软件工程师必须避免的10个职业习惯陷阱
1. 软件工程师的职业习惯陷阱
刚入行时我总以为写出能跑的代码就够了,直到review时被前辈指出一堆低级错误才意识到,工程师的坏习惯就像技术债里的高利贷——初期看似无伤大雅,后期却要付出成倍代价。这些习惯往往藏在日常操作的细节里,比如随手写的临时变量名最终变成了核心逻辑,或者为了赶进度跳过的单元测试在线上引发连锁故障。
2. 代码层面的典型坏习惯
2.1 命名随意化综合征
我见过最离谱的变量命名是a1、tmpData这类毫无意义的占位符,三个月后原作者都看不懂自己的代码。好的命名应该像精确的GPS坐标:
- 类名用名词(
OrderProcessor) - 方法名用动词(
validatePayment) - 布尔值以is/has开头(
isValid)
经验:在IDE里看到黄色波浪线(未使用变量)或红色感叹号(魔法数字)时,就该立即重构而不是忽略
2.2 复制粘贴式开发
从Stack Overflow复制代码片段时,我吃过两次大亏:
- 没注意GPL协议导致法律风险
- 粘贴的加密算法存在已知漏洞
安全的借鉴姿势应该是:
// 原始片段 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/Mockito | 60% |
| 集成测试 | 每日构建 | TestContainers | 25% |
| E2E测试 | 发布前夜 | Cypress | 15% |
3.2 文档债务积累
帮同事接手项目时,我最怕看到这样的README:
# Project X To run: npm start完整的文档应该包含:
- 架构决策记录(ADR)
- 本地开发环境配置
- 部署流水线说明
- 领域术语表
3.3 过度设计倾向
用微服务架构处理日活100的系统,就像用航天发动机驱动自行车。我总结的架构选型checklist:
- [ ] 团队是否具备运维能力?
- [ ] 监控方案是否就绪?
- [ ] 是否需要这么高的SLA?
- [ ] 简单方案能否满足未来2年需求?
4. 协作沟通的常见误区
4.1 沉默成本陷阱
有次我花三天解决一个配置问题,后来发现同事早遇到过相同问题。现在我会:
- 阻塞超30分钟就在群内提问
- 问题解决后立即更新内部Wiki
- 复杂问题录屏讲解
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天后这个行为就变成了肌肉记忆。
