前几天我把 PickTests 最近的开发过程发到了 Indie Hackers。PickTests 是我正在做的一个在线能力测试网站目前已经上线了反应时间、瞄准训练、序列记忆、数字记忆、多目标追踪和斯特鲁普 6 项测试。帖子后来出现在了 Indie Hackers 首页的 Build Board。评论慢慢多起来有人问我为什么还在坚持用原生 JavaScript有人提到手机上的触控问题也有人建议保存最近成绩和个人最好成绩。其中一条评论问用户完成一次测试以后为什么还会回来这个问题刚好问到了我一直有些发虚的地方。PickTests 中文首页很早就写着一句话重复测试、比较成绩看看自己有没有进步。我一直觉得这句话挺适合这个网站。用户不需要注册也不一定要和排行榜上的人比。今天测一次过几天再回来看看自己有没有快一点、记得多一点这就够了。但当时的页面其实没有把这件事做完整。用户完成一次测试看到一个结果然后关掉网页。下次再打开页面又从头开始。假设第一次测出 236 毫秒第二次测出 255 毫秒他可能觉得自己变慢了也可能根本记不清上次究竟是多少。网站允许用户重复测试但比较这件事基本还是靠用户自己记。成绩记录并不是看到这条评论后才想到的。之前做结果页时我就考虑过个人最好成绩和最近记录只是每次准备开始总会觉得先做下一个测试更划算。这个功能就这样一直往后排。那条评论也没有突然给我一个答案只是让我又回头看了一遍首页上的那句话。既然我已经写了“和自己比较”页面至少应该先把上一次的结果留下来。八轮有点长五轮也不一定适合所有人我先动手修改的是 PickTests 里的反应时间测试。这类反应时间测试的流程很简单页面等待一段随机时间信号出现后用户立刻点击最后得到一个以毫秒为单位的成绩。第一个能运行的版本并不难写。真正让我反复改的是一次反应速度测试到底应该进行几轮。之前的版本设定为 8 轮。我当时的想法是只测一次很容易受到走神、误触和设备状态的影响。多测几轮再取一个平均值结果会稳定一些。这个理由没有错。但我自己把测试完整跑过几次以后也能感觉到 8 轮有点长。只是临时点进来玩一下的人做到一半可能就不想继续了。认真测完一次以后也未必马上愿意再来 8 轮。我在 5 轮、8 轮和 10 轮之间来回想过。后来发现这个问题可能本来就没有一个能照顾所有人的数字。所以我没有继续选而是把两种情况都留下来。只想快速试一下可以选择单轮测试。想得到相对稳定的结果可以完成 5 轮再看平均成绩和每一轮的结果。做完以后回头看这不是什么很大的功能。只是不用再要求每个打开页面的人都按照同一种方式完成测试。有人只是想点一下看看自己的反应有多快。有人会连续测几次想知道自己还能不能再快一点。这两种人都很正常。先让页面记住一点东西轮数调整完以后我开始处理成绩记录。现在重新打开页面还能看到最近的测试结果、最快成绩和平均成绩。记录只保存在当前浏览器里不需要注册也不会要求用户填写邮箱。我没有做账号系统。对现在的 PickTests 来说那样太重了。用户只是打开一个测试点几下屏幕看看结果没有必要先注册、验证再记住一个密码。本地记录当然也有问题。它不能跨设备同步清除浏览器数据以后也会消失。严格来说它甚至算不上一个完整的用户系统。但对目前这个阶段来说我觉得先这样就够了。至少用户第二次打开页面时不用再凭印象猜上一次测了多少。首页上那句“和自己比较”也不再完全依赖用户自己的记忆。评论区还有人建议增加复制成绩的功能方便把结果发到 X 或 Discord。这个想法我记下来了但没有马上做。测试结束以后结果页到底应该放多少东西我到现在也没有完全想清楚。只放一个数字多少有些单薄。把历史曲线、排名、分析和分享按钮都堆上去又会让一个本来很轻的测试变得像一份报告。现在的结果页只是我暂时找到的一个位置不一定就是最后的样子。这些记录会不会真的让用户回来我也不知道。我目前没有足够的数据证明增加一个历史最好成绩就能解决回访问题。只是从产品本身看如果网站说的是“和自己比较”它就不应该每次打开都像第一次见到用户。第 7 个测试还没开始做到 6 个测试以后我原本已经在考虑下一个页面了。打字速度、点击速度还有其他记忆和注意力测试都可以继续往下做。增加一个新测试的变化很直观。首页会多一张卡片网站看起来更丰富也会多一个可能被搜索到的页面。发布时也很容易整理成一次看得见的更新。回头修改已经上线的页面没有这种爽感。调整轮数、整理结果页、处理手机上的点击区域这些事情很难写成一条显眼的更新日志。用户用得顺利时可能根本不会注意到背后改过什么。但我把现有的 6 个页面重新点了一遍还是发现了不少差别。有的测试结束后立即显示结果有的会多停留一会儿有的结果页解释得比较完整有的主要留下一个数字部分页面在手机上已经比较自然部分页面还带着桌面端的操作习惯。单独打开一个测试时这些问题都不算严重。连续使用几个页面后就会感觉它们更像六个分别完成的小项目还没有完全连成一个整体。所以第 7 个测试暂时还没有开工。接下来先继续整理已有的页面。哪些成绩值得留下手机上还有哪些地方不顺手不同测试的结果页能不能尽量保持一致。什么时候开始做第 7 个我现在还没定。至少这次重新打开反应测试时页面不会再完全忘记上一次发生过什么。目前上线的测试都可以在 反应测试 直接体验。