打开一个空文件的时候,最容易想的,是它最终会变得多么完整。登录、数据库、统计、设置,一张功能清单很快就能写满一页。
但一个值得被使用的工具,通常从更具体的地方开始:有件事,自己已经重复做了很多次。
先观察,再写代码
可以花几天记下工作里的小摩擦。比如每次发布文章都要手动检查链接,每次分享图片都要调整尺寸,或者每周都在重新整理同样的笔记。
问题越具体,越容易知道工具是否真的有用。与其说「我要做一个效率平台」,不如说「我想让整理这十个链接少花五分钟」。
让第一个版本只有一条路径
画出使用工具的最短过程:输入是什么,工具做什么,结果是什么。
以整理链接为例,第一版可以只有一个输入框和一个复制按钮。用户粘贴链接,工具移除空行和重复项,然后输出一份干净的列表。
javascript
function uniqueLines(input) {
const lines = input
.split('\n')
.map(line => line.trim())
.filter(Boolean);
return [...new Set(lines)].join('\n');
}这段代码不是完整产品,却已经解决了一个真实问题。先把这条路径做好,再考虑其他入口。
把完成条件写清楚
「做得更好」没有终点。「粘贴二十行文字,复制去重后的结果」则可以直接验证。
为第一版写下三个条件:
- 正常输入能得到预期结果。
- 空输入和重复点击不会让页面出错。
- 刷新后,用户知道怎样重新开始。
完成条件足够具体,开发过程就更容易保持方向。暂时想不到怎样验证的功能,可以先留在笔记里。
用几次,再决定下一步
第一次使用时,常常会发现按钮位置不顺手、提示不清楚,或者真正需要的功能和开始想的不一样。
这些发现很有价值。让实际使用决定第二版,比沿着最初的功能清单一路做下去更可靠。
小工具不一定要长成大产品。能稳定解决一个问题,已经是一件完整的作品。
✳
感谢你读到这里。
我们在下一篇文字里,再见。