AI 编程助手已经进入编辑器、终端和代码审查流程。它能快速生成样板代码,也能帮忙定位错误,但 Carson Gross 提出的 No AI Fridays 把问题换了一个角度:每周选一天,团队成员关闭 AI 编程助手,完全依靠自己写代码。
这并不是停止工作,也不是拒绝搜索引擎、文档或 Stack Overflow。重点是把“代码由谁思考和组织”重新交还给开发者。
这一天究竟在练什么
No AI Fridays 的价值不在于手写代码本身,而在于强制开发者重新经历完整的工程过程:
- 先理解需求,再决定数据结构和接口。
- 先阅读现有代码,再修改实现。
- 遇到错误时,根据日志、文档和实验建立判断。
- 在提交前自己检查边界条件、异常路径和测试覆盖。
AI 通常擅长把明确的问题快速变成代码,但真实项目里最费脑力的部分往往发生在代码生成之前:问题是否定义正确,改动是否符合系统约束,以及这个方案未来是否容易维护。
对熟悉 AI 辅助开发的人来说,一天不用自动补全,可能会明显变慢。这种不适感本身就是反馈:团队可以借此发现哪些成员已经不熟悉项目结构,哪些模块缺少文档,哪些测试只能依靠工具间接补出来。
不等于回到闭门造车
No AI Fridays 并没有要求开发者拒绝所有外部知识来源。可以继续使用:
- 官方文档和本地代码注释
- 搜索引擎与 Stack Overflow
- 编译器、静态检查器和测试框架
- 调试器、日志和性能分析工具
- 团队成员之间的讨论
边界在于:不让 AI 编程助手替你生成、修改或解释当前任务中的代码。这样既保留了正常的软件工程工具链,也把关键的设计和推理过程留给人来完成。
这个边界需要团队自行定义。例如,是否允许使用 AI 搜索摘要,是否允许 AI 生成提交信息,是否允许运行已有的自动化代码审查,都可以在活动开始前写清楚。规则越明确,复盘越有价值。
可以这样落地
下面是一个可以改造到团队仓库中的最小实践。它不负责识别每个人使用了什么工具,而是通过环境变量和 CI 约定,让当天的检查结果可见。
假设项目使用 pytest,团队约定在 No AI Friday 设置 NO_AI_FRIDAY=1,并在提交前运行测试:
#!/usr/bin/env bash
set -euo pipefail
if [[ "${NO_AI_FRIDAY:-0}" != "1" ]]; then
echo "普通开发日:运行标准检查"
else
echo "No AI Friday:请确认本次代码由人工设计和编写"
fi
python -m pytest -q
python -m compileall -q src
将它保存为 scripts/no-ai-friday-check.sh,赋予执行权限后运行:
chmod +x scripts/no-ai-friday-check.sh
NO_AI_FRIDAY=1 ./scripts/no-ai-friday-check.sh
这段脚本不会也不应该充当“防作弊系统”。它的作用是把团队约定放进工作流,并提醒开发者在提交前完成一次有意识的人工检查。更重要的部分是提交说明和复盘,例如记录:
任务:为订单查询增加分页
我做的设计:使用 cursor 而不是 offset,避免数据变化导致重复结果
查阅的资料:数据库分页文档、项目内已有查询接口
遇到的问题:空 cursor 和非法 cursor 的错误响应不一致
后续改进:补充非法 cursor 的接口测试
如果团队使用 GitHub Actions 或其他 CI,可以把同样的命令放进工作流。不要把“是否使用 AI”当作自动化判定条件;自动化更适合验证测试、格式和构建是否通过。
一天之后要复盘什么
活动结束后,单纯统计“今天少写了多少行代码”没有太大意义。更值得讨论的是:
- 哪些任务在没有 AI 的情况下明显变慢?它们是设计复杂,还是项目文档不足?
- 哪些错误原本会被 AI 很快修正,但团队成员没有真正理解原因?
- 哪些代码自己写出来后更容易解释和维护?
- 哪些重复劳动适合继续交给 AI,哪些判断必须由人负责?
No AI Fridays 也有成本。简单任务可能会花更久,团队交付速度可能下降,参与者还可能因为规则模糊而产生争议。因此,它更适合作为定期的工程训练和反思机制,而不是长期禁止 AI 的开发制度。
采用清单
可以从每周半天开始,再决定是否扩展到一天:
- 提前公布日期和适用范围。
- 明确允许使用的工具与禁止的 AI 能力。
- 保持正常的测试、构建、调试和代码审查流程。
- 不用提交行数衡量活动效果。
- 记录一个具体的设计决策和一个遇到的困难。
- 活动后改进文档、测试或开发规范。
AI 不会因为一天不用就失去价值,开发者也不会因为使用 AI 就失去能力。真正值得保留的是切换能力:需要速度时使用合适的工具,需要理解系统时,也能独立完成思考、实现和验证。