(´・ω・`) 程序员八荣八耻——看到第一句我就凉了

以瞎猜接口为耻,以认真查询为荣
以模糊执行为耻,以寻求确认为荣
以臆想业务为耻,以人类确认为荣
以创造接口为耻,以复用现有为荣
以跳过验证为耻,以主动测试为荣
以破坏架构为耻,以遵循规范为荣
以假装理解为耻,以诚实无知为荣
以盲目修改为耻,以谨慎重构为荣

今天在QQ群里刷到这段话,看完第一句整个人就凉了。

不是因为空调开太低,是因为这八句话每一句都像在报我身份证号。

(´;ω;`) 第一条:以瞎猜接口为耻,以认真查询为荣

我:“这个API应该这么调吧……参数大概传个字符串就行?”

十分钟后:

Error 400: Bad Request
Error 404: Not Found
Error 500: Internal Server Error

最后发现文档里写得清清楚楚,参数要传JSON对象,而且路径是 /api/v2/ 不是 /api/v1/

[!CAUTION]
瞎猜接口的代价:浪费两小时 + 怀疑人生 + 在群里问"这API是不是坏了"然后被大佬截图文档打脸。

(´・ω・`) 第二条:以模糊执行为耻,以寻求确认为荣

产品经理:“这个按钮点一下要有个效果。”

我:“好嘞!”(默默写了个alert弹窗)

产品经理:“我要的是渐变动画+音效+粒子特效!”

我:“……你刚才没说啊?”

产品经理:“我以为你懂。”

[!WARNING]
需求没确认清楚就动手,等于在雷区跳芭蕾。炸是迟早的事。

(ノ◕ヮ◕)ノ 第三条:以臆想业务为耻,以人类确认为荣

我脑补的用户使用流程:

打开APP → 注册登录 → 浏览商品 → 下单支付 → 五星好评

实际用户的使用流程:

打开APP → 忘记密码 → 找回密码 → 验证码收不到 → 卸载APP → 一星差评

[!IMPORTANT]
别在脑子里演小剧场了,去问问真实用户怎么用的。你的脑补和用户的实际操作,中间差着一个银河系。

(`・ω・´) 第四条:以创造接口为耻,以复用现有为荣

我:“这个需求现有的组件满足不了,我新写一个吧!”

三个月后:

/src/components/
  Button.vue
  Button2.vue
  ButtonNew.vue
  ButtonFinal.vue
  ButtonFinalFinal.vue
  ButtonFinalFinalActuallyThisOne.vue

[!TIP]
造轮子之前先搜搜仓库里有没有。你写的第N个Button,可能和第1个Button功能一模一样,只是颜色不同。

(。・ω・。) 第五条:以跳过验证为耻,以主动测试为荣

我:“这段代码看起来没问题,能跑,直接提交吧。”

CI:

Test failed: 3 errors, 7 warnings

我:“……我本地明明能跑啊?”

[!NOTE]
“我本地能跑"是程序员最大的谎言,仅次于"这个需求很简单”。

(´・ω・`) 第六条:以破坏架构为耻,以遵循规范为荣

我:“这个需求急,我先临时加一行,后面再重构。”

一年后:

// TODO: 临时方案,记得重构
// 创建于 2024-03-15
// 今天 2026-07-22
// 重构?什么重构?

[!CAUTION]
临时方案是永恒的,重构是永远不会发生的。你今天破坏的架构,明年会变成你同事的噩梦,后年变成你自己的噩梦。

(´;ω;`) 第七条:以假装理解为耻,以诚实无知为荣

开会时:

大佬:“……所以我们需要用CQRS模式配合事件溯源,实现最终一致性。”

我:“嗯嗯,明白了。”(其实CQRS是啥都不知道)

回去后疯狂Google,发现原来大佬说的和我理解的差了十万八千里。

[!IMPORTANT]
不懂装懂是技术成长最大的敌人。说"我不懂"不丢人,说"我明白了"然后写出屎山才丢人。

(`・ω・´)b 第八条:以盲目修改为耻,以谨慎重构为荣

我:“这个函数太长了,我拆一下。”

(一顿操作猛如虎)

TypeError: Cannot read property 'undefined' of undefined
ReferenceError: foo is not defined
RangeError: Maximum call stack size exceeded

Git:

git reset --hard HEAD

[!WARNING]
重构之前先写测试,测试过了再改,改完再测。盲目前进等于自杀式冲锋。

(。・ω・。)ノ 写在最后

这八句话,句句都是血泪教训。

我见过太多项目死于"瞎猜"、“臆想”、“假装理解”。也见过太多代码库变成屎山,是因为每个人都"临时加一行"、“先跑起来再说”。

这段话最狠的地方在于——

它不是在说教,它是在照镜子。

你每读一句,脑子里都会浮现一个具体的场景,一个具体的自己,一个具体的翻车现场。

以假装理解为耻,以诚实无知为荣。

这句话我打算打印出来贴在显示器旁边。

下次再遇到不懂的,先问自己:

“我是在认真查询,还是在瞎猜?我是在寻求确认,还是在模糊执行?”

如果答案是后者——

停手,去问,去查,去确认。

这比事后擦屁股快一万倍。


如果你也有被这八句话戳中的瞬间,欢迎在评论区分享你的翻车经历。
毕竟,程序员的成长,就是从一次次"凉了"中爬起来的。

(´・ω・`) 愿天下再无屎山,愿每个接口都有文档。

2 个赞

没事
[!CAUTION]
认真查询的代价:认真两小时 + 最终背错 + 在群里问"这API是不是坏了"然后被大佬截图文档打脸。:sob: