以前我理解的“完成”很简单:功能写出来,页面能打开,任务就可以划掉。真正做过一些项目后,我才发现,代码停止变化的那一刻,往往只是工作刚刚进入后半段。
一个功能在自己的电脑上能运行,不代表别人打开也能用;桌面看起来整齐,不代表手机不会错位;按钮能点,不代表点完以后真的发生了正确的事。许多问题都藏在“看起来已经完成”之后。
从交付功能到交付结果
现在我会把完成拆成几件更具体的事:入口找得到、流程走得通、错误有提示、手机能使用、重新打开后状态仍然正确。最后还要在真实环境里再走一遍,而不是只相信编辑器里的结果。
这套标准看起来让工作变慢了,实际上减少了反复。越早把验证放进过程,越少需要在最后靠运气收尾。
现在的完成清单
- 功能解决了最初的问题,而不是只完成了描述里的动作。
- 桌面和手机都能正常使用,重要入口不会消失。
- 异常情况不会悄悄失败,用户知道下一步该做什么。
- 上线后的真实页面经过检查,测试产生的进程和文件被清理。
- 以后再回来时,仍然能看懂它为什么这样设计。
我仍然会低估边界情况,也会遇到测试没有覆盖的问题。但至少现在,“完成”不再意味着我写完了,而是这件东西已经可以被可靠地使用。