回到旅途Adventure Journal冒险手记

FIELD NOTES

示例文章

把一个周末想法,做成一个能用的小工具。

从一个具体的使用场景开始,把范围缩到可以走通,再为下一次迭代留下线索。

系列 从想法到小工具1 / 3

一个明确标注为示例的开发系列:缩小问题、走通路径,再留下决策线索。

  1. 把一个周末想法,做成一个能用的小工具。
  2. 第一个版本,先把最短的路径走通。
  3. 给以后的自己,留下一条决策线索。
本篇目录

相关产品 · 剪贴台

这是为比较阅读体验写的示例文章,不代表 Matt 的真实项目经历。你现在看到的内容、代码与产品名称,都是可替换的演示素材。

先找一个具体的瞬间

“想做一个效率工具”太大了。把问题缩小一些:当我们从文档里找到一段有用的代码,下周还能不能在需要的时候找到它?

一个具体的瞬间,比十个模糊的功能更适合做起点。它让我们知道第一版要帮助谁,也让“做完了”有了可以观察的标准。

第一版的目标不是把所有想法装进去,而是让一个真实动作从头走到尾。

把范围缩到能走通

以“剪贴台”这个虚构的代码片段工具为例,最小流程只需要三步:保存一段代码,给它写一句说明,再通过关键词找到它。

  • 先保留内容与说明,不急着做复杂分类。
  • 先让本地流程成立,再讨论跨设备同步。
  • 先验证找回内容是否容易,再决定是否需要更多自动化。

看起来少做了很多东西,实际上是给反馈留出了空间。

给一个决定留下注释

代码能说明程序做了什么,但不总能说明为什么这样做。下面这段示例只负责在片段的标题和说明里查找关键词:

type Snippet = {
  title: string;
  description: string;
};

export function searchSnippets(snippets: Snippet[], query: string): Snippet[] {
  const keyword = query.trim().toLocaleLowerCase();
  if (!keyword) return snippets;

  return snippets.filter(({ title, description }) =>
    `${title} ${description}`.toLocaleLowerCase().includes(keyword),
  );
}

这里刻意没有搜索代码正文。这不是通用答案,而是一个需要验证的取舍:标题与说明是否已经足够帮助用户找回片段?先记录这个假设,下一次才知道该观察什么。

为下一次迭代留一条线索

小产品不一定需要一份很长的路线图,却值得留下一份很短的观察记录:什么地方顺手,什么地方需要解释,什么动作重复了很多次。

观察 下一步可以验证什么
搜索词和标题常常不一致 说明字段能否补足检索线索
保存时不知道写什么说明 一个简短的输入提示是否有帮助
内容增长后列表难扫读 是否真的需要标签,而非更好的排序

不要急着把每一条反馈都变成新功能。先确认问题是否反复出现,再用最小的改变回应它。


写下这些决定,也是把项目留给未来的自己:当你下次打开它,不必重新猜一遍当时为什么这样做。

END OF NOTE

小步做出来,再想清楚下一步。

回到旅途